Probleme insert into

Résolu
Bonjour,
je voudrais ajouter les champs recueilli dans la table articles pour les mettre dans la table supprimer
while( $mess = mysql_fetch_array($article) )
{  
        echo("<tr>
		<td align='center'>".$mess['article_id']. "</td> 
		<td align='center'>".$mess['titre']. "</td>  
		<td align='center'>".$mess['nom_categorie']. "</td>  
		<td align='center'>".$mess['pseudo'].  "</td>
		<td align='center'>".$mess['date'].  "</td>
		<td align='center'><a href='modifart.php?arteid=".$mess['article_id']."'><img src='imgs/admin/edit.png' title='Modifier article' border='0'/></a></td>
		<td align='center'><a href='regart.php?arteid=".$mess['article_id']."'><img  src='imgs/admin/copy.png' title='Voir article' border='0' /></a></td>
		<td align='center'><form method='POST' action='voirarticle.php'> <input type='radio' name='iden' id='iden' value='supprime'/> "); 
									   if(isset($_POST['enregistrer']))
									  {
                                         if(isset($_POST['iden']))
										 {
				                            $supp = "INSERT INTO supprimer (id, titre, nom_categorie, article, pseudo, date) Values Select (article_id, 'titre, 
											nom_categorie, article, pseudo, date) From articles Where article_id=".$mess['article_id'] or die(mysql_error());
											if(mysql_query($supp))
											{
											    $supprime =mysql_query("DELETE FROM articles WHERE article_id=".$mess['article_id']) or exit(mysql_error()); 
											    $informations = Array(/*Article supprime*/
										        false,
										        'Article supprimée',
										        'Votre article a été supprimée !! ',
										        '',
										        ROOTPATH.'/joseph-gaillard/voirarticle.php',
										        4
										         );
						                       require_once('includes/information.php');
					                           exit();		
				                             }
					                      }
}

Mais ça marche pas, POURQUOI ??!!
Merci d'avance !!
Configuration: Windows XP
Firefox 3.0.11

45 réponses

Résumé de la discussion

Problème central : un script PHP affiche les articles et tente de les copier dans une table supprimer puis de les supprimer de la table articles, mais l’exécution échoue pour plusieurs raisons. Des causes fréquentes émergent : le formulaire n’est pas fermé, ce qui peut faire prendre le dernier champ, puis des erreurs SQL comme INSERT INTO ... SELECT et des guillemets manquants autour des identifiants. D'autres réponses suggèrent de traiter l’opération dans la page de traitement du formulaire plutôt que dans l'affichage, et d'utiliser INSERT ... SELECT ou une syntaxe JOIN pour déplacer les données. En cas de suppression, l’utilisateur doit déclencher l’action via un bouton dédié et non au chargement de la page afin d’assurer le ciblage d’un article précis.

Bobot (l’IA à votre service)
  1. ok j'ai trouvé j'ai modifié le formulaire en retirant le hidden et j'ai modifié le boutton radio
    <input type='radio' name='iden' value=' ".$mess['article_id']."'/>
    

    Et encore merci !! ^_^ !!
    1. ben oui, mais je vois aussi que ya beaucoup de choses qui vont pas !

      t'as ton echo("<form method='POST' action='voirarticle.php'> dans ton while !!

      du coup tas un paquet de balises form d'ouvertes qui sont jamais fermées !

      donc là je veux bien t'aider, mais demain matin XD
      1. while( $mess = mysql_fetch_array($article) )
        {  
                echo("<form method='POST' action='voirarticle.php'>
        		<tr>
        		<td align='center'>".$mess['article_id']. "</td> 
        		<td align='center'>".$mess['titre']. "</td>  
        		<td align='center'>".$mess['nom_categorie']. "</td>  
        		<td align='center'>".$mess['pseudo'].  "</td>
        		<td align='center'>".$mess['date'].  "</td>
        		<td align='center'><a href='modifart.php?arteid=".$mess['article_id']."'><img src='imgs/admin/edit.png' title='Modifier article' border='0'/></a></td>
        		<td align='center'><a href='regart.php?arteid=".$mess['article_id']."'><img  src='imgs/admin/copy.png' title='Voir article' border='0' /></a></td>
        	         <td align='center'> <input type='radio' name='iden' id='iden' value='supprime'/>  				   
                         <input type='hidden' name='artid' value='".$mess['article_id']."'/> </td>
        		</tr>");
         }
        echo("</table>
        


        Comme vous pouvez le voir un seul input inclue dans le while !!
        1. heu
          tu as un seul bouton input, ou c'est un par produit ?
          parce que là ca risque pas de marcher vu comme c'est fait ^^
          1. mais mon input est dans le form en haut de
            <input type='submit' name='enregistrer' value='Valider'>

            Et c'est un seul article qui doit être supprimer pour l'instant !!
            1. Ben oui ca métonne pas, ton form est jamais fermé, du coup ben ca prend le dernier champ ...
              il te faut un echo "</form>"; à la derniere ligne de ton while

              enfin c'est bien sensé supprimer qu'un seul article, ou bien plusieurs ?
              1. Oui c vrai mais comment je récupère l'id j'ai essayé avec un input hidden dans le formulaire mais ça me renvoie le dernier id !!
                <input type='hidden' name='artid' value='".$mess['article_id']."'/>
                
                1. Ben oui, ton insert faut pas le faire dans la page de ton formulare, mais dans la page de traitement du form
                  1. oui
                    et normalement en faisant cela ça récupère l'id que l'utilisateur veut supprimer
                    j'ai essayer avec le $mess['article_id'] et avec un hidden dont la valeur serait $mess['article_id'] !!
                    Mais c'est toujours pareil ça me renvoie le dernier id non celui qu'il a choisi !!
                    while( $mess = mysql_fetch_array($article) )
                    {  
                            echo("<form method='POST' action='voirarticle.php'>
                    		<tr>
                    		<td align='center'>".$mess['article_id']. "</td> 
                    		<input type='hidden' name='artid' value='".$mess['article_id']."'/>
                    		<td align='center'>".$mess['titre']. "</td>  
                    		<td align='center'>".$mess['nom_categorie']. "</td>  
                    		<td align='center'>".$mess['pseudo'].  "</td>
                    		<td align='center'>".$mess['date'].  "</td>
                    		<td align='center'><a href='modifart.php?arteid=".$mess['article_id']."'><img src='imgs/admin/edit.png' title='Modifier article' border='0'/></a></td>
                    		<td align='center'><a href='regart.php?arteid=".$mess['article_id']."'><img  src='imgs/admin/copy.png' title='Voir article' border='0' /></a></td>");
                    		if ($profil['identifiant'] == "admin")
                    		{
                    		    echo ("<td align='center'> <input type='radio' name='iden' id='iden' value='supprime'/> "); 				   
                                echo("</td>");
                    		}
                    		echo ("</tr>");
                     }
                    
                    1. Heu
                      ôtes moi d'un doute ...
                      ton insert là, tu veux bien le faire quand l'utilisateur clique sur le bouton supprime ?

                      et là, ton insert, il serait dans la page où tu as ton formulaire ?
                      1. j'ai mis mon insert à la fin du while et ça renvoie le dernier id !!
                        1. Ben donc, ca vient pas de là l'erreur, mais de ta requete select du dessus !
                          si ton $mess['article_id'] est vide c'est pas de la faute de ton insert ^^
                          1. ça me renvoie ceci
                            INSERT INTO supprimer (id, titre, nom_categorie, article, pseudo, date) SELECT article_id, titre, nom_categorie, article, pseudo, date FROM articles WHERE article_id= "à chaque id c'est -a- dire pour  tous les id "
                            
                            • 1
                            • 2
                            • 3