Probleme insert into

Résolu
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   -  
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   -
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 !!

45 réponses

paglop !!! Messages postés 635 Date d'inscription   Statut Membre Dernière intervention   234
 
Tu n'a pas la connexion a la base de donnée ?

https://www.commentcamarche.net/contents/784-php-bases-de-donnees
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
si je l'ai mis, je l'ai pas afficher !!
0
hotrod
 
Tu le caractère quote juste avant titre de ton select.

Select (article_id, 'titre,
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
c'est toujours pareil !!
Mais comment on fait un insert into en incluant des condition !!
S'IL VOUS PLAIT !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
$supprime =mysql_query("DELETE FROM articles WHERE article_id=".$mess['article_id']) or exit(mysql_error());

=>

$supprime =mysql_query("DELETE * FROM articles WHERE article_id=".$mess['article_id'].";") or exit(mysql_error());
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
non j'ai demander comment en insert des champs dans une table en incluant des conditions !!!
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
et bien la codition where est la pour ca !!

je vois pas d autres solutions ou alors expose nous ton probleme plus en détail ;)
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
j'ai fait ceci
 $supp = "INSERT INTO supprimer (id, titre, nom_categorie, article, pseudo, date) SELECT article_id, titre, nom_categorie, article, pseudo, date FROM articles Where article_id=".$mess['article_id'] or die('Erreur SQL !'.$supp.'<br>'.mysql_error());

Mais ça marche pas !!!
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Ton "or die('Erreur SQL !'.$supp.'<br>'.mysql_error());" n'a rien à faire là, faut le faire sur le mysql_query :

$supp = "INSERT INTO supprimer (id, titre, nom_categorie, article, pseudo, date) SELECT article_id, titre, nom_categorie, article, pseudo, date FROM articles Where article_id='".$mess['article_id'] ."'";
mysql_query($supp) or die(mysql_error());

au passage tavais un probleme de ' dans ta requete, dans ta clause where
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
$supp = "INSERT INTO supprimer (`id`, `titre`, `nom_categorie`, `article`, `pseudo`, `date`)
SELECT articles.article_id, articles.titre, articles.nom_categorie,articles.article, articles.pseudo, articles.date FROM articles
HAVING `article_id`='".$mess['article_id']."';";
//Attention aux ` et pas ' : ` sert pour le nom d un champ tandis que 'sert pour une valeur (texte ou autre)
// Attention !! il y a 3 guillemets apres article_id = ' " . $mess[..]. " ' ; " ;

tient moi au jus ;)
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
j'ai essayer mais ça me retourne la derniere valeur
<td align='center'><form method='POST' action='voirarticle.php'> <input type='radio' name='iden' id='iden' value='supprime'/> <input type='hidden' name='artid' value=".$mess['article_id']."/>"); 
if(isset($_POST['enregistrer']))
{
    $ide = trim($_POST['artid']);
    if(isset($_POST['iden']))
   {
     $supp = "INSERT INTO supprimer (id, titre, nom_categorie, article, pseudo, date) VALUES (NULL,
                 '".$mess['titre']."', '".$mess['nom_categorie']."', '".$mess['article']."', '".$mess['pseudo']."',   
                '".$mess['date']."') Where article_id=".$ide."'" ;mysql_query($supp) or die(mysql_error());

     if(mysql_query($supp))
    {
	$supprime =mysql_query("DELETE FROM articles WHERE article_id=".$mess['article_id']) or 
       exit(mysql_error()); 			   
    }
  }
}

ça me renvoie la dernière valeur et ce message d'erreur :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Where article_id=18/'' at line 1
Et avec le code que tu ma donner
$supp = "INSERT INTO supprimer (`id`, `titre`, `nom_categorie`, `article`, `pseudo`, `date`)
              SELECT articles.article_id, articles.titre, articles.nom_categorie,articles.article, articles.pseudo, 
              articles.date 
              FROM articles
              HAVING `article_id`='".$mess['article_id']."';"; mysql_query($supp) or die(mysql_error());

