Tester si un enregistrement existe ou non.

Tester si un enregistrement existe ou non. - SQL/NoSQL - Programmation

Marsh Posté le 10-11-2005 à 16:27:36    

Bonjour,
 
je recherche comment tester si un enregistrement existe dans une table.
 
 
Exemple :
 
Une table a 3 champs toto, titi et tata de type int.
 
Je voudrai trouver une requete qui me dit si il existe ou non par exemple l'enregitrement :
toto=1, titi=3 et tat=5
 
Si le couple existe ca me renverrai vrai sinon faux, ou un truc dans le style.
 
Voilà ce que je veu, merci d'avance.

Reply

Marsh Posté le 10-11-2005 à 16:27:36   

Reply

Marsh Posté le 10-11-2005 à 16:42:00    

quel SGBD ?

Reply

Marsh Posté le 10-11-2005 à 16:42:38    

a pardon, sous mysql.

Reply

Marsh Posté le 10-11-2005 à 16:46:32    

Code :
  1. SELECT COUNT(*)
  2. FROM maTable
  3. WHERE toto = 1
  4. AND titi = 3
  5. AND tata = 5;


 
Si la table est grosse, tu peux limiter au premier enregistrement trouvé ...

Reply

Marsh Posté le 10-11-2005 à 16:58:25    

oui pas bête.
 
j'était partie dans un  :
 

Code :
  1. requete = mysql_query('SELECT num_carte from autorisation WHERE toto=\'$toto\' and titi=\'$titi\' and tata=\'$tata\'');
  2. if (!$requete)
  3. {
  4.     die('Requête invalide : ' . mysql_error());
  5. }
  6.     $result = mysql_result($requete,1);


 
C'est tout de même plus compliqué.
 
Merci !

Reply

Marsh Posté le 10-11-2005 à 17:20:56    

En php ca donnera :
 

Code :
  1. $requete = mysql_query('SELECT COUNT(*) from autorisation WHERE toto=1 and tutu=2 and tata=3');
  2. $result = mysql_result($requete,0);
  3. if ($resuslt=0)
  4. {
  5.        $droit="existe pas";
  6. }
  7. else
  8. {
  9.        $droit="existe";
  10. }
  11. echo $droit;


 
Est-ce juste et y a t'il plus simple ?
Mois ca me retourne toujours "existe" même si j'en tre une combinaison qui n'existe pas.


Message édité par Vilo5 le 10-11-2005 à 17:21:31
Reply

Marsh Posté le 10-11-2005 à 18:04:01    

resuslt !!!

Reply

Marsh Posté le 10-11-2005 à 21:47:41    

Oui c'est vrai, je dirai même result==0 et non =0.
 
Mais ca ne regles pas tout, car maintenant que le test est corect ca me renvoir tjs "existe pas".

Reply

Marsh Posté le 10-11-2005 à 21:55:25    

et si tu remplaces par un fetch ? (mysql_fetch_row ou équivalent)

Reply

Marsh Posté le 11-11-2005 à 00:17:40    

Beegee a écrit :

et si tu remplaces par un fetch ? (mysql_fetch_row ou équivalent)


 
Oui ce que tu dit n'est pas bêtes et je pense que cela doit marcher, l'erreur viens bien de là.
 
Mais j'ai trouvé une autre solution.
 
en faite : "$result = mysql_result($requete,0);" récupère une valeur,
et "$result = mysql_fetch_row($requete,0);" récupère un tableau de valeur.
 
Or le "SELECT COUNT(*)" récupère 3 valeurs, toto, titi et tata donc le mysql_result était mal chhoisi.
Il me suffit donc de faire "SELECT COUNT(toto)" avec "$result = mysql_result($requete,0);" puisque de toute façon je veu juste compter un truc pour savoir si le couple existe.
 
Voilà maintenant ca marche et ca donne çà :

Code :
  1. $requete = mysql_query('SELECT count(toto) as nb from autorisation where toto=\'$toto\' and titi=\'$titi\' and tata=\'$tata\'');
  2. $result = mysql_result($requete,0);
  3. if ($result==0)
  4.     {
  5.        $droit="0";
  6.     }
  7. else
  8.     {
  9.        $droit="1";
  10.     }
  11. return $droit;


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed