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

Eléphant du PHP | 127 Messages

30 août 2005, 11:19

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 .

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2005, 11:24

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."'";

Eléphant du PHP | 127 Messages

30 août 2005, 11:52

oui c'est pour un champ précis.
Mais pour la condition comment je fait?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2005, 11:57

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 ;)

Eléphant du PHP | 127 Messages

30 août 2005, 14:58

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 .

Mammouth du PHP | 19672 Messages

30 août 2005, 14:59

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2005, 15:01

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 ;)

Eléphant du PHP | 127 Messages

30 août 2005, 15:18

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:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2005, 15:19

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

Eléphant du PHP | 127 Messages

30 août 2005, 15:25

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.
:?:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 août 2005, 15:31

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

Eléphant du PHP | 127 Messages

30 août 2005, 15:31

non attend tu as raison c'est les parenthèse.
merci.
:D