Probleme insert into
Résoluyoshiro Messages postés 532 Statut Membre -
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
- 1
- 2
- 3
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.
-
Tu n'a pas la connexion a la base de donnée ?
https://www.commentcamarche.net/contents/784-php-bases-de-donnees -
-
-
c'est toujours pareil !!
Mais comment on fait un insert into en incluant des condition !!
S'IL VOUS PLAIT !! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
$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()); -
non j'ai demander comment en insert des champs dans une table en incluant des conditions !!!
-
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 ;) -
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 !!! -
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 -
$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 ;) -
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 !! -
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 ? -
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 !! -
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. -
et oui, comme je l ai préciser plus haut, c est pas un where dans le insert pour tester une condition.. mais having ;)
-
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.
-
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 ?) -
"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 ^^ -
Mais si, parce que si j'ai faux, au moins jserai pas tt seul :)
-
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.
- 1
- 2
- 3