Если у меня есть форма, как в приведенном ниже сценарии:
<html>
<?php
session_start();
$con=mysqli_connect("localhost","root","","QSTNS");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$dsply=$_SESSION['q_indx'][$_SESSION['cindx']] ;
//echo $dsply ;
$qstn = mysqli_query($con,"SELECT * FROM qstns where qid = '". $dsply ."'");
$qstn = $qstn->fetch_array(MYSQLI_ASSOC);
//echo $qstn['qname'] . "<br>";
//echo $qstn['opta'] ."<br>";
//echo $qstn['optb']."<br>";
//echo $qstn['optc']."<br>";
//echo $qstn['optd']."<br>";
mysqli_close($con);
?>
<body>
<?php echo $qstn['qname'] ."<br>"; ?>
<form action="prcs_ansr.php" method="post">
<input type="radio" name="rply" value="A" /><?php echo $qstn['opta'] ; ?><br />
<input type="radio" name="rply" value="B" /><?php echo $qstn['optb']; ?> <br />
<input type="radio" name="rply" value="C" /><?php echo $qstn['optc']; ?><br />
<input type="radio" name="rply" value="D" /><?php echo $qstn['optd']; ?> <br/>
<input type="submit" value="previous">
<input type="submit" value="next">
</form></body>
</html>
У меня есть две кнопки в одной форме, и я хочу обрабатывать каждую из них отдельно, и для этого я использовал isset (), но это не сработало. Код для следующей страницы:
<?php
session_start() ;
$con=mysqli_connect("localhost","root","","QSTNS");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if (isset($_POST['previous'])) {
if($_SESSION['cindx']>0)
$_SESSION['cindx']-=1;
}
if(isset($_POST['next']))
{
$res=mysqli_query($con, 'SELECT COUNT(*) FROM qstns');
$row = mysqli_fetch_array($res);
//echo $row[0];
if($_SESSION['cindx']<$row[0]-1)
$_SESSION['cindx']+=1;
}
//echo 'here';
header('Location: quiz_start.php');
mysqli_close($con);
?>
Кто-нибудь может помочь?
Ваши кнопки отправки не имеют названия, только значение. Поэтому вещи, которые вы проверяете как isset, никогда не устанавливаются.
<input type="submit" name="next" value="next"/>
Это поможет
Ваши кнопки отправки содержат значения, но не имена. Таким образом, не будет массива с именем $ _POST [‘previous’] или $ _POST [‘next’].
Сначала вы должны назвать свои кнопки:
<button type="submit" name="next" value="some_value" />
<button type="submit" name="previous" value="some_value" />
Это создаст необходимые POST-массивы. Хотя ваш код все равно не будет функционировать, потому что при отправке формы он отправляет все элементы формы на сервер. Таким образом, и предыдущий и следующий всегда будут установлены, потому что они оба находятся в форме.
То, что вы хотите сделать, это дать обеим кнопкам отправки одно и то же имя, как, например, действие. А затем получите значение из него в своем коде PHP:
<button type="submit name="action" value="next" />
<button type="submit name="action" value="previous" />
Сделав это, вы проверяете ввод в PHP:
<?php
if( isset( $_POST['action'] ) && $_POST['action'] == 'next' ){
// do stuff if action is next
}
if( isset( $_POST['action'] ) && $_POST['action'] == 'previous' ){
// do stuff if action is previous
}
Другой вопрос на ту же тему существует здесь: