Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1240 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Vérifier si un id existe avant un DELETE?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vérifier si un id existe avant un DELETE?

n°463458
Maxime
Posté le 21-07-2003 à 15:31:54  profilanswer
 

Salut all,
 
bah voilà, j'aurais voulu savoir comment vérifier si un id existe avant de faire un requête SQL :
 
Exemple :
$sql = DELETE FROM $tbl WHERE id='$id'
 
et quand l'id n'existe pas, bah il s'en fou, il me retourne "supprimer avec succes" (alors que quedal à été suprimer).
 
Voilà :p , et merci d'avance.


Message édité par Maxime le 24-07-2003 à 00:51:13
mood
Publicité
Posté le 21-07-2003 à 15:31:54  profilanswer
 

n°463470
claque2000
GamerTag : claquos2000
Posté le 21-07-2003 à 15:39:10  profilanswer
 

Maxime a écrit :

Salut all,
 
bah voilà, j'aurais voulu savoir comment vérifier si un id existe avant de faire un requête SQL :
 
Exemple :
$sql = DELETE FROM $tbl WHERE id='$id'
 
et quand l'id n'existe pas, bah il s'en fou, il me retourne "supprimer avec succes" (alors que quedal à été suprimer).
 
Voilà :p , et merci d'avance.


mysql_info, mysql_affected_rows en fonctions php ca devrait t'aider ....
Et ca m'etonnerait que mysql te retourne un code positif si aucune ligne n'a ete touchée, donc mysql_errno devrait te servir.   Enfin, dans la norme sql, si peu respectée par mysql, y'a un code d'erreur (plutot de retour disons) suite à une requête, quelque soit le résultat, avec un code spécifique pour aucune ligne touchée


---------------
Linux registered user #352556
n°463489
Maxime
Posté le 21-07-2003 à 15:49:00  profilanswer
 

donc en gros je fait
 

Code :
  1. $sql = "DELETE FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_affected_rows($req);
  4. if (empty($res))
  5. {
  6.   echo "Movais ID";
  7. }
  8. else
  9. {
  10.   echo "adieu $id";
  11. }


 
?  :D  
 
sinon cest quoi la difference entre mysql_affected_rows() et mysql_num_rows() ?


Message édité par Maxime le 21-07-2003 à 15:49:33
n°463501
omega2
Posté le 21-07-2003 à 15:54:53  profilanswer
 

Maxime a écrit :

donc en gros je fait
 

Code :
  1. $sql = "DELETE FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_affected_rows($req);
  4. if (empty($res))
  5. {
  6.   echo "Movais ID";
  7. }
  8. else
  9. {
  10.   echo "adieu $id";
  11. }


 
?  :D  
 
sinon cest quoi la difference entre mysql_affected_rows() et mysql_num_rows() ?

Le premier donne le nombre de lignes modifié par la requête (insert, update) tandis que le second donne le nombre de valeurs retournées par la requête (select).

n°463508
claque2000
GamerTag : claquos2000
Posté le 21-07-2003 à 15:56:39  profilanswer
 

Maxime a écrit :

donc en gros je fait
 

Code :
  1. $sql = "DELETE FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_affected_rows($req);
  4. if (empty($res))
  5. {
  6.   echo "Movais ID";
  7. }
  8. else
  9. {
  10.   echo "adieu $id";
  11. }


?  :D  
sinon cest quoi la difference entre mysql_affected_rows() et mysql_num_rows() ?


 
la doc sur php.net pour t'aider. Bon en gros et c le principal num_rows ca marche qu'avec select, affected_rows c pour insert, update, delete. Sachant que si y'a pas de clause where, affected_rows te renvoie zero. C'est pour cela que je t'ai parlé de code de retour suite à un ordre sql. A ce nivo la, la doc mysql devrait etre parlante (ca fe un moment que j'ai plonge la dedans dc jpeux pas plus t'aider pour le code si aucune ligne affectée, mais il me semble que c 100). Pour ton code, faut tester avec des petits echos si ca marche. A priori, je dirais que ca passe.
 
 


---------------
Linux registered user #352556
n°463519
Maxime
Posté le 21-07-2003 à 16:01:41  profilanswer
 

donc dans la théorie, avec ce que j'ai écrit, si l'id nest pas bon ( donc rien na été affecter ), ca me revoie 0
 
sinon je testerais avec un
$erreur = mysql_errno();
echo $erreur;
 
Merci pour votre aide  :hello:  :hello:  :jap:  
 
PS : je peut pas tester ici, pour ca je dit pas si ca marche ou pas  :o  :D

n°463521
claque2000
GamerTag : claquos2000
Posté le 21-07-2003 à 16:02:14  profilanswer
 

omega2 a écrit :

Le premier donne le nombre de lignes modifié par la requête (insert, update) tandis que le second donne le nombre de valeurs retournées par la requête (select).


 :pfff:  
attention, num_rows retourne aussi un nombre de lignes. Tout dépend si tu considères une "valeur" comme étant un champ d'une table de ta bd ou une ligne ...


---------------
Linux registered user #352556
n°463523
claque2000
GamerTag : claquos2000
Posté le 21-07-2003 à 16:03:19  profilanswer
 

Maxime a écrit :

donc dans la théorie, avec ce que j'ai écrit, si l'id nest pas bon ( donc rien na été affecter ), ca me revoie 0
 
sinon je testerais avec un
$erreur = mysql_errno();
echo $erreur;
 
Merci pour votre aide  :hello:  :hello:  :jap:  
 
PS : je peut pas tester ici, pour ca je dit pas si ca marche ou pas  :o  :D  


Ah mais de rien. C kler, essayes ta requete sur une valeur dont tu sais qu'aucune ligne sera affectee et tu auras le code d'erreur.


---------------
Linux registered user #352556
n°463533
Maxime
Posté le 21-07-2003 à 16:07:17  profilanswer
 

Je doit format, pour ca je peut pas tester :o
Bon allé a dans 1-2 jours pour le rapport :D
 
Merci encore :hello:


Message édité par Maxime le 23-07-2003 à 23:18:13
n°466256
Maxime
Posté le 23-07-2003 à 23:15:34  profilanswer
 

bon ca ne fonctionne pas :/
j'ai fait :
 

Code :
  1. $sql = "DELETE FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_num_rows($req);
  4. $rff = @mysql_affected_rows($req);
  5. $erreur = mysql_errno();
  6. echo $erreur;
  7. echo $res;
  8. echo $rff;


 
$erreur reste à 0 et $res et $rff dont vide (que l'id soit valid ou inéxistant) :/


Message édité par Maxime le 23-07-2003 à 23:18:46
mood
Publicité
Posté le 23-07-2003 à 23:15:34  profilanswer
 

n°466286
omega2
Posté le 23-07-2003 à 23:29:20  profilanswer
 

Maxime a écrit :

bon ca ne fonctionne pas :/
j'ai fait :
 

Code :
  1. $sql = "DELETE FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_num_rows($req);
  4. $rff = @mysql_affected_rows($req);
  5. $erreur = mysql_errno();
  6. echo $erreur;
  7. echo $res;
  8. echo $rff;


 
$erreur reste à 0 et $res et $rff dont vide (que l'id soit valid ou inéxistant) :/

Heu, comment tu sais que c'est $erreur qu'est a zéro?
Ca pourait très bien être n'importe laquelle des trois variables vu que les deux autres seraient vide.  ;)
Met un retour a la ligne a la fin de chaque echo comme ça, tu sauras vraiment d'où viens le 0. ;)

n°466292
mrbebert
Posté le 23-07-2003 à 23:33:05  profilanswer
 

Si id est un entier, ne le met pas entre ' ' ;)  
 
Sinon, c'est normal que tu n'ais pas d'erreur puisque ta requête est bonne. Il y a une différence entre une requête incorrecte et une requête correcte qui ne fait rien :)

n°466297
Maxime
Posté le 23-07-2003 à 23:37:02  profilanswer
 

omega2 a écrit :

Heu, comment tu sais que c'est $erreur qu'est a zéro?
Ca pourait très bien être n'importe laquelle des trois variables vu que les deux autres seraient vide.  ;)
Met un retour a la ligne a la fin de chaque echo comme ça, tu sauras vraiment d'où viens le 0. ;)


 
je vien de faire
 

Code :
  1. echo "erreur : $erreur";
  2.     echo "<br />";
  3.     echo "res : $res";
  4.     echo "<br />";
  5.     echo "rff : $rff";


 
Et je puis donc confirmer que c'est bien erreur qui reste à 0 :D

n°466298
Maxime
Posté le 23-07-2003 à 23:37:28  profilanswer
 

mrBebert a écrit :

Si id est un entier, ne le met pas entre ' ' ;)  
 
Sinon, c'est normal que tu n'ais pas d'erreur puisque ta requête est bonne. Il y a une différence entre une requête incorrecte et une requête correcte qui ne fait rien :)  


 
c'est les '' qui font que ca foire?

n°466301
Maxime
Posté le 23-07-2003 à 23:40:51  profilanswer
 

Au faite, ceci fonctionne nikel :

Code :
  1. $sql = "SELECT * FROM $tbl WHERE id='$id'";
  2. $req = @mysql_query($sql);
  3. $res = @mysql_num_rows($req);
  4. if (empty($res))
  5. {
  6.   echo "Mauvais ID";
  7. }
  8. else
  9. {
  10. // affichage
  11. }


Message édité par Maxime le 25-07-2003 à 19:59:14
n°466307
mrbebert
Posté le 23-07-2003 à 23:44:21  profilanswer
 

Maxime a écrit :

c'est les '' qui font que ca foire?

Je sais pas mais dans le doute ... :D  
En tout cas, sans les quotes, ca marche c'est sur :)  
(et au moins, ca te fait une erreur si ta variable $id n'est pas initialisée)

n°466312
Maxime
Posté le 23-07-2003 à 23:49:22  profilanswer
 

mrBebert a écrit :

Je sais pas mais dans le doute ... :D  
En tout cas, sans les quotes, ca marche c'est sur :)  
(et au moins, ca te fait une erreur si ta variable $id n'est pas initialisée)


Je confirme que ca ne change rien :D

n°468079
Maxime
Posté le 25-07-2003 à 19:03:38  profilanswer
 

up :bounce:

n°468084
omega2
Posté le 25-07-2003 à 19:07:23  profilanswer
 

Pourquoi "UP!"?
Le problème n'est toujous pas réglé?

n°468121
Maxime
Posté le 25-07-2003 à 19:58:48  profilanswer
 

bah nan c pas regler  :heink:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Vérifier si un id existe avant un DELETE?

 

Sujets relatifs
[ Delphi ] Vérifier le statut d'une machine et d'un programme serveursgestion de la mémoire cache, une bibliotheque existe ?
[PHP/ACCESS] requete UPDATE ne passe pas alors que INSERT et DELETE siGTK pour windows, ça existe ?
Delete de BlaBla@Programmation :o[PHP] Vérifier l'existence d'un fichier
Existe t'il en C un fonction md5() comme en PHPgenerateur de base mysql a partir d'une analyse merise ca existe?
[ JS ] A la recherche du bon evenement... ( si il existe )[asp]ça existe les fonctions , procedures en asp?
Plus de sujets relatifs à : Vérifier si un id existe avant un DELETE?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR