У меня есть две кнопки на моей странице (да и нет). У меня есть функция на другой странице "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');
Параметры должны быть разделены запятыми, но вам не нужны параметры при переходе от суперглобального массива. Однако вам нужно только вызвать функцию, если '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
elseif
. Но что вы действительно хотите сделать? Обновить таблицу тем, что выбрал пользователь? Позвольте мне попытаться отредактировать ответ
Один из способов - использовать header
на вашем choice.php
после завершения операций с базой данных. header('Location: *where your form page is*');
Другой способ - сделать сообщение ajax с помощью javascript
Предположим, что у вас есть что-то вроде этого:
<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
}
action
иmethod
в ваш<form>
. Затем дайте свой<input>
атрибутname
затем получите доступ к значению, используя$_POST['inputnamehere']
superglobal
массива$_POST
котором хранятся все данные POST в ассоциативном массиве, где свойство name записи является ключом, а фактические данные - значением.