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

Форум MySQL

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

 

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

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

тема: запись логотипа в базу данных
 
 автор: Василий   (31.12.2011 в 02:17)   письмо автору
 
 

Потребителю выводится его информация для изменения.
Рассмторим вывод логотипа и предложение поменять логотип на новый. Возникают трудности с записью нового логотипа в БД в переменную myrow["logo"]

<td>
<input value= "<? printf ("<img src='%s'>"$myrow["logo"]); ?>" type="text" name="logo"'>
 // выводим старый логотип
</td>

  <td> // позволяем загрузить новый логотип
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
  </td>

  Ответить  
 
 автор: cheops   (31.12.2011 в 13:04)   письмо автору
 
   для: Василий   (31.12.2011 в 02:17)
 

Имеется в виду редактирование, т.е. происходит замена старого логотипа новым? Тут нужно выполнить две задачи:
1. Удалить старый логотип с жесткого диска
2. Обновить запись logo таблицы при помощи оператора UPDATE. Для составления оператора вам также потребуется первичный ключ таблицы, чтобы его можно было задействовать в WHERE-условии. Какова структура вашей таблицы (SHOW CREATE TABLE tbl)?

  Ответить  
 
 автор: Василий   (31.12.2011 в 19:56)   письмо автору
 
   для: cheops   (31.12.2011 в 13:04)
 

структуру хотел увидеть
Запрос
<?php show create table 'pu'?>
ошибочный
Parse error: syntax error, unexpected T_STRING in

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:04)   письмо автору
 
   для: Василий   (31.12.2011 в 19:56)
 

Это SQL-запрос, его нужно выполнять в MySQL-клиенте (phpMyAdmin, mysql.exe).

  Ответить  
 
 автор: Василий   (31.12.2011 в 20:12)   письмо автору
 
   для: cheops   (31.12.2011 в 20:04)
 

Почему ошибка?
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''pu'' at line 1
SHOW CREATE TABLE 'pu'

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:15)   письмо автору
 
   для: Василий   (31.12.2011 в 20:12)
 

Уберите кавычки в имени таблицы
SHOW CREATE TABLE pu

PS Если выполняете запрос в phpMyAdmin, чтобы получить полный результат нажмите "Параметры" -> Развернутое отображение данных -> ОК

  Ответить  
 
 автор: Василий   (31.12.2011 в 20:19)   письмо автору
 
   для: cheops   (31.12.2011 в 20:15)
 

CREATE TABLE `pu` (
`id_pu` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`full_name` text NOT NULL,
`short_name` text NOT NULL,
`welcome_name` text NOT NULL,
`id_town` int(11) NOT NULL,
`id_region` int(11) NOT NULL,
`id_state` int(11) NOT NULL,
`address` varchar(255) NOT NULL,
`tel` varchar(255) NOT NULL,
`fax` varchar(255) NOT NULL,
`accreditation` varchar(255) NOT NULL,
`licence` varchar(255) NOT NULL,
`organ` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`site` varchar(255) NOT NULL,
`text` text NOT NULL,
`ling` text NOT NULL,
`logo` varchar(255) NOT NULL,
`advertisment` int(1) NOT NULL DEFAULT '0',
`approved` tinyint(4) NOT NULL DEFAULT '0',
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `id_town` (`id_town`),
KEY `id_region` (`id_region`),
KEY `id_state` (`id_state`),
KEY `id_pu` (`id_pu`)
) ENGINE=MyISAM AUTO_INCREMENT=155 DEFAULT CHARSET=cp1251

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:27)   письмо автору
 
   для: Василий   (31.12.2011 в 20:19)
 

Фактически вам нужно выполнить вот такой запрос
UPDATE pu
SET logo='новое_имя_файла.jpg'
WHERE id_pu = 12
где 12 - первичный ключ изменяемой записи (его удобно передавать через скрытое поле HTML-формы).

  Ответить  
 
 автор: Василий   (31.12.2011 в 23:14)   письмо автору
 
   для: cheops   (31.12.2011 в 20:27)
 

А как можно связать вот эти два файла?
<td>
<input value= "<? printf ("<img src='%s'>"$myrow["logo"]); ?>" type="text" name="logo"'>
 // выводим старый логотип
</td>

  <td> // позволяем загрузить новый логотип
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
  </td>


UPDATE pu
SET logo='новое_имя_файла.jpg'
WHERE id_pu = 12

  Ответить  
 
 автор: cheops   (31.12.2011 в 23:32)   письмо автору
 
   для: Василий   (31.12.2011 в 23:14)
 

1. Новый файл загружается в обход этой формы и пользователь знает его имя?
2. Не понятно также, почему в текстовое поле вставляется тэг <img> причем без экранирования при помощи htmlspecialchars()?

Давайте сначала с HTML-формой разберемся, какая у неё задача и что она должна позволять делать?

  Ответить  
 
 автор: Василий   (31.12.2011 в 23:37)   письмо автору
 
   для: cheops   (31.12.2011 в 23:32)
 

на странице предприятия пользователь может изменить свои данные. Это работает. Сейчас хочу добавить возможность добавления логотипа.
Напишу в личку сайт

  Ответить  
 
 автор: cheops   (31.12.2011 в 23:39)   письмо автору
 
   для: Василий   (31.12.2011 в 23:37)
 

Т.е. речь идет о том, что он может загрузить другой логотип? Или он может выбирать из фотогалереи? Каков механизм изменения логотипа?

  Ответить  
 
 автор: Василий   (31.12.2011 в 23:42)   письмо автору
 
   для: cheops   (31.12.2011 в 23:39)
 

он загружает свой логотип.

  Ответить  
 
 автор: cheops   (31.12.2011 в 23:45)   письмо автору
 
   для: Василий   (31.12.2011 в 23:42)
 

Тогда ему нужно дать возможность загрузить новый логотип? Т.е. речь идет не о текстовом поле type='text', а о поле для загрузки файла type='file'? Если оно пустое, оставляем поле в базе данных без изменений, если заполнено новым файлом - удаляем старый, загружаем новый, и обновляем таблицу в базе данных?

  Ответить  
 
 автор: Василий   (31.12.2011 в 23:47)   письмо автору
 
   для: cheops   (31.12.2011 в 23:45)
 

совершенно верно.

  Ответить  
 
 автор: cheops   (31.12.2011 в 23:53)   письмо автору
 
   для: Василий   (31.12.2011 в 23:47)
 

Помимо этого, нам надо зать какое поле править? У вас есть где-то значение первичного ключа записи таблицы, которую мы правим (нам это нужно, чтобы править только одну запись, а не все записи таблицы)?
  <td> // позволяем загрузить новый логотип 
      <form action="upload.php" method="post" enctype="multipart/form-data"> 
      <input type="file" name="filename"><br>  
      <input type="hidden" name="id_pu" value='????'><br>  
      <input type="submit" value="Загрузить"><br> 
      </form> 
  </td>
Поле типа hidden как раз для этого заведено.

  Ответить  
 
 автор: Василий   (01.01.2012 в 00:13)   письмо автору
 
   для: cheops   (31.12.2011 в 23:53)
 

'id_pu - у каждого предприятия уникальное. оно может служить "ключом"
<center><form action="pu_action.php" method="get" name="f2">
<p>Заметили неточность – сообщите об ошибке!
<input type='hidden' name='id_pu' value='<?php echo $myrow3['id_pu']; ?>'>

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

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