2014-10-02 2 views
0

Если у меня есть форма, как в приведенном ниже сценарии:Как я могу обработать две разные кнопки отправки в одной HTML-форме?

<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> 

У меня есть две кнопки в одной форме, и я хочу, чтобы обработать каждый из них в отдельности, и для этого я использовал Исеть(), но он не работает , Код для следующей страницы:

  <?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); 
    ?> 

Может кто-нибудь помочь?

ответ

5

Ваши кнопки отправки не имеют имени, только значение. Так что вещи, которые вы проверяете как isset, никогда не устанавливаются.

<input type="submit" name="next" value="next"/> 

Это поможет.

+0

PHP, если IsSet ищет имя = 'следующая' не значение вы можете установить, если (Исеть ($ _ POST [ 'следующая']) && $ _POST [ 'следующий'] == 'рядом'), чтобы сделать использование значения –

+0

aah blu nder ошибка .. в любом случае спасибо @Juru – dhruvsharma

2

Ваши кнопки отправки содержат значения, но не имена. Таким образом, не будет массива с именем $ _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 
    } 

Другой вопрос одного и того же предмета существует здесь:

форма

Two submit buttons in one form

+0

10x для справки .... :) – dhruvsharma

Смежные вопросы