Problème de requête MySQLi
Résolu/Fermé
firpic
-
2 juin 2021 à 16:29
jordane45 Messages postés 38384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 janvier 2025 - 3 juin 2021 à 12:27
jordane45 Messages postés 38384 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 janvier 2025 - 3 juin 2021 à 12:27
A voir également:
- Roxane cherche des informations pour écrire un rapport sur la jeunesse. avec un moteur de recherche généraliste, elle souhaite limiter les résultats de sa recherche aux pages de l’organisation internationale du travail. quelle requête doit-elle taper dans le champ de recherche ?
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Google moteur de recherche page d'accueil - Guide
- Recherche adresse - Guide
2 réponses
jordane45
Messages postés
38384
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
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
38384
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
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
38384
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
>
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
38384
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
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
38384
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2025
4 727
>
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 :