PHP: одновременное обновление таблицы из формы

[Удален]
994

Приветствую коллег!

Есть задача: вывести в html таблицу из mysql таким образом, чтобы всю ее можно было отредактировать и отправить одним нажатием кнопки; в строки таблицы должны быть записаны произведенные изменения.

Я реализовал, но как-то кривовато. Индексирую поля, добавляя номер строки к имени поля, затем передаю все через POST[]. Мне не нравится, что данные передаются через POST[] как несвязные элементы, не нравится индексация в именовании полей. Способ кажется кривым.

Быть может, есть идеи лучше? :)

// User submited an edited form
if ($_GET['get_edit'] == "yes") {
/* ****** */
$n = 1;
while ($_POST['shipping_zip'.$n]) {
$shipping_zip = $_POST['shipping_zip'.$n];
$shipping_address = $_POST['shipping_address'.$n];

$shipping_zip_old = $_POST['shipping_zip_old'.$n];
$shipping_address_old = $_POST['shipping_address_old'.$n];

$edit_query = "UPDATE Orders SET shipping_zip='$shipping_zip', shipping_address='$shipping_address'
WHERE shipping_zip='$shipping_zip_old' AND shipping_address='$shipping_address_old'";
/* ***** */
mysql_query($edit_query);
$n++;
}
}

/* ****** */
$query="SELECT orderID, shipping_zip, shipping_address
FROM Orders
ORDER BY orderID";
/* ***** */
$result=mysql_query($query);
print "<table>";
$n = 1;
print "<form action=\"/post.php?get_edit=yes\" method=\"POST\">";
print "<tr style=\"background-color:silver;\">
<td>#</td>\n
<td width=\"10%\">Номер заказа</td>\n
<td width=\"10%\">Индекс</td>\n
<td>Адрес доставки</td>\n
</tr>";
while ($row = mysql_fetch_array($result)) :
print "<tr>\n";
print "<td>$n</td>\n
<td>1000$row[orderID]</td>\n
<td><input type=\"text\" value=\"$row[shipping_zip]\" name=\"shipping_zip$n\" size=\"6\"><input type=\"hidden\" value=\"$row[shipping_zip]\" name=\"shipping_zip_old$n\"></td>\n
<td><input type=\"text\" value=\"$row[shipping_address]\" name=\"shipping_address$n\"><input type=\"hidden\" value=\"$row[shipping_address]\" name=\"shipping_address_old$n\"></td>\n";
print "</tr>\n";
$n++;
endwhile;
print "<tr><td colspan=\"6\"></td><td><input type=\"submit\"></td></tr>\n";
print "</form></table>\n";
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#1

Ничего не понимаю... способ работает? Выполняет свои функции? Сервер не грузит?

Тогда НИЧЕГО не трогайте, а если есть куча свободного времени, сходите в кафе или в кино.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
WT
На сайте с 08.10.2010
Offline
17
#2

В принципе, это самое ожидаемое решение поставленной задачи...

Единственное, перед выполнением апдейта - проверяйте на изменение данных в ячейках, и если изменения в строке не было - апдейт для этой строки не производите.

Просто, при выводе на экран, допустим, 100 строк и изменении всего 1 строки, у Вас апдейт пройдется по всем 100 строкам, по сути не меняя текущих значений.

Кстати, у вас поля `shipping_zip` и `shipping_address` уникальны? Если нет - боюсь, что при большом кол-ве данных у Вас может получиться ситуация, когда обновятся не совсем те данные, которые хотелось бы обновить.

WebTih добавил 28.11.2010 в 23:35

LEOnidUKG:
Ничего не понимаю... способ работает? Выполняет свои функции? Сервер не грузит?
Тогда НИЧЕГО не трогайте, а если есть куча свободного времени, сходите в кафе или в кино.

Вы про рефакторинг и оптимизацию кода слышали?

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

Кстати, LEOnidUKG, судя по Вашему посту, Вы работаете по схеме "принял заказ (сайт на джумле) -> выполнил(прикрутил диз и пару допов) -> получил деньги -> забыл клиента", а с серьезными, долгоиграющими проектами не связываетесь. Не забывайте, что CMS для многих задач не является панацеей и иногда приходится многое писать с нуля, а в этом случае, приходится анализировать множество факторов, с которыми Ваша разработка может столкнуться.

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#3
хочет на этапе проектирования системы обойти возможные подводные камни
Вы про рефакторинг и оптимизацию кода слышали?

В универе это рассказывайте, такими речами, чтобы все были в шоке и просто впадали в ступор. Или перед заказчиками.

У ТС код решает поставленную задачу. Если бы он сказал, например:

У меня вот код есть, решает такую то задачу, ну вот как-то сильно нагружает или сбоит на таком то этапе.

Вот после этого можно, что-то решать.

А из всех проблем:

Мне не нравится,

Ну перепишите столбиком, я не знаю... расставьте крестиком или ещё как нить код.

Вы работаете по схеме "принял заказ

Вы со мной не работали, поэтому свои теории можете оставить при себе.

WT
На сайте с 08.10.2010
Offline
17
#4
LEOnidUKG:

У меня вот код есть, решает такую то задачу, ну вот как-то сильно нагружает или сбоит на таком то этапе.
Вот после этого можно, что-то решать.
Вы со мной не работали, поэтому свои теории можете оставить при себе.

Не работал, но во время общения можно многое понять о человеке, уж извините...

Не хотел забрасывать Ваш огород камнями, так вышло...

А по поводу

LEOnidUKG:

У меня вот код есть, решает такую то задачу, ну вот как-то сильно нагружает или сбоит на таком то этапе.
Вот после этого можно, что-то решать.

Вы к интуиции никогда не прислушивались?

У меня, например, тоже иной раз возникают сомнения насчет целесообразности применения того или иного способа решения поставленной задачи, а в таких ситуациях лучше всего помогает мнение со стороны.

Именно такое мнение и хотел услышать ТС, создавая данный топик.

P.S. Разгорающуюся дискуссию о причинах создания топика предлагаю свернуть, а отвечать в ветке только по сути вопроса из 1 поста.

[Удален]
#5
WebTih:

Именно такое мнение и хотел услышать ТС, создавая данный топик.

Извиняюсь за столь долгий ответ, отсутствовал на форуме.

WebTih, Вас приятно читать! Спасибо за советы, я реализую проверку на изменение. Странно, что не подумал об этом. Отлично понимаю, о чем говорите. Я сторонник такого выполнения задач, при котором получаешь полное удовлетворение от решения.

LEOnidUKG, PHP для меня не основная работа, но мне это нравится и я пытаюсь совершенствовать свои навыки написание кода. Отсюда и вопрос к профи. Я когда-то не знал про функции и писал каждую из них в отдельном файле. И получалось, что на несложный кусок кода плодилось по 10-15 файлов. Это работало. Но правильно ли так было делать? Пожалуй, нет. Желаю всем совершенствоваться и задавать вопросы!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий