Кнопка PHP для выполнения запроса и обновления страницы

0

У меня есть две кнопки на моей странице (да и нет). У меня есть функция на другой странице "choice.php", которая обновляет базу данных на основе этого решения. Эта функция принимает "да" или "нет" в качестве входных данных. Поэтому я бы хотел, чтобы каждая кнопка запускала страницу choice.php с "да" или "нет" в зависимости от нажатой кнопки, а затем обновляла текущую страницу. В настоящее время я пробовал (для "да"):

echo "<form></br>";
echo "<input type='button' value = 'yes' Method ='POST' ACTION = 'choice.php'>";
echo "</form>";

Но я не уверен, куда идти отсюда. На странице choice.php есть:

function choice('yes'/'no');
  • 0
    Переместите атрибуты action и method в ваш <form> . Затем дайте свой <input> атрибут name затем получите доступ к значению, используя $_POST['inputnamehere']
  • 0
    Чтение из superglobal массива $_POST котором хранятся все данные POST в ассоциативном массиве, где свойство name записи является ключом, а фактические данные - значением.
Теги:

3 ответа

1
Лучший ответ

Параметры должны быть разделены запятыми, но вам не нужны параметры при переходе от суперглобального массива. Однако вам нужно только вызвать функцию, если 'yes' например:

<form action="choice.php" method="post">
<input type="submit" name="choice" value="yes" />
<input type="submit" name="choice" value="no" /> <!-- You'd better use radio buttons -->
</form>

<?php    
function choice() {
    if ($db->query("UPDATE ..... ;")) {
        return true;
    }
    return false;
}

if (isset($_POST['choice']) && $_POST['choice'] == 'yes') {
    choice();
}
else {
    echo 'no';
}
?>

Конечно, у вас может быть несколько if, но я не думаю, что это вам поможет:

if (isset($_POST['choice']) && $_POST['choice'] == 'yes') {
     //something;
}
elseif (isset($_POST['choice']) && $_POST['choice'] == 'no') {
     //something else;
}
elseif (isset($_POST['choice']) && $_POST['choice'] == 'maybe') {
     //something else;
}

Если вы хотите, чтобы функция обновляла db со значением пользователя, вы можете использовать что-то вроде этого:

function choice() {
    $choices = array('yes', 'no', 'maybe', 'dunno'); //predefined choices
    if (in_array($_POST['choice'], $choices)) { //checks if the user input is one of the predefined choices (yes, no, maybe or dunno)
        if($db->query("UPDATE table1 SET userchoice = '{$_POST['choice']}' WHERE user_id = '{$_SESSION['id']}';")) {
            return true;
        }
    }
    return false;
}


if (isset($_POST['choice'])) choice(); //so here you don't need (not necessary, but you can) to check if the value is the one you want. If it set, you call choice(), then the function checks if it in the array of predefined choices, so if it is - it will update, if it not it will return false
  • 0
    Можно ли добавить более одного параметра? Я пытаюсь связать выбор с текущим пользователем, поэтому в идеале я хотел бы передать страницу 'choice.php' с выбором (да / нет), а также с идентификатором пользователя
  • 0
    Вы можете использовать оператор elseif . Но что вы действительно хотите сделать? Обновить таблицу тем, что выбрал пользователь? Позвольте мне попытаться отредактировать ответ
Показать ещё 7 комментариев
0

Один из способов - использовать header на вашем choice.php после завершения операций с базой данных.
header('Location: *where your form page is*');

Другой способ - сделать сообщение ajax с помощью javascript

-2

Предположим, что у вас есть что-то вроде этого:

<form method='POST' action='choice.php'>
<tr>
 <td><input type="submit" name="answer" value="yes"></td>
 <td><input type="submit" name="answer" value="no"></td>
</tr>
</form>

и в файле PHP вы можете использовать метод POST для проверки ответа, будь то yes или no

if($_POST['answer'] == 'yes') {
 //do something
}
if($_POST['answer'] == 'no') {
 //do something else
}
  • 0
    Это не сработает, ты знаешь?

Ещё вопросы

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