Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Работа с загруженным файлом
 
 автор: Василий   (04.01.2012 в 17:31)   письмо автору
 
 

Занесли логотип на сервер.
<td width="200" valign="top"><b>Logotip:</b></td>
    <td><input type="file" name="userfile"> загрузить</td>


Теперь в обработчике имя загруженного файла нужно записать в БД в поле logo.
Как это сделать?

  Ответить  
 
 автор: Slo_Nik   (04.01.2012 в 17:34)   письмо автору
 
   для: Василий   (04.01.2012 в 17:31)
 


<?php
// чуть не забыл
error_reporting(E_ALL);
$logo // присвойте нужное значение
$query "INSERT INTO `table` (`logo`) VALUES('".$logo."') ";
if(
mysql_query($query)){
 echo 
"Данные записаны";
}
else{
 echo 
"Ошибка записи данных<br />".mysql_error();
}

и надо привязать к id пользователя или имени предприятия или к чему у Вас логотип ?

  Ответить  
 
 автор: cheops   (04.01.2012 в 17:37)   письмо автору
 
   для: Василий   (04.01.2012 в 17:31)
 

Это новый файл или мы меняем уже существующий? Будем считать, что вы используете функцию из предыдущей темы.

1) Новый файл нужно вставить в базу данных при помощи оператора INSERT.
2) Если это замена уже существующего файла, то следует обновить поле записи при помощи UPDATE-запроса
<?php
  $logo 
mysql_escape_string($_FILES['userfile']['name']);
  
$query "UPDATE `table`
  SET logo = '
$logo'
  WHERE id = 
$id";

Здесь $id - значение первичного ключа таблицы table, который соответствует изменяемой записи.

  Ответить  
 
 автор: Slo_Nik   (04.01.2012 в 17:38)   письмо автору
 
   для: cheops   (04.01.2012 в 17:37)
 

по моему Вы что-то с кавычками напутали....

  Ответить  
 
 автор: cheops   (04.01.2012 в 17:41)   письмо автору
 
   для: Slo_Nik   (04.01.2012 в 17:38)
 

Ага, есть такое дело, успел поправить.

  Ответить  
 
 автор: cheops   (04.01.2012 в 17:41)   письмо автору
 
   для: cheops   (04.01.2012 в 17:37)
 

Так как у вас в форме уже есть скрытое значение id_pu - можно воспользоваться им
<?php 
  $logo 
mysql_escape_string($_FILES['userfile']['name']); 
  
$id intval($_POST['id_pu']);
  
$query "UPDATE `table` 
  SET logo = '
$logo
  WHERE id_pu = 
$id";
?>

  Ответить  
 
 автор: Василий   (04.01.2012 в 17:53)   письмо автору
 
   для: cheops   (04.01.2012 в 17:41)
 

Два дня мучений не прошли зря )))
Все идет путем. Файл "падает" в нужную папку.
Только вывод нужно подредактировать.
if (!empty($myrow3 ['logo'])) {
printf ("<tr>
    <td><img src='%s' align='middle'></td>
    <td width='400px'>", $myrow3["logo"]);}


Если в поле logo следующая запись: img/logo_pu/152.jpg - то файл выводится.
Но сейчас в папке logo только название файла 152.jpg. Поэтому картинка не выводится.
Правильно ли будет если переписать:
    <td><img src='%s' align='middle'></td>
    <td width='400px'>", $myrow3["logo"]);}
[/code]
на
    <td><img img/logo_pu/src='%s' align='middle'></td>
    <td width='400px'>", $myrow3["logo"]);}


Или как к

$logo = mysql_escape_string($_FILES['userfile']['name']);
приписать путь img/logo?
Чтобы в папке logo файл имел значение img/logo/название.jpg

  Ответить  
 
 автор: Slo_Nik   (04.01.2012 в 18:16)   письмо автору
 
   для: Василий   (04.01.2012 в 17:53)
 

пишите в базу только имя файла, а путь к файлу формируйте при выводе в браузер пользователю
если файл выводится при условии как Вы прописали, то значит правильно прописали путь к файлу)))
в папке пусть файл имеет имя без пути к нему, file.jpg, и не более

  Ответить  
 
 автор: Василий   (04.01.2012 в 18:29)   письмо автору
 
   для: Slo_Nik   (04.01.2012 в 18:16)
 

а путь к файлу формируйте при выводе в браузер пользователю

Как нужно в данном случае? Надо добавить путь img/logo

if (!empty($myrow3 ['logo'])) {
printf ("<tr>
    <td><img src='%s' align='middle'></td>
    <td width='400px'>", $myrow3["logo"]);}

  Ответить  
 
 автор: Slo_Nik   (04.01.2012 в 18:36)   письмо автору
 
   для: Василий   (04.01.2012 в 18:29)
 

я бы не только проверил на пустоту $myrow3['logo'], но и проверил, существует ли файл или нет

<?php
$path 
"img/logo/";
$image $myrow3['logo'];
if(!empty(
$myrow3['logo']) && file_exists($path.$image)){
 echo 
"<img src='".$path.$image."' alt='' />";
}
else{
 
// тут бы вывел изображение-заглушку, если у пользователя нет загруженного логотипа,
// что то типа "no logotype"
}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования