Problème suppression ligne mysql/php

dallap -  
 dallap -
Bonjour,
J'ai un problème avec la suppression de ligne dans un tableau.
J'aimerais que l'on coche les checkboxs des lignes à supprimer (dans la page Recap.php) et qu'en cliquant sur un bouton cela envoie vers une page RecapSupp.php.

Voici mon code Recap.php :

//affichage de la dernière ligne entrée
<tr>
				<td><?php echo $data3['ID']; ?></td>
				<td><?php echo $data3['Designation']; ?></td>
				<td><?php echo $data3['Reference']; ?></td>
				<td><?php echo $data3['NumSerie']; ?></td>
				<td><?php echo $data3['Version']; ?></td>	
				<td><?php echo $data3['NomTypeContrat']; ?></td>
				<td><?php echo $data3['NumContrat']; ?></td>
				<td><?php echo $data3['AddInstallation']; ?></td>
				<td><?php echo $data3['AccesDistant']; ?></td>
				<td><?php echo $data3['Contact']; ?></td>
<td><?php $i=0; echo "<input type=\"checkbox\" name=\"$i\" value=\"$data3[ID]\" />";?></td>
			</tr>

//affichage des lignes précédements entrées
<?php $i=1;
					while($data3 = mysql_fetch_assoc($sql3))
			{
					echo "<tr>
					<td>$data3[ID]</td>
					<td>$data3[Designation]</td>
					<td>$data3[Reference]</td>
					<td>$data3[NumSerie]</td>
					 <td>$data3[Version]</td>
					 <td>$data3[NomTypeContrat]</td>
					 <td>$data3[NumContrat]</td>
					 <td>$data3[AddInstallation]</td>
					 <td>$data3[AccesDistant]</td>
					 <td>$data3[Contact]</td>
	<td><input type=\"checkbox\" name=\"$i\" value=\"$i\" /></td>
						  		
							 		</tr>";
								 $i++;
						}
				?>	
		</table> <INPUT TYPE="button" name="Delete" onclick="javascript:envoie('RecapSupp.php')" value="delete">


Et le code de RecapSupp.php :

foreach($_POST as $key=>$i)
	  {
	   $query4 = "DELETE FROM materiel WHERE ID=$i";    
	mysql_query($query4) or die(mysql_error());
	}


j'obtiens un message d'erreur :
Champ 'SW1' inconnu dans where clause

SW1 correspond a ce que j'ai entré en dernier dans la 2ème colonne (désignation)

je ne trouve pas la solution depuis plusieurs jours. Pourriez vous m'aider svp?

Merci beaucoup.

PS : je travaille sur phpmyadmin 3.1.1 en MySQL: 5.0.51a
Configuration: Windows XP
Firefox 3.0.5

