select et controle

Eléphant du PHP | 227 Messages

07 janv. 2006, 13:30

Bonjour à tous,

Lorsque j'essaye de controler l'extraction fait dans une base, elle me donne toujours la valeur 1, quelle existe ou pas.
$sql_coord = "SELECT titre FROM rech_coord_tbl WHERE nom='".$_SESSION['nom']."'";
		$req = mysql_query($sql_coord) or die('Erreur SQL !'.$sql_coord.'<br>'.mysql_error());  
		$res_coord = mysql_num_rows($req); 
		 
		if($res_coord != 0) { 		
		echo 'existe deja dans la base  <br>';
		print_r($res_coord);			
		}
		else{		
		echo 'inexistant dans la base <br>';	
		print_r($res_coord);	
		}
J'ai mis le bout de code.
Je m'explique:

Ce que je veux faire c'est juste de savoir si le champ titre de la base est renseigner ou non d'après le nom de la personne connectée.

POurriez vous m'expliquer ou est mon erreur et pourquoi ca marche pas ?

Merci :D
Modifié en dernier par gesualda le 07 janv. 2006, 16:17, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 janv. 2006, 14:13

Salut,

si une personne est déjà enregistrée, un select sur la colonne titre de la ligne correspondante te renverra toujours 1 ligne, que la colonne titre soit renseignée ou non.

Donc plutôt que de tester le nombre de ligne retournée, teste plutôt la valeur de la colonne titre récupérée.

Ou alors teste dans ta requête si ta colonne titre n'est pas nulle, si elle est initialisée comme ça.

Eléphant du PHP | 227 Messages

07 janv. 2006, 15:27

Merci ouckileou d'avoir répondu,

j'ai testé la valeur récupéré de plusieurs facon, toujours le meme problème. Que je fasse:
if(empty($res_coord)) { 
ou
if($res_coord == '') { 
ca ne marche pas ca me donne toujours le meme résultat

Comment procéder pour tester dans la requete ?

Merci :oops:

Eléphant du PHP | 227 Messages

07 janv. 2006, 15:47

A force de passer des heures à chercher on arrive à trouver certainement formule qui fonctionnent:
J'ai donc fais cela:
$sql_coord = "SELECT titre FROM rech_coord_tbl WHERE nom='".$_SESSION['nom']."'";
		$req = mysql_query($sql_coord) or die('Erreur SQL !'.$sql_coord.'<br>'.mysql_error());  
		$res_coord = mysql_num_rows($req);
		$res_row = mysql_fetch_assoc($req);
		$civil  = $res_row['titre']; 
		 
		if($civil == '' ) { 		
		echo 'inexistant dans la base <br>';	
		print_r($civil);			
		}
		else{	
		echo 'existe deja dans la base  <br>';	
					
		print_r($civil);	
		}
Pas de problème, ca fonctionne, mais est ce une bonne syntaxe ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

07 janv. 2006, 15:57

Oui, car cette fois ci tu contrôles bien la valeur de "titre" (vide ou non), alors que dans ton message tu controlais encore le nombre de ligne (avec mysql_num_rows, qui ne sert à rien maintenant)

Tu peux très bien avoir une ligne correspondant à l'utilisateur, dans laquelle la colonne "titre" est vide, donc une requête dessus va te renvoyer une valeur vide, mais mysql_num_rows renverra quand même 1, puisque tu auras trouvée une ligne.

Est-ce que tu comprends la différence ?

Eléphant du PHP | 227 Messages

07 janv. 2006, 16:16

Yep, je pense que la c'est bon, je vais prendre des notes.
Merci pour ton explication, qui m'a bien aidé.

bonne après midi

gesualda :D