ça insert tous les champs !!
0
le père
 
Bonjour

Pas de WHERE dans un INSERT !

le WHERE teste une condition sur un enregistrement, or cet enregistrement n'existe pas encore puisque tu cherches à l'insérer. Quelle conditions veux-tu vérifier sur un enregistrement qui n'existe pas ? Ça ne veut rien dire !
Par contre, tu peux vérifier (en PHP) tout ce que tu veux avant et choisir de faire ou de ne pas faire un INSERT

C'est vraiment un INSERT que tu cherches à faire, ou un UPDATE ?
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
bonjour,
le but c'est quand l'utilisateur veut supprimer un article, cet article soit insérer dans la table supprimer avec un nouveau id et que ce même article soit supprimer de la table article !!
0
le père
 
Ton but ne change rien aux règles de mysql ! Il ne peut pas y avoir de WHERE dans un INSERT, parce que ça ne voudrait rien dire. D'ailleurs peux-tu me dire quel est l'intérêt du Where article_id=".$mess['article_id'] dans ta requête d'insertion ? Par définition, le WHERE restreint ta requête aux lignes qui vérifient ta condition, et ta ligne n'existe pas encore. Ne mets pas le Where et c'est tout.

Au passage, je viens de voir que tu faisais deux fois l'INSERT (enfin, tu le ferais 2 fois s'il ne plantait pas) :
;mysql_query($supp) or die(mysql_error());
     if(mysql_query($supp))

Il y a bien deux appels à mysql_query($supp), là.
Le test if(mysql_query($supp)) ne sert à rien : si le 1er appel rend faux, le die est exécuté et le script s'arrête. Donc pas besoin de if pour tester s'il faut continuer : c'est déjà fait.
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
et oui, comme je l ai préciser plus haut, c est pas un where dans le insert pour tester une condition.. mais having ;)
0
le père
 
euh... non plus. Dans l'exemple que tu donnes, le HAVING est syntaxiquement dans la sous-requête SELECT, il ne s'applique pas au INSERT. On aurait pu (et même dû) mettre un WHERE à cet endroit là
0
le père
 
Je m'étais basé (tard hier soir...) sur la requête du message 11 de yoshiro. Ce que j'ai écrit est vrai, mais ne va sûrement pas résoudre son problème. S'il enlève le Where de la requête du message 11, il n'y a plus d'erreur mysql mais ça ne fait sans doute pas ce qu'il veut.
0
le père
 
Après avoir relu depuis le post 1 et fait quelques essais, je suis d'accord avec jeangilles (post 9) sauf que si tu ne veux pas conserver l'id comme tu le dis dans le message 13, il ne faut pas le mettre dans la liste des champs :
$supp = "INSERT INTO supprimer ( titre, nom_categorie, article, pseudo, date) SELECT titre, nom_categorie, article, pseudo, date FROM articles Where article_id='".$mess['article_id'] ."'";
Mais il faudra bien donner une valeur au champ id. Soit il est en auto-increment et il n'y a rien à faire, soit il y a encore une modification pour donner une valeur (mais laquelle ?)
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
"je suis d'accord avec jeangilles (post 9)"

Ha ben jcommencais a me dire que je rouillais avec le temps ... surtout que jvoyais pas ce qui n'allait pas ^^
0
le père
 
Je ne suis pas sûr que le fait que je suis d'accord doivent te rassurer ^^
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Mais si, parce que si j'ai faux, au moins jserai pas tt seul :)
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
mais j'ai besoin du where car l'utilisateur choisi quel article qu'il veut supprimer a travers un formulaire
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'/> "); 
.......

je recupere l'id de l'article qu'il veut supprimer. Donc c'est pour ça que j'ai du where ou si il y a une autre méthode plus simple je l'accepte.
0