Сначала вы должны проверить весь код на наличие проблем безопасности, но это можно сделать на втором шаге. Старайтесь всегда использовать целые числа и приводить результат как ожидаемое целое число. Для $pat_id
и в сценарии просмотра вместо <?php echo $_GET['a'];?>
сделайте <?php echo (int) $_GET['a'];?>
. Но это еще одна проблема.
$pat_id
не инициализируется на вашем коде на стороне сервера, но, возможно, вы пропустили его при копировании / вставке, иначе вам нужно будет сделать:
$pat_id = (int) $_POST['pat_id'];
Если я хорошо понимаю, у вас есть несколько рядов, в каждом из которых есть выпадающий список. Вы должны идентифицировать каждый выпадающий список с отдельным именем для каждой строки. Так что вместо:
<select name="mydropdown">
Вы должны иметь
<select name="mydropdown[<?php echo $row_medi['order_no']; ?>]">
Так что в каждом ряду вы получите что-то вроде:
<tr><td>42</td>(...)<select name="mydropdown[42]">(...)</tr>
<tr><td>43</td>(...)<select name="mydropdown[43]">(...)</tr>
А на стороне сервера вы получите $_POST['mydropdown']
массив значений с порядковым номером в качестве индекса. Иначе $_POST['mydropdown']
может содержать только последнее выбранное значение.
После этого я не понимаю, что именно нужно делать, но вам может потребоваться сделать несколько обновлений, по одному для каждого order_no
.
EDIT :
Это ваша последняя версия кода:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
mysql_select_db($database_PPS, $PPS);
$pat_id = (int) $_POST['pat_id'];
foreach ($_POST['mydropdown'] as $order_no => $choice) {
$updateSQL = sprintf("UPDATE orders SET STATUS=%s, pat_id=%s WHERE order_no=%s",
GetSQLValueString($_POST['mydropdown'],"text"),
GetSQLValueString($_POST['pat_id'], "int"),
GetSQLValueString($_POST['order_no'],"int"));
$Result1 = mysql_query($updateSQL, $PPS) or die(mysql_error());
}
}
Это то, что я написал бы, теперь это, возможно, не заслуживает вопроса о переполнении Stck, может быть, просто прочитайте ваш код в спокойной обстановке и тщательно обдумайте, что вы хотите и что у вас есть (для отладки используйте print_r($_POST);die('aaarg');
):
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
mysql_select_db($database_PPS, $PPS);
$pat_id = (int) $_POST['pat_id'];
foreach ($_POST['mydropdown'] as $order_no => $choice) {
$updateSQL = sprintf("UPDATE orders SET STATUS=%s, pat_id=%s WHERE order_no=%s",
GetSQLValueString($choice,"text"),
GetSQLValueString($pat_id, "int"),
GetSQLValueString($order_no,"int"));
$Result1 = mysql_query($updateSQL, $PPS) or die(mysql_error());
}
}