8792 sujets

Développement web côté serveur, CMS

Bonchour!
bon voilà j'explique simplement mon projet :
j'ai commencé il y de cela deux nuits un "espace membre" (pour mon site) dont voila les trois parties principales :

- inscription (source du pb)
- connexion
- espace membre (liste des membres, sections réservées etc..)

là où mon problême intervient c'est lorsque je vérifie que le pseudo entré n'èxiste pas dans la base de données.
je débute en ce qui concerne les BDD et je me sers des principaux codes auxquels je ne comprend qu'une infime partie et que je trouve sur des tutoriels en ligne.
alors voila
<input type="text" name="pseudo" class="entrees_mmb" />

ça c'est ce qui est envoyé par le formulaire

ce qui suit est le code que j'ai inventé et qui est censé explorer les pseudo de la bdd pour les renvoyer et ensuite annuler la suite du script si il est déjà existant

$pss=htmlentities($_POST['pseudo']);
mysql_connect("localhost","root","");
mysql_select_db("le_site");
$pseudo=mysql_query("SELECT * FROM membres WHERE pseudo='$pss'");
while($verif=mysql_fetch_array($pseudo)){
if(isset($_POST['pseudo']))
{$dispo_pseudo=0;}
else{$dispo_pseudo=1;}}
mysql_close();


apré ca fonctionne suivant la variable $dispo_pseudo si c'est 1 jexecute le script et jenregistre le membre si c'est 0 rien ne se fait et jaffiche un message

jespere que je suis clair
merci d'avance Smiley ravi
Modifié par A-CesarX-V (04 Apr 2006 - 00:35)
Ben, pour moi (pas spécialiste BDD donc pas sûr Smiley cligne ), c'est presque bon... sauf que tu ne testes pas la bonne variable (à moins que ce soit une erreur de recopie).
Tu initialise $verif avec le résultat de la requête et après tu fais le test sur "isset($_POST['pseudo'])", donc forcément y'a un pbm...
En fait, il y a même une autre confusion entre la variable pseudo du formulaire et le champ pseudo de la base... Et $pss ça vient d'où ?
Bref, choisis déjà des variables avec des noms différents et tout ira certainement mieux (et puis ça permettra aussi de mieux comrendre ton code, parce que là on s'y perd un peu... Smiley cligne )

(remarque optimisation qui n'a rien à voir avec le fonctionnement : c'est pas la peine de faire des "SELECT *" quand on a besoin que d'un seul champ (ici pseudo si j'ai bien compris))
oui c'est pseudo
$pss
intervient dans la selection des champs pseudo
SELECT * FROM membres WHERE pseudo='$pss'

il n'ya pas de confusion pour pseudo car mon champs sappelle aussi pseudo
ce qui se passe avec ce code, c'est que
$dispo_pseudo
est toujours égale à 1
à mon avi ça serait mieux si je saivais quoi coder à la place de ca
while($verif=mysql_fetch_array($pseudo)){
if(isset($_POST['pseudo']))
{$dispo_pseudo=0;}
else{$dispo_pseudo=1;}}

tu n'as aucune instruction qui te vien à l'esprit?
pour que vous voiyez bien de quoi ça a l'air voici le script entier (inscription.php) :
<?php 
$na="N/A";
$kedal="";

$pss=htmlentities($_POST['pseudo']);
mysql_connect("localhost","root","");
mysql_select_db("le_site");
$pseudo=mysql_query("SELECT * FROM membres WHERE pseudo='$pss'");
while($verif=mysql_fetch_array($pseudo)){
if(isset($_POST['pseudo']))
{$dispo_pseudo=0;}
else{$dispo_pseudo=1;}}
mysql_close();

if($dispo_pseudo=1){
if($_POST['pseudo']==$kedal){echo"Veuillez entrer votre pseudo s'il vous plait.";}
elseif($_POST['pass']==$kedal){echo"Veuillez entrer votre mot de passe s'il vous plait.";}
elseif($_POST['pass_conf']==$kedal){echo"Veuillez entrer la confirmation de votre mot de passe s'il vous plait.";}
elseif($_POST['mail']==$kedal){echo"Veuillez compléter votre adresse e-mail s'il vous plait.";}
elseif($_POST['jour_naissance']==$na or $_POST['mois_naissance']==$na or $_POST['annee_naissance']==$na)
{echo"Veuillez compléter TOUS les champs de votre date de naissance s'il vous plait.";}
elseif($_POST['pass'] != $_POST['pass_conf']){echo"Erreurs dans les mots de passe!";}

else{
$pseudo=htmlentities($_POST['pseudo']);
$password=htmlentities($_POST['pass']);
$naissance_j=$_POST['jour_naissance'];
$naissance_m=$_POST['mois_naissance'];
$naissance_a=$_POST['annee_naissance'];
$mail=htmlentities($_POST['mail']);
$site=htmlentities($_POST['site']);
$avatar=htmlentities($_POST['avatar']);
$profession=htmlentities($_POST['profession']);
$loisirs=htmlentities($_POST['loisirs']);
$citation=htmlentities($_POST['citation']);
$config_pc=htmlentities($_POST['config']);
$classe=$membre;
$jour_ins=date('d');
$mois_ins=date('m');
$annee_ins=date('Y');
$heure_ins=date('H');
$min_ins=date('i');
mysql_connect("localhost","root","");
mysql_select_db("le_site");
mysql_query("INSERT INTO membres(id,pseudo,password,naissance_jour,naissance_mois,naissance_annee,inscription_jour,inscription_mois,inscription_annee,inscription_heure,inscription_minute,mail,site,avatar,config_pc,profession,loisirs,citation,classe_gestion) 
VALUES('','$pseudo','$password','$naissance_j','$naissance_m','$naissance_a','$jour_ins','$mois_ins','$annee_ins','$heure_ins','$min_ins','$mail','$site','$avatar','$config_pc','$profession','$loisirs','$citation','$classe')");

echo"A-CesarX-V vous remercie chaleureusement pour votre inscription!<br />L'équipe du site vous souhaite de passer de très bons moments parmis nous!"; 
echo $dispo_pseudo;
echo $verif['pseudo'];
mysql_close();
echo'<meta http-equiv="refresh" content="0;URL=http://127.0.0.1/A-CesarX-V/accueil.php?fd=805&ls=005&di=o&sm=0&">';
}}
else{echo'Un membre possède déjà ce pseudonyme .';}?>

aie Smiley sweatdrop
A-CesarX-V a écrit :
il n'ya pas de confusion pour pseudo car mon champs sappelle aussi pseudo
Mais c'est justement ça qui pose pbm !!!
$_POST['pseudo'] : c'est ce qui vient de ton formulaire, c'est donc la valeur que tu dois tester dans la base.
Or toi, tu fais la requête
A-CesarX-V a écrit :
SELECT * FROM membres WHERE pseudo='$pss'
donc tu cherche dans la base les enregistrements où pseudo vaut $pss.
Donc, déjà, il faut que tu fasse
$pss = $_POST['pseudo']
pour tester la bonne valeur.

Deuxièmement, le résultat de la requête est placé dans le tableau $verif.
Donc dans le "if" qui suit c'est $verif qque chose qu'il faut tester et non $_POST['pseudo'] qui est évidemment toujours rempli puisque c'est le champ de ton formulaire !
Euh, je suis clair là ?