|
|
|
| Прошу Вашей помощи решить следующую проблему. На web - странице, основной функцией которой является добавление фотографий на сайт, имеются форма для добавления фото, форма для названия фото, кнопка добавить и скрытые формы содержащие информацию о фотографии для базы данных. PHP код добавляющий фото на сайт следующего содержания:
if (isset($_POST["MAX_FILE_SIZE"])) {
$tmp_file_name = $_FILES["file_upload"]["tmp_name"];
$dest_file_name = $_SERVER['DOCUMENT_ROOT'] . "/images/painting/" $_FILES["file_upload"]["name"];
$full_name = "images/painting/" .$_FILES["file_upload"]["name"];
move_uploaded_file($tmp_file_name,$dest_file_name);
}
?>
На этой же веб – странице есть модель серверного поведения Insert, которая добавляет в таблицу базы данных новую строку, содержащую такие сведения как id, title (название фото), fullname (имя файла, берущее свое значение из скрытой формы, содержащей переменную $full_name).
При нажатии на кнопку «добавить» фото копируется на web –сайт, в базу данных добавляется новая строка, но значение fullname (тип данных blob) в новой строке равно нулю. Подскажите что я мог сделал неправильно? | |
|
|
|
|
|
|
|
для: Степан
(15.06.2009 в 12:01)
| | Добрый день. В отличие от всех других полей, данные BLOB поля не хранятся непосредственно в записи таблицы. В записи таблицы хранится лишь идентификатор BLOB (BLOB_ID), а само тело BLOB хранится на отдельных страницах базы данных и доступ к ним осуществляется специальными функциями IB API.
Попробуйте изменить тип данных blob на text. | |
|
|
|
|
|
|
|
для: Rolex
(15.06.2009 в 15:24)
| | >Добрый день. В отличие от всех других полей, данные BLOB поля не хранятся непосредственно в записи таблицы. В записи таблицы хранится лишь идентификатор BLOB (BLOB_ID), а само тело BLOB хранится на отдельных страницах базы данных и доступ к ним осуществляется специальными функциями IB API.
>
>Попробуйте изменить тип данных blob на text.
Попробовал, но результат остался прежним. | |
|
|
|
|
|
|
|
для: Степан
(15.06.2009 в 12:01)
| | приведи, пожалуйста, код формы и как ты делаешь запрос к базе данных | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.06.2009 в 16:50)
| | >приведи, пожалуйста, код формы и как ты делаешь запрос к базе данных
код формы:
<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="file_upload" id="file_upload">
<p>
<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="655360" />
</p>
<p align="left">Файл: </p>
<p align="left">
<label>
<input name="file_upload" type="file" id="file_upload" />
<br />
<br />
Название:<br />
<br />
</label>
<input name="title2" type="text" id="title2" />
</p>
<p align="left">
<label>
<input type="submit" name="Submit" value="Отправить файл на сервер" />
</label>
<input name="id2" type="hidden" id="id2" value="<?php echo $row_pictures['id']; ?>" />
<input name="fullname2" type="hidden" id="fullname2" value="<?php echo $full_name; ?>" />
<input name="nameid2" type="hidden" id="nameid2" value="<?php echo $row_name['id']; ?>" />
</p>
<input type="hidden" name="MM_insert" value="file_upload">
</form>
Insert Record:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "file_upload")) {
$insertSQL = sprintf("INSERT INTO painting (id, title, fullname, nameid) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['id2'], "int"),
GetSQLValueString($_POST['title2'], "text"),
GetSQLValueString($_POST['fullname2'], "text"),
GetSQLValueString($_POST['nameid2'], "int"));
mysql_select_db($database_Guest, $Guest);
$Result1 = mysql_query($insertSQL, $Guest) or die(mysql_error());
} | |
|
|
|
|
|
|
|
для: Степан
(16.06.2009 в 09:07)
| | очевидно скрытое поле формы fullname2 является пустым в момент отправки формы.
PS. фрагменты html и php-кода принято брать в теги [code] затем, чтоб текст было легче читать.
Ы? | |
|
|
|
|
|
|
|
для: Trianon
(16.06.2009 в 11:48)
| | >очевидно скрытое поле формы fullname2 является пустым в момент отправки формы.
>
>PS. фрагменты html и php-кода принято брать в теги [code] затем, чтоб текст было легче читать.
>Ы?
Очевидно, но почему оно пустое? | |
|
|
|
|
|
|
|
для: Степан
(16.06.2009 в 12:18)
| | Очевидно потому что соответствующей переменной никто не присвоил значения.
Включите вывод нотайсов - убедитесь сами.
error_reporting(E_ALL|E_NOTICE); | |
|
|
|
|
|
|
|
для: Trianon
(16.06.2009 в 12:42)
| | Извините, но разве строка
$full_name = "images/painting/" .$_FILES["file_upload"]["name"];
не присваивает значение переменной? | |
|
|
|
|
|
|
|
для: Степан
(16.06.2009 в 12:57)
| | возможно и присваивает. Но из уже принятых данных формы ($_FILES - массив принятых через форму файлов)
А у Вас эта переменная используется при создании формы - то есть всяко до момента отправки данных этой формой. | |
|
|
|
|
|
|
|
для: Trianon
(16.06.2009 в 13:12)
| | Я понял Вашу мысль. Но подскажите, пожалуйста, каким образом можно получить данные об имени файла для внесения в базу данных при отправке его на сервер? | |
|
|
|
|
|
|
|
для: Степан
(17.06.2009 в 10:19)
| | Получить можно из массива $_FILES[]
Правда несовсем понятно, зачем они на сервере (в БД или нет - неважно) нужны...
Но тем не менее клиентское имя файла можно получить из этого массива всяко. | |
|
|
|
|
|
|
|
для: Степан
(17.06.2009 в 10:19)
| |
Оригинальное имя файла на компьютере клиента
$_FILES['userfile']['name']
Mime-тип файла, в случае, если браузер предоставил такую информацию
$_FILES['userfile']['type']
Размер в байтах принятого файла
$_FILES['userfile']['size']
Временное имя, с которым принятый файл был сохранен на сервере
$_FILES['userfile']['tmp_name']
Код ошибки, которая может возникнуть при загрузке файла
$_FILES['userfile']['error']
|
Отправляем файл на сервер, формируем для него имя (например UNIX-метка времени - количество пройденых секунд с 01.01.1970), записываем информацию о нем в БД. Если планируется добавлять много файлов одновременно или предусмотрена загрузка разными пользователями, то к метке времени прибавить номер.
Другой способ:
Сначала загружаем файл, записываем информацию о файле в БД, потом определяем ID последней записи, а затем уже перемещаем файл из временной директории в нужную (под нужными именем ID) | |
|
|
|
|
|
|
|
для: Петр
(17.06.2009 в 12:24)
| | Спасибо всем за помощь! Вроде бы разобрался. | |
|
|
|