Problème de récupération
Résolu
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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 :
Maintenant je remplace avec ceci est, l'id utilisateur n'est pas récupéré donc connexion impossible sans message d'erreur :
Merci pour votre aide.
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.
A voir également:
- Problème de récupération
- Récupération de déchets - Guide
- Convertisseur récupération de texte - Guide
- Recuperation video youtube - Guide
- Impossible de récupérer mon compte gmail - Guide
- Récupération message whatsapp - Guide
2 réponses
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 :
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"; }
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....
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 (
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();)
code erreur: Parse error: syntax error, unexpected 'try' (T_TRY)
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....
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...