Problème de requête MySQLi
Résolu/Fermé
firpic
-
2 juin 2021 à 16:29
jordane45 Messages postés 36893 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023 - 3 juin 2021 à 12:27
jordane45 Messages postés 36893 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 février 2023 - 3 juin 2021 à 12:27
A voir également:
- Problème de requête MySQLi
- Requete http - Guide
- Requête bloquée par le firewall applicatif claranet webfence ✓ - Forum Internet / Réseaux sociaux
- Erreur lors de l'envoi de la requete ✓ - Forum Facebook
- Il manque l'extension mysqli. merci de vérifier la configuration php. voir la documentation pour plus de détails. ✓ - Forum PHP
- Requete excel ✓ - Forum Excel
2 réponses
jordane45
Messages postés
36893
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 février 2023
4 479
2 juin 2021 à 16:41
2 juin 2021 à 16:41
Bonjour,
Affiche les erreurs PHP
(mets ce code au début de ton script php )
et à chaque requête, gère l'affichage éventuel des erreurs mysqli en cas d'erreur dans tes requêtes
sous la forme:
reviens nous voir avec le code modifié et les éventuels messages d'erreur si le souci persiste
Affiche les erreurs PHP
(mets ce code au début de ton script php )
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
et à chaque requête, gère l'affichage éventuel des erreurs mysqli en cas d'erreur dans tes requêtes
sous la forme:
if (!mysqli_query($conn, " Ta requete sql ...")) { printf("Message d'erreur : %s\n", mysqli_error($link)); }
reviens nous voir avec le code modifié et les éventuels messages d'erreur si le souci persiste
jordane45
Messages postés
36893
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 février 2023
4 479
2 juin 2021 à 21:36
2 juin 2021 à 21:36
Plusieurs choses.
Déjà, on essaye de placer le maximum de code PHP en dehors du HTML ( en général avant le code html )
Il faut également éviter d'utiliser $_POST. Dans ton cas tu fais du post .. donc il faut utiliser $_POST
On place le Javascript à la fin de la page, juste avant le </body> de préférence
On ne place rien en dehors des balises <body></body>
Déjà, on essaye de placer le maximum de code PHP en dehors du HTML ( en général avant le code html )
Il faut également éviter d'utiliser $_POST. Dans ton cas tu fais du post .. donc il faut utiliser $_POST
On place le Javascript à la fin de la page, juste avant le </body> de préférence
On ne place rien en dehors des balises <body></body>
<?php //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd require_once('config.php'); //Je découpe le oode en "fonctions" ( que tu pourrais placer dans un fichier à part si // jamais tu t'en resserts dans d'autres pages ) /** * Récupère les infos d'un utilisateur via son username */ function getUserByName($username){ global $conn; $username = mysqli_real_escape_string($conn, $username); $sql = "SELECT * FROM `users` WHERE username='$username'"; if(!$select = mysqli_query($conn, $sql)){ printf("Message d'erreur : %s\n", mysqli_error($conn)); return false; }else{ return $select; } } /** * verifier si le nom d'utilisateur existe */ function checkIfUserExist($username){ $select = getUserByName($username); return mysqli_num_rows($select) ? true : false; // retourne true si il existe sinon false } function addUser($username,$email,$password){ global $conn; $username = mysqli_real_escape_string($conn, $username); $email = mysqli_real_escape_string($conn, $email); $password = mysqli_real_escape_string($conn, $password); $sql = "INSERT into `users` (username, email, password) VALUES ('$username', '$email', '".hash('sha256', $password)."')"; if (!mysqli_query($conn, $sql)) { printf("Message d'erreur : %s\n", mysqli_error($link)); return false; }else{ return true; } } //juste le temps des tests, pour voir si ton formulaire s'envoie bien echo "<br> ---> POST :"; var_dump($_POST); // Récupération PROPRE des variables AVANT de les utiliser // pour ça, j'utilise l'écriture ternaire ( sorte de IF/ELSE ) $username = !empty( $_POST['username']) ? $_POST['username'] : NULL; $email = !empty( $_POST['email']) ? $_POST['email'] : NULL; $password = !empty( $_POST['password']) ? $_POST['password'] : NULL; //traitement du formulaire if($username && $email && $password ){ if( checkIfUserExist($username) ){ $message = "Le nom d'utilisateur est deja utiliser."; }else{ if(addUser($username,$email,$password))){ $message = "<div class='sucess'> <h3>Vous êtes inscrit avec succès.</h3> <p>Cliquez ici pour vous <a href='https://streawer.000webhostapp.com/'>connecter</a></p> </div>"; }else{ $message = " Erreur lors de l'insertion en BDD"; } } } ?> <!DOCTYPE html> <html> <head> <meta name="googlebot" content="noindex"> <link rel="icon" type="images/png" sizes="512x512" href="android-chrome-512x512.png"> <link rel="stylesheet" href="serie/allstyle.css"> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="style1.css"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Streawer</title> </head> <body style="background-color: #444444;"> <!-- En-tête de la page--> <div class="entete" onclick="window.location.reload()"> <img src="img/logo.png" id="logo" alt="Logo Streawer"/> <a href="main.php" id="nm" style="color: #4DB89A;"><h1 id="nom">Streawer</h1></a> </div> <form class="box" action="" method="post"> <h1 class="box-logo box-title"><a href="https://streawer.000webhostapp.com/">Streawer</a></h1> <h1 class="box-title">S'inscrire</h1> <input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur" required /> <input type="text" class="box-input" name="email" placeholder="Email" required /> <input type="password" class="box-input" name="password" placeholder="Mot de passe" required /> <input type="submit" name="submit" value="S'inscrire" class="box-button" /> <?php if (!empty($message)) { ?> <p class="errorMessage"><?php echo $message; ?></p> <?php }?> <p class="box-register">Déjà inscrit? <a href="https://streawer.000webhostapp.com/">Connectez-vous ici</a></p> </form> <?php } ?> <?php include('footer.php'); ?> <script> $(document).keydown(function(e){ if(e.which === 123){ return false; } }); </script> </body> </html>
des que j'accède a la page cette erreur s'affiche :
Puis une fois le formulaire remplie et envoyer ces erreur s'affcihe :
J'ai modifie la ligne 44 car ce n'était pas la meme variable donc j'ai mis $conn au lieu de $link. Du coup il me met cette erreur :
---> POST :array(0) { }
Puis une fois le formulaire remplie et envoyer ces erreur s'affcihe :
---> POST :array(4) { ["username"]=> string(4) "test" ["email"]=> string(4) "test" ["password"]=> string(4) "test" ["submit"]=> string(10) "S'inscrire" }
Notice: Undefined variable: link in /storage/ssd3/384/16626384/public_html/register.php on line 44
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /storage/ssd3/384/16626384/public_html/register.php on line 44
Message d'erreur :
J'ai modifie la ligne 44 car ce n'était pas la meme variable donc j'ai mis $conn au lieu de $link. Du coup il me met cette erreur :
---> POST :array(4) { ["username"]=> string(4) "test" ["email"]=> string(4) "test" ["password"]=> string(4) "test" ["submit"]=> string(10) "S'inscrire" } Message d'erreur : Field 'last_login' doesn't have a default value
jordane45
Messages postés
36893
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 février 2023
4 479
>
firpic
3 juin 2021 à 10:35
3 juin 2021 à 10:35
ah ben voila....
Donc :
Cela veut dire que :
Soit tu ajoutes cette colonne dans ta requête INSERT en lui mettant une valeur
Soit, dans la config de ta table, tu définis ce champ avec une valeur par défaut.
( Ce n'est donc pas un souci de php .. mais de mysql. )
Donc :
Message d'erreur : Field 'last_login' doesn't have a default value
Cela veut dire que :
Soit tu ajoutes cette colonne dans ta requête INSERT en lui mettant une valeur
Soit, dans la config de ta table, tu définis ce champ avec une valeur par défaut.
( Ce n'est donc pas un souci de php .. mais de mysql. )
firpic
>
jordane45
Messages postés
36893
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 février 2023
3 juin 2021 à 12:18
3 juin 2021 à 12:18
Comment ont fait pour que se message ne sois pas affciher :
---> POST :array(4) { ["username"]=> string(4) "test" ["email"]=> string(4) "test" ["password"]=> string(4) "test" ["submit"]=> string(10) "S'inscrire" }
jordane45
Messages postés
36893
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 février 2023
4 479
>
firpic
3 juin 2021 à 12:27
3 juin 2021 à 12:27
Et bien c'est facile ... tu lis les commentaires que j'ai mis dans le code ... et ça te permettra de trouver !
2 juin 2021 à 20:54
voici le nouveau code:
2 juin 2021 à 20:58
Tu as des messages d'erreur ?
La page reste blanche ?
2 juin 2021 à 21:08
pour voire la page :