Problème lié à une réquête mysql

Résolu/Fermé
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - Modifié le 17 févr. 2020 à 13:10
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - 18 févr. 2020 à 15:28
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:

 
<?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>


9 réponses

jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
17 févr. 2020 à 12:57
Bonjour

Tu as un message d'erreur ?
Vérifie également la ligne 4 de ton premier code ça me semble faux
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
17 févr. 2020 à 13:11
C'est une erreur lors de la copie du code, j'ai corrigé ça, c'est normalement

 $nom1 =  !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; 
0
yg_be Messages postés 22756 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 mai 2024 1 480
Modifié le 17 févr. 2020 à 14:22
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?
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
17 févr. 2020 à 14:49
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
0
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
17 févr. 2020 à 15:14
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
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
17 févr. 2020 à 15:35
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();	

?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
17 févr. 2020 à 15:30
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");

?>

0
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
Modifié le 17 févr. 2020 à 15:58
ç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 :
<?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 ?

0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
17 févr. 2020 à 16:43
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
Modifié le 17 févr. 2020 à 16:47
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 )"
0
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
17 févr. 2020 à 17:55
Ce qui nr marchait pas ??? Ben jsute le fait que tu ne faisais rien pour l'afficher... Tout bêtement.
0
yg_be Messages postés 22756 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 mai 2024 1 480
Modifié le 17 févr. 2020 à 19:34
de quelle erreur parles-tu? ce qui est affiché montre simplement que tout se passe bien avec la requête SELECT.
en fait, tu écris "ça marche pas", sans expliquer ce que tu reçois et ce que tu voudrais recevoir.
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 > yg_be Messages postés 22756 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 mai 2024
18 févr. 2020 à 10:16
Il ya une suite de code qui doit s'éxécuter, hors ça ne se fait pas, voilà pourquoi je considère cette affichage comme une erreur, normalement,
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
18 févr. 2020 à 10:30
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:

<?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');
			
} 
	 
}		  
			  
?>	
 
0
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
Modifié le 18 févr. 2020 à 11:47
Tu as lu le code que je t'ai donné ?
Les commentaires au bout des lignes ??!
De là tu ne vois pas ce qu'il faut modifier ??!!
0
modemo2018 Messages postés 231 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 > jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024
18 févr. 2020 à 15:28
Oui j'ai lu ton code et lu les commentaires, et j'ai apporté quelque modification selon mon objectif
J'ai réussit à résoudre le problème, le problème etait au niveau de la vérification du mot de passe.

Merci beaucoup
0
yg_be Messages postés 22756 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 5 mai 2024 1 480
18 févr. 2020 à 11:49
tu n'as pas expliqué pourquoi tu faisais ce travail.
si tu veux apprendre et progresser, je suggère que tu commences par des exercices plus simples, que tu peux fais toi-même.
0