Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Добавление данных в БД с помощью формы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
wester
Отправлено: 17 Февраля, 2012 - 16:43:49
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Люди помогите решить проблему. Нужно с помощью формы добавить данные в БД
создал форму
CODE (html):
скопировать код в буфер обмена
  1. <form name="car" id="car" method="POST" action="save.php">
  2. Марка: <input id="add_car" type="text" name="mark"><p>
  3. Модель: <input id="add_car" type="text" name="model"><p>
  4. Кузов: <input id="add_car" type="text" name="body"><p>
  5. Мотор: <input id="add_car" type="text" name="engine"><p>
  6. Год: <input id="add_car" type="text" name="year"><p>
  7. Дата подачи: <input id="add_car" type="date" name="date"><p>
  8. <input type="submit" name="send">
  9.  
  10. </form>

и обработчик
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $mark=$_POST['mark'];
  3. $model=$_POST['model'];
  4. $body=$_POST['body'];
  5. $engine=$_POST['engine'];
  6. $year=$_POST['year'];
  7. $result=mysql_query("insert into auto (id_model,mark_id,model,body,engine,drive,transmission,year,info,date-auto,img_auto1,img_auto2,img_auto3,img_auto4) values ('$mark','$model','$body','$engine','','','','$year','','','')");
  8. if($result=='true')
  9. {echo "Успешно";}
  10. else{echo "Не успешно";}
  11. ?>

выскакивает не успешно. в чем проблема?
В БД:
id_model имеет формат int (auto_increment)
mark_id имеет формат int
date_auto имеет формат date
year имеет формат int
остальные varchar
и не обязательно нужно что бы были заполнены все поля.
Заранее спасибо=)
 
 Top
Okula
Отправлено: 17 Февраля, 2012 - 16:54:33
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Почитай о фильтраци переменных и о SQL-инъекциях, у тебя тут одна сплошная дырень.
И ещё - помести в обраные ковычи все ячейки и имя таблицы в SQL запросе.
Поля которые заполняются автоматически, средствами SQL (такие как auto_increment, поля с типами date и т.д.) не пишётся в SQL запросе, пишутся только те, в которые будут заносится данные.
 
 Top
Plusminuz
Отправлено: 17 Февраля, 2012 - 17:10:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Апр. 2011  
Откуда: Россия


Помог: 2 раз(а)




по-моему лучше будет так:

в любом случае кавычки вокруг true у вас лишние


-----
учусь... Улыбка
 
 Top
wester
Отправлено: 17 Февраля, 2012 - 17:24:29
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




допустим вот такой несложный вариант где в таблице есть 3 поля, это id (автощаполнение), mark,img(путь к изображению).
форма выглядит так
CODE (html):
скопировать код в буфер обмена
  1. <form name="car" id="car" method="POST" action="save.php">
  2. Марка: <input id="add_car" type="text" name="mark"><p>
  3. <input type="submit" name="send">
  4. </form>

обработчик
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $mark=$_POST['mark'];
  3. $result=mysql_query("insert into marks (mark,img) values ('$mark','')");
  4. if($result=='true')
  5. {echo "Успешно";}
  6. else{echo "Не успешно";}
  7. ?>

в результате выходит сообщение "успешно"
и в БД заносится в поле id автоматически цифра, в поле mark название марка, а в поле img не заносится ничего.
Делаю по такому же принципу в примере приведенном в 1ом сообщении, но не получается.
 
 Top
DelphinPRO
Отправлено: 17 Февраля, 2012 - 18:19:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




сразу после mysql_query напиши

посмотри какая ошибка

ps у тебя запрос неправильный. ты передаешь 14 полей и всего 11 значений

(Отредактировано автором: 17 Февраля, 2012 - 18:21:00)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
wester
Отправлено: 17 Февраля, 2012 - 18:46:05
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




спасибо тебе DelphinPRO, команда mysql_error() помогла разобраться в чем проблема.
(Добавление)
А теперь еще такой вопрос. Допустим у меня на сайте есть какая то информация, есть ссылка редактировать которая перенаправляет на страницу редактирования данных.
есть форма с полями в каждом поле отображается информация правильно. Объясните каким образом отредактировав поля я могу отправить в БД эти данные, заменив старые.

(Отредактировано автором: 17 Февраля, 2012 - 18:46:55)

 
 Top
