Problème lié à une réquête mysql
Résolu
modemo2018
Messages postés
226
Date d'inscription
Statut
Membre
Dernière intervention
-
modemo2018 Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
modemo2018 Messages postés 226 Date d'inscription Statut Membre Dernière intervention -
Bonjour, depuis des jours je suis confroté à un problème lier à une réquête que j'essaie d'éxecuté, en fait c'est un principe d'un utilisateur qui accède à son compte utilisateur.
Avant d'accède le code est conçu pour qu'il vérifie d'abord le nom tapé s'il existe dans la base de donnée.
Mon problème est avec la réquête de vérification, c'est un code que j'ai copié dans une autre page où le même code s'execute sans problème, j'ai juste changé des parametre, mais arrivé à cette page, je sais pas pourquoi la requête ne marche pas, le reste du code fonctionne sans problème.
voici mon code:
voici la réquête qui me pose problème:
quelqu'un peut-il me dire ce qui ne marche pas avec cette écriture? la requête ne me signale pas d'erreur
voici la partie html de mon code
Avant d'accède le code est conçu pour qu'il vérifie d'abord le nom tapé s'il existe dans la base de donnée.
Mon problème est avec la réquête de vérification, c'est un code que j'ai copié dans une autre page où le même code s'execute sans problème, j'ai juste changé des parametre, mais arrivé à cette page, je sais pas pourquoi la requête ne marche pas, le reste du code fonctionne sans problème.
voici mon code:
<?php $password1 = !empty ( $_POST['pass'] ) ? $_POST['pass'] : NULL; $nom1 = !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; if($nom1 !=''){ try { $req = $bdd->prepare('SELECT * FROM enseignant WHERE nom = ?'); $req->execute(array($nom1)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $donnees = $req->fetch(); setlocale(LC_TIME, "fr_FR"); $date = date('l jS \of F Y h:i:s A'); $isPasswordCorrect = password_verify($_POST['pass'], $donnees['pass']); if($isPasswordCorrect){ try { $sql = 'INSERT INTO controle(profnom, heure1, id, iduser)VALUES(:profnom, :heure1, :id, :iduser)'; $datas = array(':profnom' => $nom1, ':heure1' => $date, ':id' => $donnees['id'], ':iduser' => $donnees['iduser']); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } session_start(); $_SESSION['nom'] = $_POST['nom']; $_SESSION['iduser'] = $donnees['iduser']; header('Location:enseignant.php'); } } ?>
voici la réquête qui me pose problème:
try { $req = $bdd->prepare('SELECT * FROM enseignant WHERE nom = ?'); $req->execute(array($nom1)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $donnees = $req->fetch();
quelqu'un peut-il me dire ce qui ne marche pas avec cette écriture? la requête ne me signale pas d'erreur
voici la partie html de mon code
<form action="" method="post" class="p-5 bg-white">
<div class="row form-group">
<div class="col-md-12 mb-3 mb-md-0">
<label class="font-weight-bold" for="fullname">Nom</label>
<input type="text" id="fullname" name="nom" class="form-control" placeholder="Tapez votre nom">
</div>
</div>
<div class="row form-group">
<div class="col-md-12">
<label class="font-weight-bold" for="fullname">Mot de passe</label>
<input type="password" id="fullname" name="pass" class="form-control" placeholder="">
</div>
</div>
<div class="row form-group">
<div class="col-md-12">
<input type="submit" value="Se connecter" class="btn btn-primary py-2 px-4">
</div>
</div>
</form>
A voir également:
- Problème lié à une réquête mysql
- Mysql community server - Télécharger - Bases de données
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Requete sql pix - Forum PHP
- Mysql error 2002 ✓ - Forum Linux / Unix
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
9 réponses
Bonjour
Tu as un message d'erreur ?
Vérifie également la ligne 4 de ton premier code ça me semble faux
Tu as un message d'erreur ?
Vérifie également la ligne 4 de ton premier code ça me semble faux
modemo2018
Messages postés
226
Date d'inscription
Statut
Membre
Dernière intervention
2
C'est une erreur lors de la copie du code, j'ai corrigé ça, c'est normalement
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, il est recommandé de ne pas utiliser plusieurs fois le même id, ("fullname") dans une page.
dans ce cas-ci, tu peux sans doute supprimer les id.
as-tu ajouté des echo pour vérifier tes variables et quelle partie du code est exécutée?
pourquoi n'utilises-tu pas la variable $password1?
dans ce cas-ci, tu peux sans doute supprimer les id.
as-tu ajouté des echo pour vérifier tes variables et quelle partie du code est exécutée?
pourquoi n'utilises-tu pas la variable $password1?
Le mot de passe est haché lorsqu'il est enregistré voilà pourquoi j'utilise le nom.
Enlevé les id n'affecte pas trop l'éxécution du code car dans les autres pages ayant presque le même code, je ne rencontre pas ce problème, juste sur cette page
Enlevé les id n'affecte pas trop l'éxécution du code car dans les autres pages ayant presque le même code, je ne rencontre pas ce problème, juste sur cette page
Il y a plusieurs choses qui m'ennuient dans ton code
1 - Je ne vois pas la connexion à la bdd ni de require vers un fichier de connexion;
De ce fait, la variable $bdd n'existe pas...
2 - Tu n'as pas, visiblement, activé l'affichage des erreurs PHP .... normal que tu vois pas d'erreurs dans ce cas;
Donc :
Commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis, au cas où, ça également :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Reviens nous montrer le code corrigé si ton souci persiste et fais nous un print_r de ta variable $_POST
1 - Je ne vois pas la connexion à la bdd ni de require vers un fichier de connexion;
De ce fait, la variable $bdd n'existe pas...
2 - Tu n'as pas, visiblement, activé l'affichage des erreurs PHP .... normal que tu vois pas d'erreurs dans ce cas;
Donc :
Commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis, au cas où, ça également :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Reviens nous montrer le code corrigé si ton souci persiste et fais nous un print_r de ta variable $_POST
Le print_r affiche bel et bien le nom saisi au clavier mais il n'éxécute toujours pas la requête, voici le code ecris
<?php $password1 = !empty ( $_POST['pass'] ) ? $_POST['pass'] : NULL; $nom1 = !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; if($nom1 !=''){ //On recupere le mot de passe de lutilisateur print_r($nom1); try { $req = $bdd->prepare('SELECT * FROM enseignant WHERE nom = ?'); $req->execute(array($nom1)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $donnees = $req->fetch(); ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si la connexion à la BDD ainsi que l'affichage des erreurs sont au haut de ma page, voici le code
<?php //début de ton fichier php .... ça veut dire .. DEBUT !!!: error_reporting ( E_ALL ); ini_set ( 'display_errors', TRUE ); ini_set ( 'display_startup_errors', TRUE ); include("connexion.php"); ?>
ça n'affiche rien dis tu ...
Mais... où as tu mis le code pour afficher justement ?
Et puis quand tu dis que ça n'affiche rien.. c'est à dire .. page blanche ou juste pas les données que tu cherches ???
A tout hasard, merci de tester ceci :
Peux tu également nous montrer ce que donne ta requête lorsque tu la testes directement dans ta bdd ?
Mais... où as tu mis le code pour afficher justement ?
Et puis quand tu dis que ça n'affiche rien.. c'est à dire .. page blanche ou juste pas les données que tu cherches ???
A tout hasard, merci de tester ceci :
<?php $password1 = !empty ( $_POST['pass'] ) ? $_POST['pass'] : NULL; $nom1 = !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; if($nom1){ try { $req = $bdd->prepare('SELECT * FROM enseignant WHERE nom = ?'); $req->execute(array($nom1)); $donnees = $req->fetch(); print_r($donnees); // le temps des tests ! exit; // le temps des tests ! } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } }else{ echo "La variable nom1 ne contient rien !"; print_r($_POST); // le temps des tests ! exit: } ?>
Peux tu également nous montrer ce que donne ta requête lorsque tu la testes directement dans ta bdd ?
voilà ce que ça donne, je pense que j'ai cquand même avancé car avant il me signalais rien, difficile de savoir qu'est ce qui ne marchais pas
SVP Une erreur pareille à quoi peut-elle être dû?
" Array ( [nom] => madzou [prenom] => nestor [pass] => $2y$10$2.OPVSmTgiAgAhiEY1b3p.hhxO1jcfDfc7NHwjUCsYCPjWYl6TmQK [class] => CM2 [matiere] => Primaire [cycle] => PRIMAIRE [serie] => Pas de serie [iduser] => 1 [id] => 1 )"
SVP Une erreur pareille à quoi peut-elle être dû?
" Array ( [nom] => madzou [prenom] => nestor [pass] => $2y$10$2.OPVSmTgiAgAhiEY1b3p.hhxO1jcfDfc7NHwjUCsYCPjWYl6TmQK [class] => CM2 [matiere] => Primaire [cycle] => PRIMAIRE [serie] => Pas de serie [iduser] => 1 [id] => 1 )"
Quand j'execute voilà ce le message qui s'affiche:
" Array ( [nom] => madzou [prenom] => nestor [pass] => $2y$10$2.OPVSmTgiAgAhiEY1b3p.hhxO1jcfDfc7NHwjUCsYCPjWYl6TmQK [class] => CM2 [matiere] => Primaire [cycle] => PRIMAIRE [serie] => Pas de serie [iduser] => 1 [id] => 1 )"
normalement, après exécution de la requête, il fait une comparaison des mots de passe puis me redige vers une autre page, mais aulieu de ça il m'affiche le message ci-dessus
SVP Une erreur pareille à quoi peut-elle être dû?
Voici le code au grand complet:
" Array ( [nom] => madzou [prenom] => nestor [pass] => $2y$10$2.OPVSmTgiAgAhiEY1b3p.hhxO1jcfDfc7NHwjUCsYCPjWYl6TmQK [class] => CM2 [matiere] => Primaire [cycle] => PRIMAIRE [serie] => Pas de serie [iduser] => 1 [id] => 1 )"
normalement, après exécution de la requête, il fait une comparaison des mots de passe puis me redige vers une autre page, mais aulieu de ça il m'affiche le message ci-dessus
SVP Une erreur pareille à quoi peut-elle être dû?
Voici le code au grand complet:
<?php $password1 = !empty ( $_POST['pass'] ) ? $_POST['pass'] : NULL; $nom1 = !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; if($nom1){ try { $req = $bdd->prepare('SELECT * FROM enseignant WHERE nom = ?'); $req->execute(array($nom1)); $donnees = $req->fetch(); print_r($donnees); // le temps des tests ! exit; // le temps des tests ! } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } setlocale(LC_TIME, "fr_FR"); $date = date('l jS \of F Y h:i:s A'); $isPasswordCorrect = password_verify($_POST['pass'], $donnees['pass']); if($isPasswordCorrect){ //Si le mot de passe es bon, on ne vas pas afficher le formulaire try { $sql = 'INSERT INTO controle(profnom, heure1, id, iduser)VALUES(:profnom, :heure1, :id, :iduser)'; $datas = array(':profnom' => $nom1, ':heure1' => $date, ':id' => $donnees['id'], ':iduser' => $donnees['iduser']); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } session_start(); $_SESSION['nom'] = $_POST['nom']; $_SESSION['iduser'] = $donnees['iduser']; header('Location:enseignant.php'); } } ?>