|
|
|
|
|
для: kapitalist
(24.10.2011 в 12:04)
| | если Вы хотите оригинальное имя, то зачем Вам путь к файлу, потом "original" и ещё имя загружаемого файла?
получите расширение файла, а имя можно сформировать так
<?php
$ext_img = strtolower(strrchr($_FILES['userfile']['name'],"."));// расширение отдельного изображения
$name_new = date("YmdHis", time()).$ext_img;// новое имя изображения
?>
|
если загружаете несколько изображений, то используйте цикл for.
в запросе у вас только одно поле `file`, так как Вы хотите записать в Базу несколько имён? | |
|
|
|
|
|
|
|
для: kapitalist
(21.10.2011 в 19:41)
| | а мой вариант разве не рабочий?
а как вы узнаете к какой записи board соотвествует файл?
что вы в цикле foreach делаете?
тип файла для надежности наверное лучше определять функцией GetImageSize() | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.10.2011 в 12:10)
| | Я просто хочу чтобы имя файла было уникальным...
Я конечно попробую написать как вы сказали, но как-то запись в БД мне так и не удалось сделать! | |
|
|
|
|
|
|
|
для: kapitalist
(21.10.2011 в 19:41)
| | а зачем Вы имя файла берёте из массива $_POST ($name) ?
Ввам надо брать имя файла из массива $_FILES ($_FILES['userfile']['name']).
Или не так....
У Вас есть переменная $name получаемая из $_POST и потом Вы в цикле foreach создаёте ещё $name
сделайте в цикле foreach($good_name as $key => $value) и далее замените $name на $value
Да и получением имени файла Вы что то намудрили.... Я так понял, что Вы не собираетесь менять имя файла, а только что то добавить, так зачем выдирать откуда то имя файла и расширение? не проще ли использовать $_FILES['userfile']['name'] ? | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 14:25)
| | Вот получается такой код:
<?php
include '../blocks/bd.php';
if (!empty($_POST['city'])) $city = $_POST['city'];
if (!empty($_POST['pets'])) $pets = $_POST['pets'];
if (!empty($_POST['animals'])) $animals = $_POST['animals'];
if (!empty($_POST['aniyID'])) $anyID = $_POST['anyID'];
if (!empty($_POST['price'])) $price = $_POST['price'];
if (!empty($_POST['torg'])) $torg = $_POST['torg'];
if (!empty($_POST['tualet'])) $tualet = $_POST['tualet'];
if (!empty($_POST['pitanie'])) $pitanie = $_POST['pitanie'];
if (!empty($_POST['mesto'])) $mesto = $_POST['mesto'];
if (!empty($_POST['phone'])) $phone = $_POST['phone'];
if (!empty($_POST['email'])) $email = $_POST['email'];
if (!empty($_POST['name'])) $name = $_POST['name'];
if (!empty($_POST['login'])) $login = $_POST['login'];
if (!empty($_POST['title'])) $title = $_POST['title'];
if (!empty($_POST['description'])) $description = $_POST['description'];
$result = mysql_query("SELECT id FROM animals WHERE animals='$animals'",$db);
$myrow = mysql_fetch_assoc($result);
if (empty($myrow['id'])) {
$result1 = mysql_query ("INSERT INTO animals (pets,animals) VALUES ('$pets','$animals')");
}
$path_to_files = 'photo/'; // путь для сохранения файлов
// если у нас несколько полей userfile[],
// отметаем те, в которые ничего не было выбрано
$good_name = array_filter($_FILES['userfile']['name']);
if (sizeof($good_name) != 0) { // если массив файлов не пустой
foreach ($good_name as $key => $name) {
$type = $_FILES['userfile']['type'][$key];
$tmp_name = $_FILES['userfile']['tmp_name'][$key];
$size = $_FILES['userfile']['size'][$key];
// эта функция проверяет был ли загружен файл во временную директорию php
if (!is_uploaded_file($tmp_name)) {
echo "An error happened while loading. Failed.";
continue;
}
// выковыриваем имя и расширение файла -
$file_ext = substr($name, 1 + strrpos($name, "."));
// - это может понадобиться, например, для сохранения в базу данных
$file_name = substr($name, 0, strrpos($name, "."));
// делаем реальный путь в файловой системе
$real_path = realpath($path_to_files);
// создаем в нашей директории временный файл с уникальным именем,
$temp_file_name = tempnam($real_path, "UPLF");
// делаем новое, более привлекательное, имя файла для хранения на сервере
$file_name = $temp_file_name."original.".strtolower($file_ext);
// переносим загруженный временный файл в файл со сделанным нами уникальным именем
if (move_uploaded_file($tmp_name, $file_name)) {
echo "Saved!";
unlink($temp_file_name); // удаляем временный файл
}else {
echo "Failed!";
continue;
}
}
}else {
echo "No files were loaded.";
}
if (isset($pets, $title))
{
$result2 = mysql_query ("INSERT INTO board (`title`, `city`, `pets`, `animals`, `anyID`, `price`, `torg`, `tualet`, `pitanie`, `mesto`, `email`, `name`, `login`, `file`, `description`)
VALUES
('". mysql_real_escape_string($title) ."',
'". mysql_real_escape_string($city) ."',
'". mysql_real_escape_string($pets) ."',
'". mysql_real_escape_string($animals) ."',
'". mysql_real_escape_string($anyID) ."',
'". mysql_real_escape_string($price) ."',
'". mysql_real_escape_string($torg) ."',
'". mysql_real_escape_string($tualet) ."',
'". mysql_real_escape_string($pitanie) ."',
'". mysql_real_escape_string($mesto) ."',
'". mysql_real_escape_string($email) ."',
'". mysql_real_escape_string($name) ."',
'". mysql_real_escape_string($login) ."',
'". mysql_real_escape_string($file) ."',
'". mysql_real_escape_string($description) ."'
)"
);
// Добавляем фото в БД
$result3 = mysql_query ("INSERT INTO board_img (file) VALUES ('$file_name')");
if ($result2 == 'true') {echo "<html><head><link href='blocks/style/style.css' rel='stylesheet' type='text/css' /><meta http-equiv=\"refresh\" content=\"2;url=" . $_SERVER['HTTP_REFERER'] . "\"></head<body><div id='obrabotchic'>Ваше объявление опубликовано!</div></body></html>";}
else {echo "<html><head><link href='blocks/style/style.css' rel='stylesheet' type='text/css' /><meta http-equiv=\"refresh\" content=\"2;url=" . $_SERVER['HTTP_REFERER'] . "\"></head<body><div id='obrabotchic'>Ваше объявление не создано!</div></body></html>";}
}
else
{
echo "<html><head><link href='blocks/style/style.css' rel='stylesheet' type='text/css' /><meta http-equiv=\"refresh\" content=\"2;url=" . $_SERVER['HTTP_REFERER'] . "\"></head<body><div id='obrabotchic'>Вы ввели не все данные!</div></body></html>";
}
?>
|
Но имя файла в БД заносится такого вида: Z:home est1.ruwwwoardphotoUPL72D6.tmporiginal.jpg
И только одно, а не несколько строк | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 18:45)
| | проверку типа файла, а заодно и его размера можно сделать функцией filesize() | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 17:57)
| | Теперь понял. Спасибо! Буду пробовать. | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 17:34)
| | идет переименование файла на image_board.jpg в данном случае, т.е. 1.jpg, 2.jpg и т.д. для других типов файлов нужно еще доделать скрипт - я же ранее уже писал об этом.
в переменной $dir_images указываете директорию где будут храниться изображения
все поля загрузки изображений называете file_name[] .
вот именно запрос заносяший имя изображения в БД
mysql_query("update image_board set image='".$num_image.".jpg' where image_doard=$num_image;");
|
в поле image и будут храниться имена файлов, а в поле id_board привязка к таблице board | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 16:53)
| | Тогда я не могу понять как имя файла должно попадать в бд | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 16:29)
| | >Спасибо! Но таким образом мне выдается ошибка на 60 строке.
точку с запятой в конце строки не поставил - поставьте.
>А вот так и нужно в колонку image_board заносить значение NULL
>Я как-то этот момент не понял!
image_board - автоинкримент будет записываться очередной уникальный порядковой номер, можно просто 0 ставить. | |
|
|
|
|