PHP 'Checkbox' Альтернатива при обновлении - PullRequest
0 голосов
/ 30 октября 2011

У меня небольшая проблема с моим PHP-кодом, и, как всегда, любая помощь очень ценится.

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

Структура страницы следующая:

  1. Цикл while для вывода данных, каждый из которых, конечно, имеет уникальный идентификатор.
  2. Aфлажок, который должен быть отмечен перед нажатием кнопки «обновить» (несколько кнопок обновления присутствуют в ожидании того, сколько строк возвращено.

Это то, что я запутался, он разработал это, чтобы они должныустановите флажок перед нажатием кнопки «обновить», в противном случае сценарий не знает, какой «идентификатор» обновлять. Почему это так?!

<?php 
if($_POST['accept']){
    if(!$_POST['check']){
        echo "<div class='error_input'>Error! please tick box to confirm </div>";
}else{
        $form_id=$_POST['fid'];
        $customer=$_POST['customer'];

    mysql_query("UPDATE job SET customer='$customer'WHERE f_id=$form_id ");
echo "<div class='form_ok'>Job has been updated.</div>";
}
?>

Если я просто закомментирую флажок, ипользователь нажимает кнопку «принять», она не работает, так что «флажок» указывает на уникальный идентификатор строки, но я его не вижу?

<input type="checkbox" name="check" value="1" required/>
<input type="submit" name="accept" value="Accept Job">

Моя проблемаЯ хочу иметь возможность снять этот раздражающий флажок, и один разпользователь нажал «принять», чтобы добавить уникальный идентификатор в сеанс, что, как я знаю, может быть сделано:

$_SESSION['user_id'] = $user_id;

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

Я попытался реализовать это:

<input type="submit" name="accept" value="<?php echo"$user_id"; ?>" class="sbutton">

, который работает в двух словах, однако, это не удобно для пользователя, и я могу 'При доступе к user_id, когда я использую функцию $_POST, она сохраняет поле 'name'.

Я знаю, что это долго, я надеюсь, что дал вам достаточно информации, большое спасибо заранее.

1 Ответ

1 голос
/ 30 октября 2011

Кажется, что там есть еще одно скрытое поле с идентификатором задания, и у каждой строки есть свои собственные теги <form> - так что если вы уберете проверку для поля check, то ничего страшного.

Вот так:

<?php 
if($_POST['accept'])
{
    $form_id=$_POST['fid'];
    $customer=$_POST['customer'];

    mysql_query("UPDATE job SET customer='".$customer."' WHERE f_id=".$form_id);
    echo "<div class='form_ok'>Job has been updated.</div>";
}
?>

Кстати, лучше всего проверить и защитить значения из $ _POST с проверкой чисел и защитой от SQL-инъекций с помощью функции mysql_real_escape_string

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