11 réponses

  1. dallap
     
    ah il y avait un double post, l'autre a été supprimé, j'ai donc rajouté des ' ' à ID:
    $query4 = "DELETE FROM materiel WHERE ID='$i'";

    et j'ai changé :
    <td><input type=\"checkbox\" name=\"$i\" value=\"$data3[ID]\" /></td>

    au lieu de :
    <td><input type=\"checkbox\" name=\"$i\" value=\"$i\" /></td>

    mais il ne supprime pas les bonnes lignes dans la base de donnée. Pensez vous qu'il reconnaisse bien les cases cochées?
    Merci de votre aide.
    0
  2. P@t@ch0n Messages postés 603 Statut Membre 85
     
    <INPUT TYPE="button" name="Delete" onclick="javascript:envoie('RecapSupp.php')" value="delete">
    Elle fait quoi cette fonction ?

    Parce qu'à mon avis tu ne transmets rien par post...
    0
  3. dallap
     
    heu en théorie elle transmet à la page recapSupp. Voici la fonction:
    <script language="javascript">
    					function envoie(adresse)
    					{
    						document.client.action = adresse;
    					  	document.client.submit();
    					}
    				</script>


    (dans ma page Recap.php j'ai aussi <form method="post" name="client"> )
    0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    et comme ça:

    <?php 
    $i=1;
    					while($data3 = mysql_fetch_assoc($sql3))
    			{
    					echo "<tr>
    					<td>$data3[ID]</td>
    					<td>$data3[Designation]</td>
    					<td>$data3[Reference]</td>
    					<td>$data3[NumSerie]</td>
    					 <td>$data3[Version]</td>
    					 <td>$data3[NomTypeContrat]</td>
    					 <td>$data3[NumContrat]</td>
    					 <td>$data3[AddInstallation]</td>
    					 <td>$data3[AccesDistant]</td>
    					 <td>$data3[Contact]</td>
    	<td><input type=\"checkbox\" name=\"case_delete[]\" value=\"$i\" /></td>
    						  		
    							 		</tr>";
    								 $i++;
    						}
    				?>	
    		</table> <input type="submit" name="Delete"  value="Delete">
    
    
    
    Et le code de RecapSupp.php :
    <?php
    foreach($_POST['case_delete'] as $key=>$i)
    	  {
    	   $query4 = "DELETE FROM materiel WHERE ID=$i";    
    	mysql_query($query4) or die(mysql_error());
    	}
    
    ?>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dallap
     
    Il n'accepte pas les [] dans le code (erreur syntax) et sans les [] j'ai
    Notice: Undefined variable: case_delete in C:\Program Files\EasyPHP 3.0\www\UPNETWORKS\Recap.php on line 231
    
    0
  7. P@t@ch0n Messages postés 603 Statut Membre 85
     
    Concatène et garde les crochets.
    0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    essayes:

    <?php
    if(sizeof($_POST['case_delete'])>0){
    foreach($_POST['case_delete'] as $key=>$i)
    	  {
    	   $query4 = "DELETE FROM materiel WHERE ID=$i";    
    	mysql_query($query4) or die(mysql_error());
    	}
    }
    
    ?>
    
    0
  9. dallap
     
    j'ai essayé de corrigé avec ce que tu m'a dis et ça donne ça:

    Recap.php:
    <form method="post" name="client" >
    
    <?php $case_delete=array();
    			while($data3 = mysql_fetch_assoc($sql3))
    			{
    			 echo "<tr>
    				 <td>$data3[ID]</td>
    				 <td>$data3[Designation]</td>
    				 <td>$data3[Contact]</td>
    		 <td><input type=\"checkbox\" name=\"$case_delete\[\]\" value=\"$data3[ID]\" /></td> 
    //je suis obligé de mettre $case_delete\[\]\ car si je met $case_delete[]\ il y a une erreur de syntaxe
    						  		
    				</tr>";
    								 
    			}
    			?>
    // si je mets la ligne suivante la page RecapSupp.php est bien chargée à l'appui sur le bouton
    // j'ai ce type de ligne pour chaque bouton de ma page car si je mets un submit le lien n'est pas fait
    <INPUT TYPE="button" name="Delete" onclick="javascript:envoie('RecapSupp.php')" value="delete">
    //si je met celle qui suis c'est la page Recap.php qui est rechargée
    <input type="submit" name="Delete"  value="Delete">
    
    


    RecapSupp.php :
    	
    
    if(sizeof($_POST['case_delete[]'])>0){
    foreach($_POST['case_delete'] as $key=>$i)
    	  {
    	   $query4 = "DELETE FROM materiel WHERE ID=$i";    
    	mysql_query($query4) or die(mysql_error());
    	}
    }
    


    j'ai le message d'erreur :
    Notice: Undefined index: case_delete[] in C:\Program Files\EasyPHP 3.0\www\UPNETWORKS\RecapSupp.php on line 61


    meme en déclarant $case_delete[]=$_POST["case_delete[]"]; ca me met pareil.
    0
  10. dallap
     
    j'ai résolu le problème du bouton, il manquait:
    <form method="post" name="Delete" action="RecapSupp.php">

    <?php $case_delete[]=array();
    					while($data3 = mysql_fetch_assoc($sql3))
    						{
    							 echo "<tr>
    								 <td>$data3[ID]</td>
    								 <td>$data3[Designation]</td>
    								 <td>$data3[Reference]</td>
    								 <td>$data3[NumSerie]</td>
    								 <td>$data3[Version]</td>
    								 <td>$data3[NomTypeContrat]</td>
    								 <td>$data3[NumContrat]</td>
    								 <td>$data3[AddInstallation]</td>
    								 <td>$data3[AccesDistant]</td>
    								 <td>$data3[Contact]</td>
    								 <td><input type=\"checkbox\" name=\"$case_delete\[\]\" value=\"$data3[ID]\" /></td>
    						  		
    							 		</tr>";
    								 
    						}
    				?>	<input type="submit" name="Delete"  value="Delete">


    mais j'ai toujours le:
    Notice: Undefined index: case_delete in C:\Program Files\EasyPHP 3.0\www\UPNETWORKS\RecapSupp.php on line 61

    Auriez vous une idée?

    merci de votre patience
    0
  11. Alain_42 Messages postés 5413 Statut Membre 904
     
    attention il ne faut pas:

    <td><input type=\"checkbox\" name=\"$case_delete\[\]\"

    mais
    <td><input type=\"checkbox\" name=\"case_delete[]\" 


    on ne donne pas à un input un array comme nom mais un nom avec des [] de façon à ce que toutes les cases cochées soient renvoyées dans un array dans le $_POST c'est pas pareil !
    0
  12. dallap
     
    C'est parfait tout marche correctement.

    Par contre j'ai du changé
    <form method="post" name="Delete" action="RecapSupp.php">
    en
    <input type="submit" name="Delete" value="Delete">

    et le bouton Delete en:
    <INPUT TYPE="button" name="Delete" onclick="javascript:envoie('RecapSupp.php')" value="delete">

    car j'ai des boutons pour le retour au menu, visualisation ... et avec un submit cela ne marchait pas
    //Boutons pour les menus
    <tr>
    		<td align="center" width="300"><img src="visuclient.png" width="60" name="Visualiser Les Infos Client" value="Visualiser Les Infos Client"  title="Visualiser Les Infos Client"></td>
    		<td align="center" width="300"><img src="home.png" width="60" name="Retour Sommaire" value="Retour Sommaire"  title="Retour Sommaire"></td>
    	</tr>	
    	<tr>
    		<td align="center" width="300"><INPUT TYPE="button" name="Visualiser Les Infos Client" onclick="javascript:envoie('ChoixVisuAdmin.php')" value="Visualiser Les Infos Client"  title="Visualiser Les Infos Client"></td>
    		<td align="center" width="300"><INPUT TYPE="button" name="Retour Sommaire" onclick="javascript:envoie('IndexAdmin.php')" value="Retour Sommaire"  title="Retour Sommaire"></td>
    	</tr>


    Merci beaucoup a tous pour votre patience. Bonne soirée.
    0