2013-07-01 3 views
-1

Я работаю над системой валидации, в моей БД есть несколько msgs со значением = 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 [ «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, в результате он уже будет массивом идентификаторов, с которыми вы хотите работать с

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> 
Смежные вопросы