Problème de récupération

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 23 oct. 2016 à 15:16
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 - 13 nov. 2016 à 23:42
Bonjour,

J'ai voulu améliorer mon code mais j'arrive pas au résultat:
Pouvez vous me dire ce qu'il cloche ?



Avant j'avais ça, qui fonctionne très bien :

$requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND motdepasse = ?");
		$requser->execute(array($pseudoconnect, $mdpconnect));
		$userexist = $requser->rowCount(); 



Maintenant je remplace avec ceci est, l'id utilisateur n'est pas récupéré donc connexion impossible sans message d'erreur :

$prep_requser = "SELECT * FROM membres WHERE pseudo = ? AND motdepasse = ?";
		try{
			$requser = $bdd->prepare($prep_requser);
			$requser->execute(array($pseudoconnect, $mdpconnect));
		}catch(Exception $e){
			echo "Erreur :".$e->getMessage();
		}
		$req_userexist = $requser->fetchAll();
		$userexist = count($req_userexist);


Merci pour votre aide.




2 réponses

jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705
23 oct. 2016 à 16:25
Bonjour,

Comme je te l'avais déjà conseillé .. il est préférable de placer la requête et les données dans des variables à part .... cela permet, par exemple, d'en faire des ECHO pour savoir ce qu'elles contiennent réellement...

Donc ton code devient :
$sql = "SELECT * FROM membres WHERE pseudo = :pseudoconnect AND motdepasse = :mdpconnect";
$datas = array(":pseudoconnect"=>$pseudoconnect,":mdpconnect"=> $mdpconnect)
try{
  $prepare = $bdd->prepare($prep_requser);
  $prepare->execute($datas);
  $arr_Resultat = $prepare->fetchAll();
}catch(Exception $e){
  echo "Erreur :".$e->getMessage();
}


//si la requete a retourné un  résultat et que count retourne 1 ou plus..
$userexist = !empty($arr_Resultat) && count($arr_Resultat)>0 ? true : false;

//----------------------------
//le temps des tests :
//----------------------------
echo "<pre>La requete est : ".$sql."</pre>";
echo "Les datas sont :<br><pre>";
print_r($datas);
echo "</pre>";


//----------------------------

if($userexist){
  echo "l'utilisateur existe";
   
}else{
  echo "l'utilisateur n'existe pas";
}

0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
Modifié par flo39400 le 29/10/2016 à 19:20
Bonsoir, j'ai un code erreur si je test votre code, je vais modifier juste le miens et faire des echo comme vous.

code erreur: Parse error: syntax error, unexpected 'try' (T_TRY)
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705 > flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021
29 oct. 2016 à 21:53
J'ai juste oublié un point-virgule à la ligne avant le try
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
29 oct. 2016 à 22:57
Donc je vous affiche le résultat:

Donc le code erreur: Notice: Undefined variable: prep_requser

Puis le reste:

Erreur :SQLSTATE[42000]: Syntax error or access violation: 1065 Query est vide

La requete est : SELECT * FROM membres WHERE pseudo = :pseudoconnect AND motdepasse = :mdpconnect

Les datas sont :

Array
(
[:pseudoconnect] => DieuTopGun
[:mdpconnect] => 10eec3f9771022d3aacc8bbda28be42548a6a022
)

l'utilisateur n'existe pas

Pourtant sais l’utilisateur excite vraiment donc voila....
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
29 oct. 2016 à 23:16
J'ai modifier le code car $sql n'est pas affecter.


$prep_requser = "SELECT * FROM membres WHERE pseudo = :pseudoconnect AND motdepasse = :mdpconnect";
$datas = array(":pseudoconnect"=>$pseudoconnect,":mdpconnect"=> $mdpconnect);
try{
  $prepare = $bdd->prepare($prep_requser);
  $prepare->execute($datas);
  $arr_Resultat = $prepare->fetchAll();
}catch(Exception $e){
  echo "Erreur :".$e->getMessage();
}


//si la requete a retourné un  résultat et que count retourne 1 ou plus..
$userexist = !empty($arr_Resultat) && count($arr_Resultat)>0 ? true : false;

//----------------------------
//le temps des tests :
//----------------------------
echo "<pre>La requete est : ".$sql."</pre>";
echo "Les datas sont :<br><pre>";
print_r($datas);
echo "</pre>";


//----------------------------

if($userexist){
  echo "l'utilisateur existe";
   
}else{
  echo "l'utilisateur n'existe pas";
}
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
Modifié par flo39400 le 29/10/2016 à 23:19
Et la écran blanc pu rien....
Adresse de destination http://localhost/2017/profil.php?id=
Normalement l'id utilisateur est récupérer, la non... pourtant pas de message d'erreur...
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
29 oct. 2016 à 23:45
J'avance mais je suis tombé sur une autre erreur, vraiment je comprend pas dès que la solution est trouvé sa marche pas quand même....

if(isset($_POST['formconnexion']))
{
	$pseudoconnect = htmlspecialchars($_POST['pseudoconnect']);
	$mdpconnect = sha1($_POST['mdpconnect']);
	if(!empty($pseudoconnect) AND !empty($mdpconnect))
	{
$prep_requser = "SELECT * FROM membres WHERE pseudo = :pseudoconnect AND motdepasse = :mdpconnect";
$datas = array(":pseudoconnect"=>$pseudoconnect,":mdpconnect"=> $mdpconnect);
try{
  $prepare = $bdd->prepare($prep_requser);
  $prepare->execute($datas);
  $arr_Resultat = $prepare->fetchAll();
}catch(Exception $e){
  echo "Erreur :".$e->getMessage();
}


//si la requete a retourné un  résultat et que count retourne 1 ou plus..
$userexist = !empty($arr_Resultat) && count($arr_Resultat)>0 ? true : false;


if($userexist)
		{
		$prep_insertip = "UPDATE membres SET adresse_ip = ? WHERE id = ?";	
		try{
			$insertip = $bdd->prepare($prep_insertip);
			$insertip->execute(array($_SERVER['REMOTE_ADDR'], $_SESSION['id']));
		}catch(Exception $e){
			echo "Erreur :".$e->getMessage();
		}	
			
		$insertip = $bdd->prepare("UPDATE membres SET adresse_ip = ? WHERE id = ?");
		$insertip->execute(array($_SERVER['REMOTE_ADDR'], $_SESSION['id']));
		
		
			if(isset($_POST['rememberme']))
			{
			setcookie('pseudo',$pseudoconnect,time()+5*60,null,null,false,true);
			setcookie('password',$mdpconnect,time()+5*60,null,null,false,true);
			}
			$userinfo = $requser->fetch();

			$_SESSION['id'] = $userinfo['id'];
			$_SESSION['pseudo'] = $userinfo['pseudo'];
			$_SESSION['mail'] = $userinfo['mail'];
			$_SESSION['rang'] = $userinfo['rang'];
			$_SESSION['avatar'] = $userinfo['avatar'];
			header("Location: index.php?id=".$_SESSION['id']);
		}
		else
		{
			$erreur = "Mauvais pseudo ou mot de passe !";
		}
	}
	else
	{
		$erreur = "Tous les champs doivent être complétés !";
	}
}



Code erreur:

1 Notice: Undefined variable: requser in
2 Fatal error: Call to a member function fetch() on null in

ligne 80 au niveau du fetch (
$userinfo = $requser->fetch();
)
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
13 nov. 2016 à 22:29
Bon je vais pas y modifier je verrais sa plus tard...
0
jordane45 Messages postés 38301 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 novembre 2024 4 705
13 nov. 2016 à 23:42
La variable $requser n'est plus utilisée.
A la place... toutes les données de l'utilisateurs sont déjà présentes (grâce au fetchAll) dans un array
 $arr_Resultat = $prepare->fetchAll();

fais donc un print_r($arr_Resultat) et regarde ce qu'il contient.... tout y est !
0