Plusminuz
Отправлено: 17 Февраля, 2012 - 20:41:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Апр. 2011  
Откуда: Россия


Помог: 2 раз(а)




wester пишет:
отправить в БД эти данные, заменив старые


UPDATE


-----
учусь... Улыбка
 
 Top
DelphinPRO
Отправлено: 17 Февраля, 2012 - 20:57:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $query = "
  2. UPDATE `auto`
  3. SET
  4.    `model` = '".mysql_real_escape_string($model)."'
  5.    ,`body` = '".mysql_real_escape_string($body)."'
  6.    ,`engine` = '".mysql_real_escape_string($engine)."'
  7. WHERE
  8.    `id_model` = ".(int)$id_model."
  9. ";
  10. mysql_query($query);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
wester
Отправлено: 18 Февраля, 2012 - 20:56:52
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. $query = "
  2. UPDATE `auto`
  3. SET
  4.    `model` = '".mysql_real_escape_string($model)."'
  5.    ,`body` = '".mysql_real_escape_string($body)."'
  6.    ,`engine` = '".mysql_real_escape_string($engine)."'
  7. WHERE
  8.    `id_model` = ".(int)$id_model."
  9. ";
  10. mysql_query($query);

Написал я по твоему примеру и получил очень плохой результат. когда я нажал обновить у меня все поля которые я задавал обновлять во всех записях просто стерлись и стали пустыми.
вот форма в которую при нажатии изменить забиваются данными которые есть в данный момент
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $info=$_GET['id_model'];
  3. if (isset($info))
  4. {  
  5. $result = mysql_query($strSQL="SELECT auto.*, marks.*, DATE_FORMAT(date_auto,'%d.%m.%Y') AS date_auto  FROM auto, marks WHERE `auto`.`mark_id`=`marks`.`id` && `auto`.`id_model`='$info'");
  6. while ($vivod = mysql_fetch_array($result))
  7. {
  8. echo "ID: <input id='add_car' type='text' name='id_model' value='".$vivod['id_model']."'><p>";
  9.         echo "<form name='car' id='car' method='get' action='update.php'>";
  10. echo $vivod['mark']." ".$vivod['model']."<p>";
  11. echo "Модель: <input id='add_car' type='text' name='model' value='".$vivod['model']."'><p>";
  12. echo "Кузов: <input id='add_car' type='text' name='body' value='".$vivod['body']."'><p>";
  13. echo "Мотор: <input id='add_car' type='text' name='engine' value='".$vivod['engine']."'><p>";
  14. echo "Привод: <input id='add_car' type='text' name='drive' value='".$vivod['drive']."'><p>";
  15. echo "Трансимиссия: <input id='add_car' type='text' name='transmis' value='".$vivod['transmission']."'><p>";
  16. echo "Год: <input id='add_car' type='text' name='year' value='".$vivod['year']."'><p>";
  17. echo "Описание:<p> <textarea rows='5' cols='20' name='info'>".$vivod['info']."</textarea><p>";
  18. echo "<input type='submit' name='send'>";
  19. echo "</form>";
  20. }
  21. }
  22. ?>

а это обработчик обновления
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $mark=$_POST['mark'];
  3. $model=$_POST['model'];
  4. $body=$_POST['body'];
  5. $engine=$_POST['engine'];
  6. $year=$_POST['year'];
  7. $drive=$_POST['drive'];
  8. $transmission=$_POST['transmission'];
  9. $date=date('Y-m-d');
  10. $info=$_POST['info'];
  11. $id_model=$_POST['id_model'];
  12. $result=mysql_query("UPDATE `auto` SET
  13. `model` = '".mysql_real_escape_string($model)."'
  14. ,`body` = '".mysql_real_escape_string($body)."'
  15. ,`engine` = '".mysql_real_escape_string($engine)."'
  16. ,`drive` = '".mysql_real_escape_string($drive)."'
  17. ,`transmission` = '".mysql_real_escape_string($transmis)."'
  18. ,`year` = '".(int)$year."'
  19. ,`info` = '".mysql_real_escape_string($info)."' WHERE
  20.   `id_model` = ".(int)$id_model."");
  21. echo mysql_error();
  22. if($result=='true')
  23. {echo "Добавлено ";
  24. echo date('d-m-Y/H:i:s');
  25. echo $id_model;
  26. }
  27. else{echo "Не успешно";}
  28. ?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB