Problème avec my SQL
tacospower
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Salut à tous,
je rencontre quelque problèmes avec php et mySQ, quand j'essaye de savoir si un pseudo est déjà utilisé je rencontre énormèment d'erreur je vous met mon code:
auth-creer-compte.php:
Voila merci de me répondre au plus vite c'est pour mon projet de sin
je rencontre quelque problèmes avec php et mySQ, quand j'essaye de savoir si un pseudo est déjà utilisé je rencontre énormèment d'erreur je vous met mon code:
auth-creer-compte.php:
<!DOCTYPE [/contents/498-html-langage html] PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <meta http-equiv="Content-Language" content="fr" /> <title>Créer un compte</title> <link rel="stylesheet" href="auth-style-index.css" type="text/css" media="screen" /> </head> <body> <div id="centre"> <h1>Créer un compte</h1> <form method="POST" action="#"> <label for="pseudo">Pseudo : </label><input type="text" name="pseudo" maxlength="20" value="<?php if (!empty($_POST["pseudo"])) { echo stripcslashes(htmlspecialchars($_POST["pseudo"],ENT_QUOTES)); } ?>" /><br/> <label for="pass">Mot de Passe : </label><input type="password" name="motdepass" maxlength="20" value="<?php if (!empty($_POST["motdepass"])) { echo stripcslashes(htmlspecialchars($_POST["motdepass"],ENT_QUOTES)); } ?>" /><br/> <label for="email">Email : </label><input type="text" name="email" maxlength="50" value="<?php if (!empty($_POST["email"])) { echo stripcslashes(htmlspecialchars($_POST["email"],ENT_QUOTES)); } ?>" /><br/> <label for="action">Action : </label><input type="submit" name="Envoyer" value="Envoyer" /> <input name="Effacer" value="Effacer" type="reset" /> </form> <br/> <?php if(isset($_POST['Envoyer'])){ //si pseudo vide if(empty($_POST['pseudo'])){ echo '<div id="erreur">Veuillez saisir un pseudo!</div>'; } //si mot de passe vide else if(empty($_POST['motdepass'])){ echo '<div id="erreur">Veuillez saisir un mot de passe!</div>'; } //si l'email vide else if(empty($_POST['email'])){ echo '<div id="erreur">Veuillez saisir un email!</div>'; } //si l'email est invalide else if (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST['email'])){ echo '<div id="erreur">Veuillez saisir un email valide!</div>'; } //c'est ok else{ $link = mysqli_connect('localhost','root','azerty'); include("auth-data_bd.php"); connexion_bd(); //On vérifie si le pseudo existe en bd $pseudo = mysqli_query($link, "SELECT pseudo FROM LOGIN WHERE pseudo='".mysqli_real_escape_string($link, $_POST['pseudo']."'") or die ('Erreur:'.mysql_error())); if(mysql_num_rows($pseudo) != 0) { echo '<div id="erreur">Ce pseudo est déjà utilisé!</div>'; return false; } //on vérifie si le mail existe en bd $email = mysqli_query("SELECT email FROM LOGIN WHERE email='".mysqli_real_escape_string(stripcslashes($_POST['email']))."'") or die ('Erreur :'.mysql_error()); if(mysql_num_rows($email) != 0) { echo '<div id="erreur">Cet email est déjà utilisé!</div>'; return false; } //tout est ok else{ //date du jour $date=date("Y-m-d"); // on enregistre les données $insert = mysql_query("INSERT INTO LOGIN VALUES ( '', '".mysqli_real_escape_string(stripcslashes(utf8_decode($_POST['pseudo'])))."', '".mysqli_real_escape_string(stripcslashes(utf8_decode($_POST['motdepass'])))."', '".mysqli_real_escape_string(stripcslashes($_POST['email']))."', '".mysql_real_escape_string('0')."', '".mysqli_real_escape_string('0')."', '".mysql_real_escape_string($date)."' ) "); //Si il y a une erreur if (!$insert) { die('Requête invalide : ' . mysql_error()); } //pas d'erreur d'enregistrement, on envoie un mail de confirmation else { //email de celui qui envoie $webmaster = $email_webmaster; //email de celui qui reçoit $a_qui_j_envoie = $_POST['email']; //sujet $subject = "Valider votre inscription"; //message $msg = "Bonjour ".stripcslashes($_POST['pseudo'])."<br/><br/>"; $msg .= "Veuillez confirmer votre inscription en cliquant sur le lien ci-joint <a href=\"http://".$_SERVER['HTTP_HOST']."/authentification/auth-confirmation.php?pseudo=".stripcslashes($_POST['pseudo'])."&email=".$_POST['email']."\">Confirmation</a><br/>"; $msg .= "Cordialement"; //permet de savoir qui envoie le mail et d'y répondre $mailheaders = "From: $webmaster\n"; $mailheaders .= "MIME-version: 1.0\n"; $mailheaders .= "Content-type: text/html; charset= iso-8859-1\n"; //on envoie l'email mail($a_qui_j_envoie, $subject, $msg, $mailheaders); //confirmation et redirection echo '<div id="ok">Inscription réussit. Un message vous a été envoyé sur votre boîte email pour valider votre inscription.</div> <script type="text/javascript"> window.setTimeout("location=(\'cible.php.php?conf=ok\');",3000) </script>'; } } close_bd(); } } ?> <p id="lien"><a href="cible.php" rel="nofollow noopener noreferrer" target="_blank">Connexion</a> | <a href="auth-creer-compte.php" rel="nofollow noopener noreferrer" target="_blank">Créer un compte</a> | <a href="auth-identifiant-perdu.php" rel="nofollow noopener noreferrer" target="_blank">Identifiant perdu?</a></p> </div> <noscript><div id="erreur"><b>Votre navigateur ne prend pas en charge JavaScript!</b> Veuillez activer JavaScript afin de profiter pleinement du site.</div></noscript> </body> </html> et auth-data_bd: <?php //fonction de connexion à la bd function connexion_bd(){ $nom_du_serveur ="localhost"; $nom_de_la_base ="projet"; $nom_utilisateur ="root"; $passe ="azerty"; $link = mysqli_connect('localhost','root','azerty') or die ('Erreur : '.mysql_error()); mysqli_select_db($link,"projet") or die ('Erreur:'.mysql_error()); if (!$link) { die('Connexion impossible : ' . mysql_error() . "<br/>"); } } function close_bd() { mysql_close(); } //email du webmaster $email_webmaster = 'boissieux.38.remy@gmail.com'; ?>
Voila merci de me répondre au plus vite c'est pour mon projet de sin
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Problème avec my SQL
- What is my movie français - Télécharger - Divers TV & Vidéo
- My pascal - Télécharger - Édition & Programmation
- My lockbox - Télécharger - Chiffrement
- Who's on my wifi - Télécharger - Outils Internet
- My cam - Télécharger - Pilotes & Matériel
2 réponses
et les erreurs que j'ai: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Site\auth-creer-compte.php on line 54
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\Site\auth-creer-compte.php on line 59
Bonjour,
Lorsque je vois ton code .. j'ai peu...
par exemple tu as écrit :
Donc.. tu fais une connexion (à la première ligne...)
Ensuite tu fais un include d'un fichier qui... vu le nom... contiendrait bien une connexion à la bdd...
Et pour finir .. tu fais appel à une fonction connexion_bd .. qui là encore fait une connexion à ta bdd...
Du grand cafouillage .....
Donc... commence par remettre de l'ordre dans ton code.
1 - On place le maximum de code PHP AVANT le html (la connexion à la bdd... la récupération des variable post.... )
2 - On effectue la connexion mysqli PROPREMENT.
C'est à dire .. en suivant cet exemple :
3 - Lorsque tu fais tes requêtes.. tu les fais en te basant sur cet exemple :
4 - On récupère PROPREMENT les variables POST .. AVANT de les utiliser. Pour cela on peut utiliser l'écriture TERNAIRE et les fonctions ISSET ou !EMPTY
Par exemple :
et si tu veux mettre du mysqli_real_escape_string.. tu peux le faire comme ça :
5 - (et c'est le plus important !! ) ... on NE MELANGE PAS des instruction mysql et des instruction mysqli !
refais ton code en tenant compte de toutes ces remarques puis montre le nous.
Normalement ça devrait mieux fonctionne si tu suis bien tous ces conseils.....
Lorsque je vois ton code .. j'ai peu...
par exemple tu as écrit :
$link = mysqli_connect('localhost','root','azerty'); include("auth-data_bd.php"); connexion_bd();
Donc.. tu fais une connexion (à la première ligne...)
Ensuite tu fais un include d'un fichier qui... vu le nom... contiendrait bien une connexion à la bdd...
Et pour finir .. tu fais appel à une fonction connexion_bd .. qui là encore fait une connexion à ta bdd...
Du grand cafouillage .....
Donc... commence par remettre de l'ordre dans ton code.
1 - On place le maximum de code PHP AVANT le html (la connexion à la bdd... la récupération des variable post.... )
2 - On effectue la connexion mysqli PROPREMENT.
C'est à dire .. en suivant cet exemple :
$link=mysqli_connect("localhost","my_user","my_password","my_db"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); exit(); }
3 - Lorsque tu fais tes requêtes.. tu les fais en te basant sur cet exemple :
if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) { /* Détermine le nombre de lignes du jeu de résultats */ $row_cnt = mysqli_num_rows($result); }else{ echo("Error description: " . mysqli_error($link)); }
4 - On récupère PROPREMENT les variables POST .. AVANT de les utiliser. Pour cela on peut utiliser l'écriture TERNAIRE et les fonctions ISSET ou !EMPTY
Par exemple :
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
et si tu veux mettre du mysqli_real_escape_string.. tu peux le faire comme ça :
$pseudo = !empty($_POST['pseudo']) ? mysqli_real_escape_string($link, $_POST['pseudo']) : NULL;
5 - (et c'est le plus important !! ) ... on NE MELANGE PAS des instruction mysql et des instruction mysqli !
refais ton code en tenant compte de toutes ces remarques puis montre le nous.
Normalement ça devrait mieux fonctionne si tu suis bien tous ces conseils.....
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in