schats Posté 26 Janvier 2007 Posté 26 Janvier 2007 bonjour, j'ai un petit problème dans mon code d'inscription .... en effet on peu changer le mot de passe en sachant le pseudo alors que je ne voulais juste avoir d'un pseudo dans la table merci de me répondre ps: le code $nbpseudo = mysql_result(mysql_query("SELECT pseudo FROM membres WHERE pseudo = '".$pseudo."'"), 0);elseif($nbpseudo != 0) //si c bon on enchaine ! est ce qu'il n'est pas déjà dans la base ?{echo "Ce pseudo est déjà utilisé !";} si vous avez besoin d'autre information comme tout le code php merci de me le dire
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Bonjour, Essaie ceci : $sql = "select pseudo from membres where pseudo = '".$pseudo."'";$requete = mysql_query($sql);if (mysql_num_rows($requete)==0){echo"Pseudo déjà pris!";}else{//on fait le traitement}
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 cela marche merci d'avoir répondu rapidement par contre avec le code que vous m'avez donner j'ai l'erreur Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/users/t/toutetrien/inscription.php on line 165 //Si le mail a été envoyé on peut enregistrer le membre mail($email,$sujet , $message ,"from: $monemail");echo ' un mail de confirmation va venir dans votre boite mail ';}elseif (mysql_num_rows($requete) == 0)//ligne 165{echo"Pseudo déjà pris!";}elseif (!empty($pseudo)){echo "Vous avez oubliez de remplir le champ Pseudo !";}elseif (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 35){echo "votre pseudo a soit moin de 3 caratère ou soit plus de 35 caractère";}
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Ce que je t'ai donné doit fonctionner. Vérifie la requête pour voir si elle est bonne et qu'elle ne retourne pas une erreur ou alors, prends ceci et dis moi le résultat : $sql = "select pseudo from membres where pseudo = '".$pseudo."'";$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());if (mysql_num_rows($requete)==0){echo"Pseudo déjà pris!";}else{//on fait le traitement}
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 ben en faite il marche mais avan il y a sa Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/users/t/toutetrien/inscription.php on line 165 Pseudo déjà pris!
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Si ca plante avant, tu ne peux pas savoir si mon code fonctionne. A la ligne 165, il y a quoi? Ceci => "elseif (mysql_num_rows($requete) == 0)" Mais la requete est bien au dessus? Le IF est où? Soit plus explicite. Portekoi
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 la ligne 165 est bien elseif (mysql_num_rows($requete)==0) je vous donne tout le code de la page <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" ><?php$menu = include("menu.php"); ?><head> <title>Inscription</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" media="screen" title="Simple" href="fichier.css" /></head><body><div id="menu"> <?php $menu ?></div><div id="corps"><div align="center">Inscription</div><br><br><?phpif (!isset($_POST['pseudo'])){ ?> <form action="inscription.php" method="post" enctype="multipart/form-data"> Votre pseudo : <input type="text" name="pseudo"> <br> <font size="2"><i>(entre 3 et 35 caractères)</i></font><br> Votre mot de passe : <input type="password" name="pass"><br><font size="2"><i>(plus de 4 caractères)</i></font><br> Confirmer votre mot de passe : <input type="password" name="confirmpass"><br> Votre email : <input type="text" name="email"><br><font size="2"><i>(Veuillez entrer une adresse email valide, sinon vous ne pourrez pas valider votre insription)</i></font><br><br> Nom : <input type="text" name="nom"><br> Prenom :<input type="text" name="prenom"><br> Adresse :<input type="text" name="adresse"><br> Code Postale :<input type="text" name="cp"><br> Ville :<input type="text" name="ville"><br><br> Votre date de naissance : <input type="text" size="2" name="j">/<input type="text" size="2" name="m">/<input type="text" size="4" name="a"><br> votre sexe <input type="text" name="sexe" /><br/> Votre pays : <input type="text" name="pays"><br> Selectionnez vos centres dinterets :<br/> Musique<input type="checkbox" name="option[]" value="musique" /><br/> Jeux vidéos : <input type="checkbox" name="option[]" value="jeux_video"/><br> Informatique : <input type="checkbox" name="option[]" value="informatique"/><br> Cinéma :<input type="checkbox" name="option[]" value="cinema"/><br> Lecture : <input type="checkbox" name="option[]" value="lecture"/><br> Sports : <input type="checkbox" name="option[]" value="sports"/><br> Autres : <input type="checkbox" name="option[]" value="autre"/><br> Si autre précisez : <input type="text" name="precision"/><br><br> <u>forum</u><br/> site ou blog a vous <input type="text" name="url"/> <br/> votre avatar<input type="file" name="avatar" /> pas plus de 1 Mo( en construction) ne marche pas.<br/> <input type="hidden" name="MAX_FILE_SIZE" value="1048576" /> votre signature <textarea rows="2" cols="40" name="signature"></textarea><br/><br/> Quelques mots pour vous décrire :<br> <textarea rows="5" cols="40" name="description"></textarea><br><br> <input type="submit" value="S'inscrire !"></form> <? }else {if(isset($pseudo) or isset($pass)or isset($email) or isset($nom) or isset($prenom) or isset($j) or isset($m) or isset($a) or isset($pays) or isset($description) or isset($sexe))//pseudo est null puis si <3 ou >35{mysql_connect("sql.redby.info","*****","*****");mysql_select_db("toutetrien3");$date = $_POST['j'].','.$_POST['m'].','.$_POST['a'];$date = htmlspecialchars($date);$pseudo= htmlspecialchars($_POST['pseudo']);$pass= htmlspecialchars($_POST['pass']);$email= htmlspecialchars($_POST['email']);$nom= htmlspecialchars($_POST['nom']);$prenom= htmlspecialchars($_POST['prenom']);$pays= htmlspecialchars($_POST['pays']);$url= htmlspecialchars($_POST['url']);$avatar= htmlspecialchars($_POST['avatar']);$signature= htmlspecialchars($_POST['signature']);$adresse= htmlspecialchars($_POST['adresse']);$cp= htmlspecialchars($_POST['cp']);$ville= htmlspecialchars($_POST['ville']);$date= htmlspecialchars($_POST['date']);$precision= htmlspecialchars($_POST['precision']);$description= htmlspecialchars($_POST['description']);$autre= htmlspecialchars($_POST['autre']);$sport= htmlspecialchars($_POST['sport']);$lecture= htmlspecialchars($_POST['lecture']);$cinema= htmlspecialchars($_POST['cinema']);$informatique= htmlspecialchars($_POST['informatique']);$jeuxvideos= htmlspecialchars($_POST['jeuxvideos']);$musique= htmlspecialchars($_POST['musique']);$sexe= htmlspecialchars($_POST['sexe']);$signature = nl2br($signature);$signature = addslashes($signature);$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";$requete = mysql_query($sql)or die("Erreur Mysql =>" . mysql_error());///Il n'y a pas eu d'erreur$_POST['pass'] = md5(sha1($_POST['pass']));/// addslashes pour la sécurité, sur chacune des valeurs postéesforeach($_POST AS $champ => $valeur){ $_POST[$champ] = addslashes($valeur);} mysql_query("INSERT INTO membres(pseudo, pass, email, nom, prenom, date, pays, description, sexe,) VALUES( '', '".$pseudo."', '".$pass."', '', '".$email."', '".$nom."', '".$prenom."', '".$pays."', '".$url."', '".$avatar."', '".$signature."', '', '', '', '', '', '".$adresse."', '".$cp."', '".$ville."', '".$date."', '".$precision."', '".$description."', '".$autre."', '".$sport."', '".$lecture."', '".$cinema."', '".$informatique."', '".$jeuxvideos."', '".$musique."', '".$sexe."', '' )")or die (mysql_error());$monemail = 'GITOUNY_AT_voila.fr'; $sujet = 'bienvenu sur le site schats';$message = ' Bonjour '.$pseudo.' Vous venez de vous inscrire sur "schats" et pour valider votre inscription, vous devez cliquer sur le lien suivant : [url="http://toutetrien.redby.info/confirmation.php?pseudo='.$pseudo.'"]http://toutetrien.redby.info/confirmation....36;pseudo.'[/url] votre pseudo: '.$pseudo.' votre mot de passe '.$pass.' ceci est un mail robot merci de ne pas répondre '; //Si le mail a été envoyé on peut enregistrer le membre mail($email,$sujet , $message ,"from: $monemail");echo ' un mail de confirmation va venir dans votre boite mail ';}elseif (mysql_num_rows($requete)==0){echo"Pseudo déjà pris!";}elseif (!empty($pseudo)){echo "Vous avez oubliez de remplir le champ Pseudo !";}elseif (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 35){echo "votre pseudo a soit moin de 3 caratère ou soit plus de 35 caractère";}elseif(!empty($pass))// on regarde le passe{echo "Vous avez oubliez d'inscrire un mot de passe !";}elseif ($pass != $confirmpass ){echo "Votre mot de passe est different de votre confirmation !";}elseif(strlen($pass)<4){echo "Votre mot de passe est inferieur a 4 caractères !";}elseif(!empty($email)){echo "Vous avez oubliez d'entrer un email ! Vous ne pourrez pas valider votre inscription !";}elseif(!empty($nom)){echo "Veuillez entrer votre nom !";}elseif(!empty($prenom)){echo" Veuillez entrer votre prenom !";}elseif(!empty($date)){echo" Veillez mettre votre date de naissance !";} elseif(!empty($pays)){echo"Veillez indiquer votre pays s'il vous plait.";}elseif(!empty($description)){echo"Veillez rentrer une description. ";}elseif(!empty($sexe)){echo "Veillez mettre votre sexe.";}else{}}?></div></body></html>
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Remplace ceci : $sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";$requete = mysql_query($sql)or die("Erreur Mysql =>" . mysql_error()); Par cela $sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());echo mysql_num_rows($requete);
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 A la ligne 165? Ok ligne 166 Donc l'erreur vient forcément du code du dessus.
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 euh non j'ai remonter le code donc c'est toujours la même ligne le code .... c'est peu être en haut mais je ne voie pas :s
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Rhaaaaaa mais oui. Tu dois mettre la requete dans ton if...
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 la requete dans le elsif donc elseif($sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());mysql_num_rows($requete)==0){echo"Pseudo déjà pris!";}
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Euh non... le mieux serait de récupérer ton $pseudo avant ton if, de faire la requete et ensuite de tester la valeur car je ne pense pas que puisse fonctionner ainsi... Donc en gros : requete puis if elseif elseif etc...
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 euh que je t'explique comment est fair mon site if else if elseif elseif elseif else
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Et bien tu fais ta requete tout en haut avec le $pseudo ou alors tu casses tes if. If{ } If{ } If{ } If{ } Je peux pas faire plus. Tu as la solution. Portekoi
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 (modifié) ok je vais réfléchir je l'ai mit tout en haut et ca me fait comme si sa blocais a cause du mot de passe $sql = "SELECT pseudo FROM membres WHERE pseudo ='".$_POST['pseudo']."'";$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error()); Modifié 26 Janvier 2007 par schats
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 As tu mis ta connexion à ta base au dessus? Si oui, as tu utilisé mysql_db_query() ? Je te conseille vivement d'aller sur ces sites : http://www.phpdebutant.org http://www.siteduzero.com/index.php Portekoi
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 (modifié) alors .... j'ai bien tout mit avant j'ai deja poster sur le sdz le sujet http://www.siteduzero.com/forum-83-109798-...gistre-pas.html Modifié 26 Janvier 2007 par schats
Sarc Posté 26 Janvier 2007 Posté 26 Janvier 2007 Bonsoir, As tu déjà vérifié directement dans PHPMyAdmin que ta requète marchait ? C'est la première étape pour débuguer une requète SQL... Pour celà : $sql = "SELECT pseudo FROM membres WHERE pseudo ='".$_POST['pseudo']."'";echo $sql;$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error()); Tu affiches la page... Tu auras peut-être une erreur SQL, mais dans tous les cas tu auras la requète SQL affichée. Tu la copie soigneusement, et dans MyAdmin, onglet SQL d'une table, tu testes la requète que tu as copiée. Deux solutions alors : Il y a une erreur... Dans ce cas là, ne cherche pas plus loin, résouds l'erreur qui t'es donnée Il n'y a pas d'erreur, dans ce cas là, il y a un souci de connexion à la base Essaye ça, et donne le résultat de la manip' ici
schats Posté 26 Janvier 2007 Auteur Posté 26 Janvier 2007 (modifié) alors selon ta manip ca a marcher sa ma donner ce que je voulais donner la requettre puis tester sur mysql.... et ca marche pas d'erreur mince de desespère problème pour se connecter a la table je ne pense pas car j'ai pris les code données par l'hebergeur et donc ..... qui marche .... de toute ces celle utiliser pour toute mes autre page Modifié 26 Janvier 2007 par schats
Portekoi Posté 26 Janvier 2007 Posté 26 Janvier 2007 Re, Ecoute, c'est simple : Tu as une succession de if et dans le premier, tu fais ta requete et tu tests le résultat dans un autre if DONC : 1 - Fais ta requete en premier en utilisant mysql_db_query() s'il n'y pas d'autre requete avant en DEHORS des ifs donc AVANT. 2 - Tu fais tes IF. On va pas non plus te faire ton site. La programmation, c'est pas un puzzle ou l'on reprend des bouts de code à droite et à gauche. Il faut aussi que tu comprennes ce que tu fais sinon, tu n'y arriveras pas donc, va sur le site du Zero ou php debutant, commence par le début, et reviens quand tu auras compris à peu près ce que tu fais. Portekoi
schats Posté 27 Janvier 2007 Auteur Posté 27 Janvier 2007 j'ai bon j'ai mit un 1 o lieu du zéro et sa marche merci
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant