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
Форумы портала PHP.SU :: Версия для печати :: MySQL+UPDATE
Форумы портала PHP.SU » » Вопросы новичков » MySQL+UPDATE

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

1. Alegor13 - 06 Июня, 2015 - 14:23:46 - перейти к сообщению
Помогите, пожалуйста, разобраться что не так. Перерыл кучу информации, голова кипит...

Вот код:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <table>
  3. <tr><center><strong>
  4.         <td>Вид товара</td>
  5.         <td>Наименование</td>
  6.         <td>Ед. измерения</td>
  7.         <td>Стоимость</td>
  8. </strong></center></tr>
  9.  
  10. <?php
  11. $sql = mysql_query('SELECT `ID`, `Vid`, `Name`, `Mera`, `Price` FROM `products`') or die (mysql_error());
  12. while ($result = mysql_fetch_array($sql)) {
  13.         echo "<tr>
  14.         <td><form action=\"\" method=\"post\"><input type=\"text\" name=\"Vid\" value=".$result['Vid']."></form></td>
  15. <td><form action=\"\" method=\"post\"><input type=\"text\" name=\"Name\" maxlength=\"25\" size=\"100\" value='{$result['Name']}'></form></td>
  16. <td><form action=\"\" method=\"post\"><input type=\"text\" name=\"Mera\" value=".$result['Mera']."></form></td>
  17. <td><form action=\"\" method=\"post\"><input type=\"text\" name=\"Price\" value='{$result['Price']}'></form></td>
  18. <td><form action=\"\" method=\"post\"><input type=\"submit\" name=\"save\" value=\"Сохранить\"></form></td>
  19. <td><form action=\"\" method=\"post\"><input type=\"hidden\" name=\"ID\" value=".$result['ID']."></form></td></tr>";
  20. }
  21. ?>
  22. <?php
  23. //меняем
  24. if (isset($_POST['save'])) {
  25.    $sql2 = "UPDATE products SET Vid='".$_POST['Vid']."', Name='".$_POST['Name']."', Mera='".$_POST['Mera']."', Price='".$_POST['Price']."' WHERE ID = '".$_POST['ID']."'";
  26.         mysql_query($sql2);
  27.    if ($sql2) {
  28.        echo "<p>Товар изменен.</p>".$_POST['ID'];
  29.    } else {
  30.        echo "<p>Произошла ошибка.</p>".mysql_error();
  31. }
  32. }
  33. ?>
  34. </table>
  35.  


Принцип работы: массив из запроса собираю в табличку с текстовыми полям для редактирования, к каждой строчке создаю кнопочку "Сохранить", при клике по которой происходит запрос на обновление строки по ID.

В результате данные не обновляются Недовольство, огорчение. В запросе UPDATE пустые значения.
ID в таблице Auto_increment. Что у меня не так?
(Добавление)
Все разобрался Улыбка
2. exlant - 06 Июня, 2015 - 14:51:28 - перейти к сообщению
Почитайте как формы работают...
у вас для каждого input новая форма!
И соответственно там где input отправить, пустая форма, только с кнопкой отправить!
это все что вы отправляете:
CODE (html):
скопировать код в буфер обмена
  1. <form action=\"\" method=\"post\"><input type=\"submit\" name=\"save\" value=\"Сохранить\"></form></td>

То есть, вы отправляете пустую форму!

Все ваши input должны находиться в одном теге <form></form>
3. likvidator - 06 Июня, 2015 - 15:05:12 - перейти к сообщению
exlant пишет:
То есть, вы отправляете пустую форму!

PHP:
скопировать код в буфер обмена
  1. echo $_POST['save']; // Сохранить
4. exlant - 06 Июня, 2015 - 15:10:34 - перейти к сообщению
likvidator и что?
5. likvidator - 06 Июня, 2015 - 16:01:27 - перейти к сообщению
exlant пишет:
likvidator и что?

Ну,кажется,она не пустая... Не передаются нужные поля - да,но она не пустая...
6. exlant - 06 Июня, 2015 - 20:27:18 - перейти к сообщению
likvidator пишет:
Ну,кажется,она не пустая... Не передаются нужные поля - да,но она не пустая...
ню-ню... я имел ввиду, что передается только то, что в теге <form></form> в котором и находиться кнопка <input type='submi'>... У ТС там кроме кнопки ничего нет! Вот и передалось value кнопки, и все! Все остальные данные само сабой не передались! А насколько я понимаю, он (ТС) хочет передать и остальные данные, вот я ему и пишу, что он отправляет пустую форму, без его данных, правильно будет как то так:

CODE (html):
скопировать код в буфер обмена
  1. <form action="" method="post">
  2.                 <table>
  3.                     <tr>
  4.                         <td><input type="text" name="Vid" value=""></td>
  5.                         <td><input type="text" name="Name" maxlength="25" size="100" value=''></td>
  6.                         <td><input type="text" name="Mera" value=""></td>
  7.                         <td><input type="text" name="Price" value=''></td>
  8.                         <td><input type="submit" name="save" value="Сохранить"></td>
  9.                         <td><input type="hidden" name="ID" value=""></td>
  10.                    </tr>
  11.                 </table>
  12.             </form>

(Добавление)
А не писать <form></form> к каждому инпуту...

 

Powered by ExBB FM 1.0 RC1