2017-02-05 1 views
0

je récupère plusieurs lignes d'une table et je les afficher dans une table comme image ->Click here for view the image < -Mise à jour multirang PHP avec la même valeur

Dans la base de données, « status » valeur est définie comme « en attente » donc je veux choisir plusieurs étudiants et changer le "statut" en "approuvé", puis faire une mise à jour qui met à jour chaque ligne que j'ai vérifié.

Ceci est mon code pour l'image ci-dessus ...

 <?php 
     include("connection.php"); 


     echo "<table border='1'><tr> 

     <td><strong>Student ID</strong></td> 
     <td><strong>Student Name</strong></td> 
     <td><strong>Kelompok</strong></td> 
     <td><strong>Block</strong></td> 
     <td><strong>Level</strong></td> 
     <td><strong>House</strong></td> 
     <td><strong>Status</strong></td> 


     </tr>"; 
     $i=0; 
     while ($ww=mysqli_fetch_array($query)) 
     { 
      if ($i%2==0) 
       $class="evenRow"; 
      else 
       $class="oddRow"; 

      $id=$ww[0]; 
      $studentid=$ww[1]; 
      $name=$ww[2]; 
      $kelompok=$ww[8]; 
      $block=$ww[9]; 
      $level=$ww[10]; 
      $house=$ww[11]; 
      $status=$ww[14]; 



     echo "<tr> 
      <input type=hidden name=applyid[] value=".$id."/> 
      <td>$studentid</td> 
      <td>$name</td> 
      <td>$kelompok</td> 
      <td>$block</a></td> 
      <td>$level</td> 
      <td>$house</td> 
      <td> 
       <input type=checkbox name=status[] value=".$id."approved checked> APPROVED <br> 
      </td> 
      </tr>"; 
     } 
     $i++; 
     echo "</table>"; 

     ?> 

    <br> 

    <a href="officerapplicationupdate.php?applyID=<?php echo $id; ?>"><input type="submit" value="Update"></a> 
    </form> 

    <br><br> 
    </table> 

ce qui est le code pour mettre à jour la ligne ..

<?php 

    include("connection.php"); 



    if(isset($_POST["submit"]) && $_POST["submit"]!="") { 
     $idCount = count($_POST["status"]); 
     for($i=0;$i<$idCount;$i++) { 
      mysqli_query("UPDATE application SET apply_status='".$_POST["status"][$i]."' 
      WHERE apply_id='".$_POST["applyid"]."'"); 
     } 
    } 

?> 
+0

Bienvenue dans Stack Overflow! Nous sommes un site de questions et réponses, pas un service de codeurs pour la location. Veuillez expliquer ce que vous avez essayé jusqu'à présent et pourquoi cela n'a pas fonctionné. Voir: [Pourquoi est-ce que "Quelqu'un peut-il m'aider?" pas une question réelle?] (http://meta.stackoverflow.com/q/284236) –

+0

Sachez que votre identifiant sera toujours le même, car vous faites référence à un tableau => $ _POST ["applyid"] - il devrait être $ _POST ["applyid"] [$ i] – recycler

+0

@recycler il ne fonctionne toujours pas. il n'y a pas d'erreur, mais la valeur dans la base de données n'est toujours pas mise à jour. –

Répondre

0

Vous pouvez préparer votre déclaration et l'exécuter ensuite. Cela peut être fait comme ceci:

$in = array(); 
    if(isset($_POST["submit"]) && $_POST["submit"]!="") { 
     $idCount = count($_POST["status"]); 
     for($i=0;$i<$idCount;$i++) { 
     $in[] .= $_POST["applyid"][$i]; 
     } 
    } 
    mysqli_query("UPDATE application SET apply_status='approved' WHERE apply_id IN '".implode(",",$in)."'"); 

Donc une seule requête est nécessaire.

Vous pouvez également résumer les modifications pour un autre apply_status.

Soyez conscient de vérifier l'entrée venant de la page Web pour empêcher l'injection SQL!