Problème requete delete en php
Résolu/Fermé
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
-
10 janv. 2012 à 14:57
le père - 10 janv. 2012 à 16:56
le père - 10 janv. 2012 à 16:56
A voir également:
- Problème requete delete en php
- Just delete me - Guide
- Hiberfil.sys delete - Guide
- Easy php - Télécharger - Divers Web & Internet
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Php natif - Forum PHP
7 réponses
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
Modifié par vordano le 10/01/2012 à 15:07
Modifié par vordano le 10/01/2012 à 15:07
ta requète est fausse, pourquoi tu met des apostrophes autour du nom de ta table et du nom de ton champ ????
en plus je crois que ta variable $num ne s'interprète pas et il manque la concaténation de chaine autour de ton $num.
et juste pour l'esthétique, met le code pour la connexion à la db en dehors de ton <select></select> (en html t'es pas sensé refermer une balise père tant que les balises fils ne sont pas fermé, donc ne prend pas cette mauvaise habitude avec le php). imagine une porte qui est la balise père et tes jambes sont la balise fils, là t'es en t'as fermé la balise père (la porte) sur la balise fils (tes jambes).
en plus je crois que ta variable $num ne s'interprète pas et il manque la concaténation de chaine autour de ton $num.
et juste pour l'esthétique, met le code pour la connexion à la db en dehors de ton <select></select> (en html t'es pas sensé refermer une balise père tant que les balises fils ne sont pas fermé, donc ne prend pas cette mauvaise habitude avec le php). imagine une porte qui est la balise père et tes jambes sont la balise fils, là t'es en t'as fermé la balise père (la porte) sur la balise fils (tes jambes).
Question bête : su tu fais un "SELECT * FROM sortie WHERE N°Sortie=$num", est-ce que tu récupères bien au moins un enregistrement ?
Autre suggestion : as-tu fait un echo $requete1 ?
Autre suggestion : as-tu fait un echo $requete1 ?
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
10 janv. 2012 à 15:30
10 janv. 2012 à 15:30
- $requete2= " SELECT * FROM sortie WHERE 'N°Sortie'='$num' ";
-$result2= mysql_query($requete2,$db) or die ("erreur dans la requete2".mysql_error());
echo "$result2";
=> Resource id #6 Je comprends pas le résultats
-$result2= mysql_query($requete2,$db) or die ("erreur dans la requete2".mysql_error());
echo "$result2";
=> Resource id #6 Je comprends pas le résultats
$requete2= " SELECT * FROM sortie WHERE 'N°Sortie'='$num' ";
Pourquoi $requete1 est-il devenu $requete2 ?
Et ne me dis pas que tu as obtenu ça en faisant un echo $requete1, tu t'e contenté de recopier ton code
=> Resource id #6 Je comprends pas le résultats
Ce résultat est normal, une requête renvoie une ressource.
Pour voir s'il y a quelque chose dedans, tu peux faire echo mysql_num_rows($result2);
Pourquoi $requete1 est-il devenu $requete2 ?
Et ne me dis pas que tu as obtenu ça en faisant un echo $requete1, tu t'e contenté de recopier ton code
=> Resource id #6 Je comprends pas le résultats
Ce résultat est normal, une requête renvoie une ressource.
Pour voir s'il y a quelque chose dedans, tu peux faire echo mysql_num_rows($result2);
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
10 janv. 2012 à 15:45
10 janv. 2012 à 15:45
Il est devenu 2 car j'ai recréée une requete pour tester ^^
echo mysql_num_rows($num); = >Warning: mysql_num_rows() expects parameter 1 to be resource, string given
Si je comprends bien ça trouve un caractère et comme N°String est un int dans ma base de donnée c'est pour ça que la ligne ne se supprime pas? Si c'est la cas comment changer le caractère en entier?
echo mysql_num_rows($num); = >Warning: mysql_num_rows() expects parameter 1 to be resource, string given
Si je comprends bien ça trouve un caractère et comme N°String est un int dans ma base de donnée c'est pour ça que la ligne ne se supprime pas? Si c'est la cas comment changer le caractère en entier?
1 - echo mysql_num_rows($num); tu as été trop rapide, j'avais corrigé en echo mysql_num_rows($result2);
2 - As-tu bien fait un echo de $requete2, et non pas une simple recopie de ta ligne de code ?
3 - Ça ne dérange pas mysql de comparer une colonne int avec un nombre écrit entre quotes, ce n'est pas le problème
2 - As-tu bien fait un echo de $requete2, et non pas une simple recopie de ta ligne de code ?
3 - Ça ne dérange pas mysql de comparer une colonne int avec un nombre écrit entre quotes, ce n'est pas le problème
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
Modifié par MimiWoOlf le 10/01/2012 à 16:07
Modifié par MimiWoOlf le 10/01/2012 à 16:07
$num = $_POST['sortie'] ; $requete1 ="DELETE FROM sortie WHERE 'N°Sortie' = ".$num." "; $requete2= "SELECT * FROM sortie WHERE 'N°Sortie'=$num"; $result1= mysql_query($requete1,$db) or die ("erreur dans la requete".mysql_error()); $result2= mysql_query($requete2,$db) or die ("erreur dans la requete".mysql_error()); echo "$requete2"; => renvoie SELECT * FROM sortie WHERE 'N°Sortie'=$num mysql_query($requete1,$db) or die ("erreur dans la requete1".mysql_error()); $test=mysql_num_rows($result2); echo "$test"; => Me renvoie 0
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
10 janv. 2012 à 16:17
10 janv. 2012 à 16:17
juste un ptit commentaire:
tu devrais éviter d'utiliser des caractère spéciaux/lettres avec accent dans le nom de tes colonnes
et pense a sortir de ta chaine quand tu ajoute la valeur d'une variable dans ta requète, c'est pas forcément grave si tu utilise la quote qui permet d'interpreter le php (faut juste pas se tromper, moi je me trompe toujours).
seulement si tu fait la même chose dans un autre language, ça ne passeras pas car la variable ne seras pas interprété par le compilateur ou l'interpreteur...
tu devrais éviter d'utiliser des caractère spéciaux/lettres avec accent dans le nom de tes colonnes
et pense a sortir de ta chaine quand tu ajoute la valeur d'une variable dans ta requète, c'est pas forcément grave si tu utilise la quote qui permet d'interpreter le php (faut juste pas se tromper, moi je me trompe toujours).
seulement si tu fait la même chose dans un autre language, ça ne passeras pas car la variable ne seras pas interprété par le compilateur ou l'interpreteur...
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
10 janv. 2012 à 16:25
10 janv. 2012 à 16:25
Oui c'est ce que je pensais, j'ai regarder notamment pour N°Sortie mais aucune erreur ici. La prochaine fois je changerai quand même merci =)
echo "$requete2"; => renvoie SELECT * FROM sortie WHERE 'N°Sortie'=$num
Ça j'avoue que je ne comprends pas du tout...$num devrait être remplacé par sa valeur dans une chaine entre doubles quotes.
Que dit un echo $num,$requete1?
Ça j'avoue que je ne comprends pas du tout...$num devrait être remplacé par sa valeur dans une chaine entre doubles quotes.
Que dit un echo $num,$requete1?
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
10 janv. 2012 à 16:22
10 janv. 2012 à 16:22
echo $num,$requete1; => 4 ,DELETE FROM sortie WHERE 'N°Sortie' = 4
4 car j'ai bien choisis la sortie avec comme identifiant pour N°Sortie 4 dans ma liste déroulante
4 car j'ai bien choisis la sortie avec comme identifiant pour N°Sortie 4 dans ma liste déroulante
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
Modifié par MimiWoOlf le 10/01/2012 à 16:32
Modifié par MimiWoOlf le 10/01/2012 à 16:32
SI je t'assure, j'ai mis l'écho =echo $num,$requete1; j'ai sélectionné ma 4ème sortie et sur mon navigateur j'ai bien eu ça => 4 DELETE FROM sortie WHERE 'N°Sortie' = 4 c'est logique car $requete1 = DELETE FROM sortie WHERE 'N°Sortie' = $num et $num vaut 4 car j'ai cliqué sur la sortie n°4
Dans ta première réponse, tu avais une virgule en trop entre 4 et DELETE, elle n'y est plus. Tu as une explication ?
Maintenant, tu as toujours un espace en trop entre 4 et DELETE, ce n'est pas normal.
Il n'est pas facile d'interpréter les informations que tu fournis si elles ne sont qu'à peu près bonnes : la moindre virgule compte en informatique.
Ceci dit, en exécutant la requête1 qui a bien un 4 à la place de $num, ça devrait marcher, non ?
Maintenant, tu as toujours un espace en trop entre 4 et DELETE, ce n'est pas normal.
Il n'est pas facile d'interpréter les informations que tu fournis si elles ne sont qu'à peu près bonnes : la moindre virgule compte en informatique.
Ceci dit, en exécutant la requête1 qui a bien un 4 à la place de $num, ça devrait marcher, non ?
MimiWoOlf
Messages postés
22
Date d'inscription
mardi 3 janvier 2012
Statut
Membre
Dernière intervention
1 novembre 2014
1
10 janv. 2012 à 16:44
10 janv. 2012 à 16:44
Pour ma première réponse oui car j'ai modifié l'echo par echo "".$num.",".$requete"; tout simplement et sa revient au même =)
Oui ça devrait marcher, j'ai ajouté :
if ($result1)
{ echo " sortie supprimé " } et j'ai bien le sortie supprimé pourtant la ligne ne l'est pas dans ma base de donnée. ( Bdd sur phpmyadmin en innodb si sa peut aider)
Oui ça devrait marcher, j'ai ajouté :
if ($result1)
{ echo " sortie supprimé " } et j'ai bien le sortie supprimé pourtant la ligne ne l'est pas dans ma base de donnée. ( Bdd sur phpmyadmin en innodb si sa peut aider)
if ($result1) ne teste pas si quelque chose a été supprimé, mais seulement si la requête s'est bien déroulée. Et s'il n'y avait rien à supprimer, la requête s'est bien déroulée.
J'en reviens à ma remarque initiale : les caractères autour de N°Sortie dans ta requête sont-ils bien des accents graves (apostrophes inversés, touche 7) et surtout pas des simples quotes (touche 4)? Supprime-les.
J'en reviens à ma remarque initiale : les caractères autour de N°Sortie dans ta requête sont-ils bien des accents graves (apostrophes inversés, touche 7) et surtout pas des simples quotes (touche 4)? Supprime-les.
Modifié par le père le 10/01/2012 à 15:08
En espérant que c'est aussi le cas autour de 'N°Sortie', sinon effectivement ça explique le comportement
10 janv. 2012 à 15:12
10 janv. 2012 à 15:21
- $requete1 ="DELETE FROM sortie WHERE N°Sortie = ".$num." "; => la même chose
- $requete1 ="DELETE FROM sortie WHERE N°Sortie = .$num."; => idem
- $requete1 ="DELETE FROM sortie WHERE N°Sortie = '.$num.' "; => idem
- $requete1 ="DELETE FROM sortie WHERE N°Sortie = '$num' "; => idem
Et apparement aucun problème avec $num puisque je fais un echo pour vérifier si je le récupère bien. :(