Problème : Vérifier qu'une variable soit égale à un champ

Petit nouveau ! | 2 Messages

04 juil. 2005, 14:23

Voilà, j'ai crée un script permettant au visiteurs de s'inscrire.
Le pseudo et le pass sont enregistrés dans la base de données.
J'ai rédigé une condition afin que le même pseudo ne soit pas enregistré.
J'ai donc le code voici :
<? $pseudo_inscription = $_POST['pseudo1'];
   $passe = $_POST['motdepasse'];
	$traitement = mysql_query("SELECT pseudo FROM testinscrit WHERE pseudo='" . $pseudo_inscription . "'");
		if ( $traitement == NULL )
			{
?>
<?
mysql_query("INSERT INTO testinscrit(id, pseudo, pass) VALUES('', '" . $pseudo_inscription . "' , '" . $passe . "')");
?>
<html>
<head>
<title>~ Bienvenue sur le site de Glandouille Club ! ~</title>
<style type="text/css">
<!--
.Style1 {
	font-size: 10px;
	font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body>
<p class="Style1">Enregistrement avec succ&egrave;s, <? echo($pseudo_inscription); ?>.<br>
  <a href="index.php">Retour &agrave; l'index.</a></p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <br>
 <p class="Style1">&nbsp;</p>
</body>
<?
			}
			else
			{
			echo('Pseudo déjà utilisé.<br><a href="index.php?page=inscription">Retour à l\'inscription</a>');
			}
?>

<?
mysql_close(); ?>
Malheureusement un problème survient :
Quelque soit le pseudo qu'on choisit, cela affiche "Pseudo déjà utilisé".
Auriez vous une solution s'il vous plaît ?
Merci d'avance.

Mammouth du PHP | 1353 Messages

04 juil. 2005, 14:26

<? $pseudo_inscription = $_POST['pseudo1'];
   $passe = $_POST['motdepasse'];
	$traitement = mysql_query("SELECT pseudo FROM testinscrit WHERE pseudo='$pseudo_inscription'");
		if (!$result=mysql_fetch_array($traitement))
			{
?>
<?
mysql_query("INSERT INTO testinscrit(id, pseudo, pass) VALUES('', '" . $pseudo_inscription . "' , '" . $passe . "')");
?>
<html>
<head>
<title>~ Bienvenue sur le site de Glandouille Club ! ~</title>
<style type="text/css">
<!--
.Style1 {
	font-size: 10px;
	font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body>
<p class="Style1">Enregistrement avec succ&egrave;s, <? echo($pseudo_inscription); ?>.<br>
  <a href="index.php">Retour &agrave; l'index.</a></p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <p class="Style1">&nbsp;</p>
 <br>
 <p class="Style1">&nbsp;</p>
</body>
<?
			}
			else
			{
			echo('Pseudo déjà utilisé.<br><a href="index.php?page=inscription">Retour à l\'inscription</a>');
			}
?>

<?
mysql_close(); ?>
Essaye comme ca je suis pas convaincu mais pour comparer des string entre eux il fo des '' autour

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 juil. 2005, 14:30

C'est normal vu que $traitement est toujours différent de NULL :
- si la requete réussi, il contient les résultats
- sinon, contient un message d'erreur

En plus, pour comparer des chaines de caractères, on utilise LIKE

mais pour ce que tu veux faire, je te conseille ça :
<? $pseudo_inscription = $_POST['pseudo1'];
   $passe = $_POST['motdepasse'];
    //On compte le nombre d'enregistrements qui ont le même pseudo
    $traitement = mysql_query("SELECT COUNT(*) FROM testinscrit WHERE pseudo LIKE '".$pseudo_inscription."'") or die(mysql_error());
    //On récupère le résultat
   $result = mysql_result($traitement, 0, 0);
    //Si le pseudo n'est pas déjà enregistré dans la base     
    if ( $result == 0 )
            { 
...
Modifié en dernier par zeus le 04 juil. 2005, 14:33, modifié 1 fois.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 2 Messages

04 juil. 2005, 14:32

Arf, cela ne fonctionne pas...
(Merci quand même ^^)
On dirait qu'il n'aime pas mes if... j'ai du faire une bourde à ce niveau là.
Edit : J'essaie ce que tu viens de me proposer Zeus, je te dis après, merci ;)
Edit 2 : C'est bon ça fonctionne ! Merci bien, ça fait depuis la matinée que je bloque (quel n00b lol)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 juil. 2005, 14:44

Tu penses à mettre la balise [RESOLU]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer