2013-07-01 58 views
-1

我正在驗證系統上,在我的數據庫中有幾個值爲0的消息(這意味着它們還未被接受),所以我創建了一個頁面以將值更改爲如果驗證複選框被選中,則爲1。退出while循環後得到一個變量

下面的代碼:

<?php 
     if (isset($_POST['valider']))   
      {     
       $reponse1 = db_query('UPDATE messages SET value = 1 WHERE id = ?', array($donneesmsg['id'])); 
       echo "NSF validée";     
      }  
     if (isset($_POST['delete']))    
      {     
       $reponse1 = db_query('DELETE FROM messages WHERE id = ?', array($donneesmsg['id']));      
       echo "NSF supprimée";     
      } 

$reponse = db_query('SELECT * FROM messages WHERE value = 0'); 
while ($donneesmsg = $reponse->fetch()) { 

?> 

<h5><?php echo $donneesmsg['Pseudo']; ?></h5> 

<p class="text-center text-align"><?php echo $donneesmsg['Message']; ?></p> 

<form class="form-inline" method="post" action="index.php?page=changeto1"> 

      <label class="checkbox"> 
      <input type="checkbox" name="valider" value="1"> 
      Valider 
      </label> 


      <label class="checkbox"> 
      <input type="checkbox" name="delete"> 
      Supprimer 
      </label> 

      <input type="text" name="id" value="<?php echo $donneesmsg['id']; ?>"> 




<?php 

} 

?> 

<br> 
<br> 

<button type="submit" class="btn">Envoyer</button> 
</form> 

但是我有一個問題,變量$ donneesmsg [「身份證」]沒有了時,提交的頁面,因爲該變量是在一個while循環第一definied存在。

不幸的是,我真的需要這個ID來讓我的系統工作。 我怎樣才能得到這個ID?

+0

你有什麼試過的?想想,你的變量就在那裏,你可以在循環中對它做任何事情,**包括**將它保存在循環之外的輔助數組上,供以後使用。 –

回答

0

你在錯誤的地方有循環。以循環的方式,每個複選框都會有一個開始窗體標記。獲取多個不同複選框的好方法是將其設置爲數組。要做到這些就應該是這樣的:

<form class="form-inline" method="post" action="index.php?page=changeto1">  

    <?php 
     $reponse = db_query('SELECT * FROM messages WHERE value = 0'); 
     while ($donneesmsg = $reponse->fetch()) : 
    ?> 

     <h5><?php echo $donneesmsg['Pseudo']; ?></h5> 

     <p class="text-center text-align"><?php echo $donneesmsg['Message']; ?></p> 

     <label class="checkbox"> 
      <input type="checkbox" name="valider[<?php echo $donneesmsg['id']; ?>]" value="1"> 
      Valider 
     </label> 

     <label class="checkbox"> 
      <input type="checkbox" name="delete[<?php echo $donneesmsg['id']; ?>]"> 
      Supprimer 
     </label> 

    <?php endwhile; ?> 

    <br> 
    <br> 

    <button type="submit" class="btn">Envoyer</button> 
</form> 

然後你的頁面,提交表單,你可以做:

<?php 

    $idsToValidate = array_keys($_POST['valider']); 
    $idsToDelete = array_keys($_POST['delete']); 

此外,如果你想要的,而不是做<input name="delete[*id*]" value="1" />你可以做<input name="delete[]" value="*id*" />和那麼你就不需要對結果做array_keys了,它已經是你想要使用的ID的數組了

0

這是我該如何設置它?

<?php 

$idsToValidate = array_keys($_POST['valider']); 
$idsToDelete = array_keys($_POST['delete']); 

     if (isset($idsToValidate)) 

      { 

       $reponse1 = db_query('UPDATE messages SET value = 1 WHERE id = ?', array($idsToValidate['id'])); 

       echo "<center>NSF validée</center>"; 

      } 



     if (isset($idsToDelete)) 

      { 

       $reponse1 = db_query('DELETE FROM messages WHERE id = ?', array($idsToDelete['id'])); 

       echo "<center>NSF supprimée</center>"; 

      } 

?> 


<form class="form-inline" method="post" action="index.php?page=changeto1">  

    <?php 
     $reponse = db_query('SELECT * FROM messages WHERE value = 0'); 
     while ($donneesmsg = $reponse->fetch()) : 
    ?> 

     <h5><?php echo $donneesmsg['Pseudo']; ?></h5> 

     <p class="text-center text-align"><?php echo $donneesmsg['Message']; ?></p> 

     <label class="checkbox"> 
      <input type="checkbox" name="valider[<?php echo $donneesmsg['id']; ?>]" value="1"> 
      Valider 
     </label> 

     <label class="checkbox"> 
      <input type="checkbox" name="delete[<?php echo $donneesmsg['id']; ?>]"> 
      Supprimer 
     </label> 

    <?php endwhile; ?> 

    <br> 
    <br> 

    <button type="submit" class="btn">Envoyer</button> 
</form>