Tester l'existence d'une valeur au sein d'une table

Philou
Invité n'ayant pas de compte PHPfrance

29 mars 2008, 15:45

Bonjour à tous,
Comme l'indique le sujet ,je voulais savoir s'ile xiste un moyen sql de vérifier qu'une valeur existe bien au sein d'une colonne d'une table.

En effet,il se peut que celle -ci n'existe pas et alors implique une gestion differente.

Code : Tout sélectionner

CREATE TABLE dossierDPE ;
//Attention IdCommande nous sera renvoyé par Ajax en methode post
	$oPDOStatement=$oConnectionDpe->query('SELECT typeTransaction FROM dossierDPE WHERE idCommande='.$_POST['IdCommande']);
				while($aRow=$oPDOStatement->fetch()){
					switch($aRow['typeTransaction']){
						case '1':$sTypeErnt='Location';break;
						case '2':$sTypeErnt='Location saisonniere';break;
						default:$sTypeErnt='Vente';break;
					}
				}
				
				echo 'Le serveur Dpe a indiqué qaue nous étions en présence d\'une '.$sTypeErnt;	
	}else{
		throw new Exception('Connection au serveur Dpe impossible');
	}
en effet,le code precedent n'est vraui que si $_POST['IdCommande'] existe et ce n'est pas forcement le cas.

Commen,t procédeirez vous pour tester la possiblité qu'elle n'existe pas et declencher une action en fonction du resultat.
merci a tous

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mars 2008, 12:16

Un simple SELECT ou un SELECT COUNT(...) te permet facilement de savoir si un enregistrement existe ou pas. Si l'élément n'existe pas, le SELECT ne te retournera rien, quant au count, il t'indiquera directement 0.

Tu peux également compter le nombre d'enregistrements retournés avec mysql_num_rows(), ou plus simplement encore - puisque d'après ton code, ta requête ne devrait jamais retourner plus d'un seul enregistrement - remplacer la boucle while par un simple if. Pas besoin de boucler sur un seul élément, et le if() te permet comme le while de n'exécuter le code que s'il y a un enregistrement trouvé.
Il te permet également d'ajouter un else pour gérer le cas ou aucun enregistrement n'a été trouvé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...