2015-09-07 1 views
1

J'essaie de mettre à jour plusieurs lignes en utilisant le script suivant, mais le problème est de savoir comment il modifie toutes les entrées de données dans la colonne souhaitée. Au lieu de cela, je veux que seules les lignes sélectionnées soient modifiées. Voici mon code:Mise à jour de plusieurs lignes dans une même requête php mysql

<?php 
    $query = mysql_connect("localhost","root","toor"); 
    mysql_select_db("busticket",$query); 
    $result=mysql_query("Select * from ticket_reservation WHERE validate_status='Yes'") or die(mysql_error()); 
    while($row=mysql_fetch_array($result)) 
    { 
    echo "<tr><td><input type='checkbox' id='name' name='name[]' value=".$row['id']."</td><td>".$row['userid']."</td><td>".$row['busid']."</td> <td>".$row['numberofseats']."</td></tr>"; 

} 
echo"<tr><td><input type='submit' name='submit' Value='Validate Tickets'> </td></tr>"; 
if(isset($_POST['name'])) 
{ 
$Name=$_POST['name']; 
foreach($Name as $N) 
    if(isset($_POST["submit"]) && $_POST["submit"]!="") { 
    $usersCount = count($_POST["name"]); 
    for($i=0;$i<$usersCount;$i++) { 
    mysql_query("UPDATE ticket_reservation set validate_status='Yes'"); 
    } 

    ?> 
+0

ce qui est le foreach? Qu'est-ce que tous les échos de $ qry suggèrent que vous faites? Alors pourquoi êtes-vous surpris et même ici? – Drew

+0

Cela signifie pour chaque ligne sélectionnée. il n'y a pas d'erreur retournée. Comme je l'ai mentionné, il change toutes les colonnes dans le tableau .... Je veux seulement les sélectionnés ... peut-être qu'il ne vérifie pas ceux qui sont sélectionnés ... –

+0

pouvez-vous ajouter 2 requêtes écho – alamnaryab

Répondre

-1

Les cases à cocher doit avoir un nom spécifique afin que vous puissiez savoir quoi mettre à jour dans la base de données.

<input type='checkbox' id='name' name='name[1]' value=".$row['id']."> 
<input type='checkbox' id='name' name='name[2]' value=".$row['id']."> 

vous manque également un ">" après la valeur

+0

Comment puis-je faire que je dois obtenir tous les noms d'utilisateur et ID dynamiquement voulez-vous dire que je dois obtenir toutes les entrées manuellement, c'est à dire par nom [1], nom [2]. être impraticable s'il y a un millier d'entrées –

1
<?php 
    $query = mysql_connect("localhost","root","toor"); 
    mysql_select_db("busticket",$query); 
    $result=mysql_query("Select * from ticket_reservation WHERE validate_status='Yes'") or die(mysql_error()); 
    while($row=mysql_fetch_array($result)) 
    {?> 
    <tr> 
    <td><input type='checkbox' id='name' name='name[]' value="<?echo $row['id'];?>"></td> 
    <td><?echo $row['userid'];?></td> 
    <td><?echo $row['busid'];?></td> 
    <td><?echo $row['numberofseats'];?></td> 
    </tr> 
<?}?> 
<tr><td><input type='submit' name='submit' Value='Validate Tickets'> </td></tr> 
<? 
if(isset($_POST["submit"]) 
{ 
$Name=$_POST['name']; 
$usersCount = sizeof($Name); 
for($i=0;$i<$usersCount;$i++) 
{ 
    $ID=$Name[$i]; 
    mysql_query("UPDATE ticket_reservation set validate_status='Yes' WHERE id='$ID'"); 
}}?> 
+0

vous faites la même erreur que OP 'foreach ($ Name as $ N)' est suffisant ne fait pas une boucle imbriquée 'pour ($ i = 0; $ i <$ usersCount; $ i ++) 'c'est inutile et faux –

+0

aussi ne pas tester' if (isset ($ _ POST ["soumettre"]) && $ _POST ["soumettre"]! = "") 'encore et encore dans une boucle –

+0

oh @ moskito-x. Pardon. Edité –