|
|
|
| Всем привет! Кто-нибудь может подсказать скрипт или объяснить как загрузить несколько файлов на сервер, а их имена в БД.
Я по интернету, сколько не искал, так и не нашел... | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 11:03)
| | Для того что бы загрузить несколько файлов на сервер, нужно в форме, сделать что вроде этого:
<input type="file" name="file_name[]" id="photo1" />
<input type="file" name="file_name[]" id="photo2" />
|
на стороне сервера я делаю так:
<?
for ($i = 0; $i < count($file_name); $i++)
{
if ($_FILES["file_name"]["type"][$i] == "image/pjpeg" || $_FILES["file_name"]["type"][$i] == "image/jpeg")
copy($_FILES["file_name"]["tmp_name"][$i], "temp/".$_FILES["file_name"]["name"][$i]);
}
?>
|
Может есть более эффективный способ, но я пользуюсь таким
имя файла $_FILES["file_name"]["name"][$i], его записывайте в базу, но лучше всего переименовывать эти файлы, что бы имя файла было из английских букв и цифр | |
|
|
|
|
|
|
|
для: Den*s
(20.10.2011 в 11:34)
| | так а как будет выглядеть загрузка файлов в БД?
Загрузку на сервер, я делаю, а вот в бд, записать не могу... | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 12:19)
| | переименовываете файл при загрузке в нужный вам(часто новое имя файла привязывают либо ко времени загрузки либо к ИД записи в БД) и записываете его имя в БД | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 12:46)
| | Вы можете это наглядно показать? Просто я не понимаю, как эти имена в бд за один раз занести... | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 12:53)
| | а в какую таблицу вам нужно занести имена файлов? | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 13:14)
| | Вообще у меня идет такой скрипт
<?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')");
}
if (isset($pets, $title))
{
$result = 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) ."'
)"
);
if ($result == '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>";
}
?>
|
Я хотел здесь вставить обработчик фотографий, и записывать их в эту же базу "board" | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 13:50)
| | т.е. вы хотите для одной записи в таблице board прикрепить несколько изображений? тогда нужно создавать отдельную таблицу состоящую примерно такую:
CREATE TABLE `image_board` (
`image_board` int(11) NOT NULL auto_increment,
`id_board` int(11) default '0',
`image` varchar(150) default '',
`show` int(1) default '0',
PRIMARY KEY (`image_board`)
) TYPE=MyISAM;
ну и скрипт тогда получится примерно таким:
<?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')");
}
if (isset($pets, $title))
{
$result = 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) ."'
)"
);
$id_board = mysql_insert_id();
$dir_images = "./images";
if (sizeof($_POST['file_name'])) {
foreach ($_POST['file_name'] as $key=>$value) {
$sql = "insert into image_board (image_board, id_board) values (NULL, $id_board,)";
$result = mysql_query($sql);
$num_image = mysql_insert_id();
copy($value,$dir_images."/".$num_images.".jpg");
mysql_query("update image_board set image='".$num_image.".jpg' where image_doard=$num_image;")
}
}
if ($result == '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>";
}
?>
|
примерно так, здесь только для файлов JPG - нужно еще добавить проверку файлов и их расширений и если все ОК, то копировать соотвественно | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 15:07)
| | Спасибо! Но таким образом мне выдается ошибка на 60 строке.
$sql = "insert into image_board (image_board, id_board) values (NULL, $id_board,)";
А вот так и нужно в колонку image_board заносить значение NULL
Я как-то этот момент не понял! | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 16:29)
| | >Спасибо! Но таким образом мне выдается ошибка на 60 строке.
точку с запятой в конце строки не поставил - поставьте.
>А вот так и нужно в колонку image_board заносить значение NULL
>Я как-то этот момент не понял!
image_board - автоинкримент будет записываться очередной уникальный порядковой номер, можно просто 0 ставить. | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 16:53)
| | Тогда я не могу понять как имя файла должно попадать в бд | |
|
|
|
|
|
|
|
для: 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 в 17:57)
| | Теперь понял. Спасибо! Буду пробовать. | |
|
|
|
|
|
|
|
для: kapitalist
(20.10.2011 в 18:45)
| | проверку типа файла, а заодно и его размера можно сделать функцией filesize() | |
|
|
|
|
|
|
|
для: Lotanaen
(20.10.2011 в 13:14)
| | Хотя можно и в другую базу, например выделенную специально для фотографий! | |
|
|
|
|
|
|
|
для: 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
(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'] ? | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.10.2011 в 12:10)
| | Я просто хочу чтобы имя файла было уникальным...
Я конечно попробую написать как вы сказали, но как-то запись в БД мне так и не удалось сделать! | |
|
|
|
|
|
|
|
для: 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() | |
|
|
|
|