Page 1 sur 1

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

Posté : 04 juil. 2005, 14:23
par Espadon
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.

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

Posté : 04 juil. 2005, 14:26
par guilt92
<? $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

Posté : 04 juil. 2005, 14:30
par zeus
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 )
            { 
...

Posté : 04 juil. 2005, 14:32
par Espadon
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)

Posté : 04 juil. 2005, 14:44
par zeus
Tu penses à mettre la balise [RESOLU]