PHP заполнить выпадающий список из базы данных, а затем обновить по нажатию кнопки

0

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

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

<form id='filter' name='filter' method='post' action=''>

                <?php

                $getIssuedVouchers2 = "SELECT * FROM vouchercodes WHERE status = 'Active'";
                $issuedVouchersResult2 = mysql_query($getIssuedVouchers);

                ?>

                <select>

                    <?php

                        while ($ivSelectRow = mysql_fetch_array($issuedVouchersResult2)) {
                            echo "<option name='updatestatus'>" . $ivSelectRow['vouchId'] . "</option>";
                        }

                    ?>

                </select>

                <INPUT TYPE="Submit" VALUE="Update the Record" NAME="Submit" />

                <?php
                    if(isset($_POST['Submit'])) { //if the submit button is clicked

                    $updatingQuery = "UPDATE vouchercodes SET status='Expired' WHERE vouchId = '".$ivSelectRow['vouchId']."' ";
                    mysql_query($updatingQuery) or die("Cannot update");//update or error
                    }
                ?>

            </form>
  • 0
    (1) поместите ваш запрос if(isset($_POST['Submit'])) / UPDATE перед запросом SELECT чтобы обновить его перед выбором, (2) вы хотите использовать $_POST['SelectName'] , AND ( 3) очистить ваш $_POST['SelectName'] при использовании в запросе, чтобы предотвратить внедрение SQL
  • 0
    Вы должны действительно использовать PDO вместо того, чтобы соединять ваши строки с SQL. Я мог бы отправить пользовательский запрос POST с установленным значением vouchId, например 105 '; DROP TABLE ваучер-коды; (или аналогичный), и вся ваша таблица будет удалена мгновенно.
Показать ещё 1 комментарий
Теги:

1 ответ

0

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

Вы ищете Javascript и Ajax. Это клиентские языки. Я бы рекомендовал использовать Jquery для этого, он довольно прост в использовании, как только вы его повесите. Это делает его намного менее ужасным, чем стандартный javascript.

Если вы не хотите избежать перезагрузки страницы (submit → обработчик → перезагрузка страницы), я могу приготовить для вас ответ. Может быть.


Обновление из вашего комментария: вы хотите установить атрибут "selected", который делает этот параметр выбранным для загрузки страницы, правильно? например, выберите второй элемент в раскрывающемся списке, а не первый.

Вы должны использовать selected атрибут в своем теге параметров. Это делает его выбранным. Вот пример, который я использую на одном из моих сайтов.

<select data-wavenum='<?=$i;?>' id="enemy<?=$i;?>" name="enemy<?=$i;?>" class="enemylist">
   <option value="assaulttrooper" <?=($enemy == 'assaulttrooper') ? "selected" : ""?>>Assault Trooper</option>

Это печатает что-то вроде:

   <option value="assaulttrooper" selected>Assault Trooper</option>

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


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

while ($ivSelectRow = mysql_fetch_array($issuedVouchersResult2)) {
   $selected = false;
   if (isset($_POST['Submit'])) {
    $selected = ($_POST['vouchId'] == $ivSelectRow['vouchId']);
   }
   echo "<option name=".$ivSelectRow['vouchId']." ".($selected) ? "selected" : "".">" . $ivSelectRow['vouchId'] . "</option>";
}

Имейте в виду, что я могу изменить имя параметра или отправить POST, который приведет к истечению срока действия или удалению всей таблицы, поскольку ваши данные не подвергаются дезинфекции.

  • 0
    Хорошо, если я изменю ". $ IvSelectRow ['vouchId']." часть запроса на обновление значения в базе данных и нажмите кнопку, он будет обновлять это значение в порядке. То, что я хотел бы сделать, это выбрать vouchId в выпадающем меню и обновить этот идентификатор.
  • 0
    Обновил мой ответ с примером того, как я выбираю выбор. Ваши критерии выбора того, что выбрать, будут отличаться от моих.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню