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]   

> Описание: Помогите, пожалуйста!!!
quinlena
Отправлено: 17 Апреля, 2012 - 19:50:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


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




Не получается обновить данные в базе, чтобы я внесла редактирование в строку и оно в базе сохранилось. Помогите, пожалуйста!!! Ругается: Error: 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 '' at line 1
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <body>
  3. <?PHP
  4. $dblocation = "localhost";
  5. $dbname = "vol_base";
  6. $dbuser = "root";
  7. $dbpasswd = "";
  8. $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  9. if (!$dbcnx)
  10. {
  11. echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому
  12. корректное отображение страницы невозможно.</P>" );
  13. exit();
  14. }
  15. if (!@mysql_select_db($dbname, $dbcnx))
  16. {
  17. echo( "<P>В настоящий момент база данных не доступна, поэтому
  18. корректное отображение страницы невозможно.</P>" );
  19. exit();
  20. }
  21.  
  22. $name_reas = $_POST['name_reas_can'];
  23. $id_rea_can = $_POST['id'];
  24.  
  25. if(@$submit_edit) {
  26. $query = mysql_query("UPDATE `reas_can_service` SET `name_reas_can`='".$name_reas."' WHERE `id_rea_can`='".$id_rea_can."'");
  27. }
  28. //phpinfo(INFO_VARIABLES);
  29. $ath = mysql_query("SELECT * FROM `reas_can_service` WHERE `id_rea_can` = ".$_GET['id']);
  30. if($ath)
  31. {
  32. // Определяем таблицу и заголовок
  33. echo "<table border=1>";
  34. echo "<tr><td>id</td><td>naimenovanie</td></tr>";
  35. // Так как запрос возвращает несколько строк, применяем цикл
  36. while($can = mysql_fetch_array($ath))
  37. {
  38. echo "<tr><form action=\"edit.php\" method=\"post\" name=\"edit_form\">\n;
  39.  
  40. <td><input type = \"hidden\" name = \"id\" value = ".htmlspecialchars($can['id_rea_can'],ENT_QUOTES)."></td>
  41. <b><i><div id=\"num\">#".$can['id_rea_can']."</b></i></td>
  42. <td><input type = \"text\" name = \"name_reas_can\" value = ".htmlspecialchars($can['name_reas_can'],ENT_QUOTES)."></td>
  43. </tr>";
  44. }
  45. echo "</table>";
  46. echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить изменения\" /></td>\n";
  47.  
  48. }
  49.  
  50. else
  51. {
  52. echo "<p><b>Error: ".mysql_error()."</b><p>";
  53. exit();
  54. }
  55. ?>
  56. </form>
  57. </body>
  58. </html>
 
 Top
DelphinPRO
Отправлено: 17 Апреля, 2012 - 19:59:31
Post Id



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


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


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




смотрите какой запрос у вас получается в итоге.

PS в обоих запросах скул-инъекция.
(Добавление)
подозреваю, что вам поможе mysql_real_escape_string() заодно и от уязвимости избавитесь


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
quinlena
Отправлено: 17 Апреля, 2012 - 20:06:48
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


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




DelphinPRO пишет:
смотрите какой запрос у вас получается в итоге.

PS в обоих запросах скул-инъекция.
(Добавление)
подозреваю, что вам поможе mysql_real_escape_string() заодно и от уязвимости избавитесь

Если честно, то не совсем поняла... По идее же должно работать через update?
 
 Top
DelphinPRO
Отправлено: 17 Апреля, 2012 - 20:32:51
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("
  2.        UPDATE `reas_can_service`
  3.        SET `name_reas_can`='".mysql_real_escape_string($name_reas)."'
  4.        WHERE `id_rea_can`='".mysql_real_escape_string($id_rea_can)."'
  5. ");

PHP:
скопировать код в буфер обмена
  1. $ath = mysql_query("SELECT * FROM `reas_can_service` WHERE `id_rea_can` = ".(int)$_GET['id']);

(Отредактировано автором: 17 Апреля, 2012 - 20:33:58)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
quinlena
Отправлено: 18 Апреля, 2012 - 06:58:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


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




DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("
  2.        UPDATE `reas_can_service`
  3.        SET `name_reas_can`='".mysql_real_escape_string($name_reas)."'
  4.        WHERE `id_rea_can`='".mysql_real_escape_string($id_rea_can)."'
  5. ");

PHP:
скопировать код в буфер обмена
  1. $ath = mysql_query("SELECT * FROM `reas_can_service` WHERE `id_rea_can` = ".(int)$_GET['id']);

Подскажите. пожалуйста, как сделать, чтоб в базе сохранялись изменения? На данный момент этого не происходит...
 
 Top
DelphinPRO
Отправлено: 18 Апреля, 2012 - 07:13:15
Post Id



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


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


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




Если не вываливается никаких ошибок, то предположу, что не выполняется условие
WHERE `id_rea_can`='".mysql_real_escape_string($id_rea_can)."'
т.е. в ПОСТ не передается или передается неправильный идентификатор.
(Добавление)
а эта переменная $submit_edit откуда берется? судя по всему она неинициализирована и поэтому условие if(@$submit_edit) всегда ложно

и еще совет - включите вывод всех ошибок и уберите из кода всех собак (@)
(Добавление)
а вот это
PHP:
скопировать код в буфер обмена
  1. $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  2. if (!$dbcnx)
  3. {
  4. echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому
  5. корректное отображение страницы невозможно.</P>" );
  6. exit();
  7. }
  8. if (!@mysql_select_db($dbname, $dbcnx))
  9. {
  10. echo( "<P>В настоящий момент база данных не доступна, поэтому
  11. корректное отображение страницы невозможно.</P>" );
  12. exit();
  13. }
можно заменить на это
PHP:
скопировать код в буфер обмена
  1. $dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd) or die("database error");
  2. mysql_select_db($dbname, $dbcnx) or die("database error");

намного читабельнее


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
quinlena
Отправлено: 18 Апреля, 2012 - 08:15:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


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




Почему-то, рассматривая пример, я поняла, что там срабатывает условие нажатия кнопки и берется отсюда
PHP:
скопировать код в буфер обмена
  1. #
  2. echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить изменения\" /></td>\n";

Берется название кнопки... Но судя по всему - нет. А как можно присвоить кнопке нажатие, чтоб она что-то выполняла?
 
 Top
avtor.fox
Отправлено: 18 Апреля, 2012 - 08:39:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




quinlena пишет:
Берется название кнопки... Но судя по всему - нет. А как можно присвоить кнопке нажатие, чтоб она что-то выполняла?


Поместить её в форму.

CODE (html):
скопировать код в буфер обмена
  1. <form action='test.php' method='POST'>
  2. <input type='text' name='val'>
  3. <input type='submit' value='Отправить'>
  4. </form>


И нет смысла присваивать кнопке имя Улыбка
 
 Top
DelphinPRO
Отправлено: 18 Апреля, 2012 - 13:17:48
Post Id



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


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


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




quinlena пишет:
я поняла, что там срабатывает условие нажатия кнопки и берется отсюда

просто это значение нигде не присваивается переменной $submit_edit

вместо этого пишите

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['submit_edit'])) { // Если в POST передана переменная submit_edit то условие выполнится

(Отредактировано автором: 18 Апреля, 2012 - 13:18:10)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hidalgo
Отправлено: 18 Апреля, 2012 - 14:31:45
Post Id



Частый гость


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


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




можно попробовать посмотреть передаваемые данные методом GET, если все работает как надо - то переделать в POST. Так хоть наглядно все видно.
 
 Top
quinlena
Отправлено: 18 Апреля, 2012 - 18:14:38
Post Id


Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Апр. 2012  
Откуда: Казахстан


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




Жаль, нельзя тебе плюсик поставить... СПАСИБО ОГРОМНОЕ!!!!!!!!! Благодаря тебе все заработало!!!!!!!!!!!
 
 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