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   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 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

 $nom1 =  !empty ( $_POST['nom'] ) ? $_POST['nom'] : NULL; 
0
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?
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
ç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 226 Date d'inscription   Statut Membre Dernière intervention   2
 
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 226 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 226 Date d'inscription   Statut Membre Dernière intervention   2
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 226 Date d'inscription   Statut Membre Dernière intervention   2 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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