ОБНОВЛЕНИЕ через выбранный переключатель - PullRequest
0 голосов
/ 21 февраля 2012

Привет, ребята, и извините за мой английский,

Я пытаюсь сделать простое ОБНОВЛЕНИЕ через выбранные переключатели, но это не работает. У меня есть 3 кнопки в цикле while, и каждая кнопка должна делать что-то еще, что я хочу отфильтровать.

$result=mysql_query("SELECT id FROM table WHERE state=0");
    while ($record=mysql_fetch_array($result)):
        <form  method='post' action=''>
         <input type='radio' name='state' value='1' /> 1
         <input type='radio' name='state' value='2' /> 2
         <input type='radio' name='state' value='3' /> 3

         <input type='submit' value='Send' /> 
        </form>
    endwhile;

Если я выберу одну из трех кнопок и нажму «Отправить», то одна строка (на основе идентификатора) должна быть ОБНОВЛЕНА в базе данных MySQL:

mysql_query ("UPDATE table SET state=(selected radio button number 1-3) WHERE id=$record[id]");

Но сценарий должен быть вне цикла while, и если я сделаю это таким образом, он не будет работать, потому что сценарий не сможет распознать, какой идентификатор был выбран.

Если я сделаю это так:

$result=mysql_query("SELECT id FROM table WHERE state=0");
    while ($record=mysql_fetch_array($result)):
        <form  method='post' action=''>
         <input type='radio' name='state' value='$record[id]' /> 1
         <input type='radio' name='state' value='$record[id]' /> 2
         <input type='radio' name='state' value='$record[id]' /> 3

         <input type='submit' value='Send' /> 
        </form>
    endwhile;

тогда идентификатор распознается скриптом, но я не знаю, как я могу отфильтровать, какое число (1, 2 или 3) отправляет запрос UPDATE для столбца «состояние». Это большая дилемма для меня, и я не могу понять. Мне нужно распознать ID и отфильтровать выбранный номер (1-3). Вы можете мне помочь?

1 Ответ

1 голос
/ 21 февраля 2012

Есть два варианта.

Первый:

$result=mysql_query("SELECT id FROM table WHERE state=0");
while ($record=mysql_fetch_array($result)):
    <form  method='post' action=''>
     <input type='hidden' name='recordId' value='$record[id]' />
     <input type='radio' name='state' value='1' />
     <input type='radio' name='state' value='2' />
     <input type='radio' name='state' value='3' />
     <input type='submit' value='Send' /> 
    </form>
endwhile;

и

$recordId = (int)$_POST['recordId'];
$state = (int)$_POST['state'];
mysql_query ("UPDATE table SET state=$state WHERE id=$recordId");

Второе:

$result=mysql_query("SELECT id FROM table WHERE state=0");
<form method='post' action=''>
    while ($record=mysql_fetch_array($result)):
        <input type='radio' name='state[$record[id]]' value='1' />
        <input type='radio' name='state[$record[id]]' value='2' />
        <input type='radio' name='state[$record[id]]' value='3' />
    endwhile;
    <input type='submit' value='Send' /> 
</form>

и

foreach($_POST['state'] as $key => $val) {
    $recordId = (int)$key;
    $state = (int)$val;
    mysql_query ("UPDATE table SET state=$state WHERE id=$recordId");
}

(обратите внимание, что приведенный выше код, вероятно, не является синтаксически правильным и приведен в качестве иллюстрации к идее)

Кроме того, смешивать код и данные - плохая практика; рассмотрите возможность использования подготовленных операторов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...