Page 1 sur 1

vérifier si un nom est présent dans un champ d'une table.

Posté : 30 août 2005, 11:19
par yamissa
Bonjour à tous, voila je me demandais si il était possible de vérifier si un nom était présent dant un champ d'une table et en suite de dire:

if (le nom est présent)
{
.......
}
else
{
.....
}

Merci :D .

Posté : 30 août 2005, 11:24
par ouckileou
dans un champ précis dont tu connais le nom ?

si c'est ça bien sûr, tu peux même le faire en SQL directement :
$requete = "SELECT COUNT(*) AS nb_resultat FROM table WHERE nom = '".$nom."'";

Posté : 30 août 2005, 11:52
par yamissa
oui c'est pour un champ précis.
Mais pour la condition comment je fait?

Posté : 30 août 2005, 11:57
par ouckileou
la requête que je t'ai donné te renvoie le nombre de compte ayant la condition vraie, donc ici le champ nom correspondant à ta variable

donc il te suffit de tester ce résultat :
$requete = "SELECT COUNT(*) AS nb_resultat FROM table WHERE nom = '".$nom."'";
$exec = mysql_query($requete);
$resultat = mysql_fetch_array($exec);

if ($resultat['nb_resultat'] > 0) {
   echo 'des lignes existent déjà avec ce nom';
} else {
   echo 'aucune ligne avec ce nom';
}
Après tu fais ce que tu veux dans le if et le else ;)

Posté : 30 août 2005, 14:58
par yamissa
J'ai fait comme tu me la dit mais il me dit :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/6/8/yamissa/identification.php on line 24

Je te met mon code au cas où tu vois une erreur:
<body>
<form method="post" action="identification.php">
<p><input type="text" name="pseudo" size="20"  maxlength="35"><b> votre pseudo</b></p>
<p><input type="password" name="password" size="20" maxlength="35"><b> votre mot de pass</b></p>
<p><input type="submit" value="Envoyer" name="envoyer"></p>
</form>
<?
if(isset($_POST['pseudo']))      $nom=$_POST['pseudo'];
else      $nom="";
if(isset($_POST['password']))      $password=$_POST['password'];
else      $nom="";

mysql_connect("******", "******", "******");
mysql_select_db("yamissa");
$requete = "SELECT COUNT nom AS nb_resultat FROM inscription WHERE nom = '".$nom."'";
$exec = mysql_query($requete); 
$resultat = mysql_fetch_array($exec);

if ($resultat['nb_resultat'] > 0) {
   echo 'ok';
} else {
   echo 'dsl';
}
mysql_close(); 
?>
</body>
Merci :D .

Posté : 30 août 2005, 14:59
par Cyrano
Fais afficher ta requête et essaye de l'exécuter directement dans phpMyAdmin, l'erreur est probablement dans la requête par rapport à un nom de champ ou quelque chose de ce genre.

Posté : 30 août 2005, 15:01
par ouckileou
cette erreur provient souvent du fait que la requête SQL est mauvaise et n'a donc pas renvoyé un jeu de résultats correct, que mysql_fetch_array() pourrait utiliser

prend donc l'habitude d'afficher les messages d'erreur SQL, comme ceci :
(je sais je ne l'ai pas fait mais c'était pour l'exemple)
$exec = mysql_query() or die(mysql_error());
ça te donnera une indication sur le problème
indice : regarde mon COUNT et regarde le tien ;)

Posté : 30 août 2005, 15:18
par yamissa
il me dit que j'ai une erreur à la ligne 1 mais bon je ne vois pas la quelle même avec ton indice je ne trouve pas de differences entre nos COUNT. :cry:

Posté : 30 août 2005, 15:19
par ouckileou
il y a des parenthèses dans le mien...
$requete = "SELECT COUNT(nom) AS nb_resultat FROM inscription WHERE nom = '".$nom."'";
mais tu pourrais garder le COUNT(*) aussi

Posté : 30 août 2005, 15:25
par yamissa
je viens d'essayer mais sa ne marche toujours pas...
tu pensse que ça peut venir de mon hebergeur qui ne gère pas les COUNT?
personnellement c'est la première fois que j'en utilise donc je me demandais.
:?:

Posté : 30 août 2005, 15:31
par ouckileou
je viens d'essayer mais sa ne marche toujours pas...
ça veut dire quoi : "ça ne marche pas"

COUNT c'est un truc de base des SGBD donc ça m'étonnerait bien que ton hébergeur ne l'autorise pas :P

Posté : 30 août 2005, 15:31
par yamissa
non attend tu as raison c'est les parenthèse.
merci.
:D