Problèmes de connexion sur mon site (member.func.php)
Résolu
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
-
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me suis attaqué à l'interface de mon site, pour cela j'ai commencé à créer membre.php et membre.func.php or j'ai rencontré 2 erreurs :
Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 8
et
Fatal error: Call to a member function query() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 8
Membre.func.php :
membre.php :
Merci d'avance svp !!!!
Je me suis attaqué à l'interface de mon site, pour cela j'ai commencé à créer membre.php et membre.func.php or j'ai rencontré 2 erreurs :
Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 8
et
Fatal error: Call to a member function query() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 8
Membre.func.php :
<?php //la function qui va recuperer les infos de l'utilisateur connecté function infos_membre_connecte() { $infos=array(); $pseudo = $_SESSION['pseudo']; $res = $db->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()) { $infos [] = $data; } return $infos; }
membre.php :
<div class='header'> <?php $infos = infos_membre_connecte(); foreach($infos as $info) { echo "Bienvenue ".$info['pseudo']; } ?> </div>
Merci d'avance svp !!!!
A voir également:
- Problèmes de connexion sur mon site (member.func.php)
- Gmail connexion - Guide
- Site de telechargement - Accueil - Outils
- Site comme coco - Accueil - Réseaux sociaux
- Quel site remplace coco - Accueil - Réseaux sociaux
- Site inaccessible n'autorise pas la connexion - Guide
11 réponses
Tu as oublié l'include de ton fichier de connexion à la bdd
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
10
Cela va résoudre les 2 erreurs?
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
10
ça ne marche pas
Montres ton code modifié.
<?php include(functions/connect.php) //la function qui va recuperer les infos de l'utilisateur connecté function infos_membre_connecte() { $infos=array(); $pseudo = $_SESSION['pseudo']; $res = $db->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()) { $infos [] = $data; } return $infos; }
Pardon :
maintenant j'ai ; Parse error: syntax error, unexpected '$infos' (T_VARIABLE) in C:\wamp\www\rs\pages\membre.php on line 4
Call Stack
<div class='header'> <?php include(functions/membre.func.php) $infos = infos_membre_connecte(); foreach($infos as $info) { echo "Bienvenue ".$info['pseudo']; } ?> </div>
maintenant j'ai ; Parse error: syntax error, unexpected '$infos' (T_VARIABLE) in C:\wamp\www\rs\pages\membre.php on line 4
Call Stack
Tapé trop vite :/
ce qui donne : Fatal error: Cannot redeclare infos_membre_connecte() (previously declared in C:\wamp\www\rs\functions\membre.func.php:3) in C:\wamp\www\rs\functions\membre.func.php on line 16
register.func.php :
que faire ?
include('functions/membre.func.php');
ce qui donne : Fatal error: Cannot redeclare infos_membre_connecte() (previously declared in C:\wamp\www\rs\functions\membre.func.php:3) in C:\wamp\www\rs\functions\membre.func.php on line 16
register.func.php :
<?php //la function qui va recuperer les infos de l'utilisateur connecté function infos_membre_connecte() { $infos=array(); $pseudo = $_SESSION['pseudo']; $res = $db->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()) { $infos [] = $data; } return $infos; }
que faire ?
ce qui donne : Fatal error: Cannot redeclare infos_membre_connecte() (previously declared in C:\wamp\www\rs\functions\membre.func.php:3) in C:\wamp\www\rs\functions\membre.func.php on line 16
Dans ta page principape (index.php je crois me souvenir) .. tu as déjà une fonction qui fait AUTOMATIQUEMENT l'include des fichiers qui se trouvent dans le répertoire functions...
(du moins.. le fichier FUNC correspondant à la page que tu affiches )
Donc .. IL NE FAUT PAS EN REFAIRE UN INCLUDE !!!
Ensuite... je ne t'ai jamais demandé de le faire ... moi je je t'ai seulement dis : Il manque ton fichier de connexion à ta BDD !
ce qui était presque bon dans le code donné dans ta première réponse
Le mieux étant de remplacer, pour les fichiers OBLIGATOIRES (comme celui pour se connecter à la BDD), d'utiliser REQUIRE à la place de INCLUDE ... et encore mieux .. REQUIRE_ONCE .. qui n'en fera l'include QUE si il n'est pas déjà fait ailleurs dans ton code...
(sans oublier les QUOTES autour du fichier à inclure bien entendu)
Ce qui donne :
<?php // FICHIER membre.func.php // Connexion à la BDD require_once('functions/connect.php'); /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo){ $res = $db->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()){ $infos [] = $data; } }else{ $infos[] = "Erreur : Variable de Session Utilisateur introuvable"; } return $infos; }
Cordialement,
Jordane
PS: Attention avec $res->rowCount() ... .. rowCount ne garantit pas de bien fonctionner avec tous les serveurs de base de données...
Voir le manuel : https://www.php.net/manual/fr/pdostatement.rowcount.php
L'idéal serait juste de faire un FETCHALL
https://www.php.net/manual/en/pdostatement.fetchall.php
=> ce qui stocke directement le résultat de la requête dans un ARRAY
Voir le manuel : https://www.php.net/manual/fr/pdostatement.rowcount.php
L'idéal serait juste de faire un FETCHALL
https://www.php.net/manual/en/pdostatement.fetchall.php
=> ce qui stocke directement le résultat de la requête dans un ARRAY
Cela donnerai quoi ? comment régler l'erreur à propos de function ? (com du dessus)
Je t'ai donné la réponse !
La seule chose à faire est : NE PAS REMETTRE (dans ton fichier membre.php) L'INCLUDE DE TON FICHIER functions/membre.func.php
Membre.php
membre.func.php :
<div class='header'> <?php $infos = infos_membre_connecte(); foreach($infos as $info) { echo "Bienvenue ".$info['pseudo']; } ?> </div>
membre.func.php :
<?php // FICHIER membre.func.php // Connexion à la BDD require_once('functions/connect.php') /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo){ $res = $db->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()){ $infos [] = $data; } }else{ $infos[] = "Erreur : Variable de Session Utilisateur introuvable"; } return $infos; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le fichier de connexion .... tu as une variable $bdd .....
et dans ta page membre.func.php ..... tu mets $db ????
L'erreur est là !
et dans ta page membre.func.php ..... tu mets $db ????
L'erreur est là !
toujours ce Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 19 et Fatal error: Call to undefined function query() in C:\wamp\www\rs\functions\membre.func.php on line 19
le code que j'ai modifié : (member.func.php)
le code que j'ai modifié : (member.func.php)
<?php /// Connexion à la BDD $connectPhp = __DIR__ . '/functions/connect.php'; if(file_exists($connectPhp)){ require_once($connectPhp); }else{ echo "<br> Erreur : Le fichier $connectPhp n'existe pas"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if($pseudo){ $res = $bdd-->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()){ $infos [] = $data; } }else{ $infos[] = "Erreur : Variable de Session Utilisateur introuvable"; } return $infos; }
J'ai essayé celui-ci j'ai les 2 memes erreurs ... :
<?php //la function qui va recuperer les infos de l'utilisateur connecté function infos_membre_connecte() { $infos=array(); $pseudo = $_SESSION['pseudo']; $res = $bdd->query("SELECT * FROM profil WHERE pseudo = '$pseudo'"); while ($data = $res->rowCount()) { $infos [] = $data; } return $infos; }
le code que j'ai modifié : (register.func.php)
REGISTER ???????
On travaille sur le fichier MEMBRE depuis tout à l'heure .... !
Pourquoi es-tu allé dans ce fichier ???????
Bon... reprenons
Dans le fichier membre.func.php
On va régler les soucis d'include...
Comme le proposait hharchi9 on va utiliser $_SERVER['DOCUMENT_ROOT']
Donc :
Page membre.func.php :
<?php //*********************************************// //Fichier : membre.func.php //*********************************************// //------------------------------------------- // Include du fichier de connexion à la BDD //------------------------------------------- $DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "/rs"; // chemin racine de ton site $CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site if(file_exists($CnxBDD)){ require_once($CnxBDD) ; }else{ echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; $sql = "SELECT * FROM profil WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //exécution de la requête try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $infos = $prepare->fetchall(); }catch(Exception $e){ die('Erreur : '.$e->getMessage()); } return $infos; }
Page membre.php
<div class='header'> <?php $infos = infos_membre_connecte(); foreach($infos as $info){ echo "Bienvenue ".$info['pseudo']; } ?> </div>
Fichier connect.php
<?php /** * Fichier connect.php **/ //--------------------------------// //démarrage de session //--------------------------------// if(session_id() == '') { session_start(); } //--------------------------------// // Infos de connexion à la BDD $serveur = "localhost"; $user = "root"; $pwd = ""; $dbname = "rs"; //--------------------------------// // Connexion //--------------------------------// try { $bdd = new PDO ("mysql:host=".$serveur.";dbname=".$dbname.";charset=utf8", $user,$pwd); }catch(Exception $e) { die('Erreur de connexion à la BDD '.$e->getMessage()); } ?>
... et pour ce qui est de ta page register ... REMETS CE QU'IL Y AVAIT AVANT !
J'ai pas touché au register.php, j'ai fais une erreur textuelle. Sinon j'ai appliqué toutes ces modifs (encore merci) et j'ai toujours :
-Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 29
-Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 29
-Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 29
-Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 29
Etrange...je mets quand même le lien de la vidéo à l'appui : https://www.youtube.com/watch?v=r8LLuR8T6HQ
Tu peux essayer ça pour voir ?
<?php //*********************************************// //Fichier : membre.func.php //*********************************************// ini_set("display_errors", "1"); error_reporting(E_ALL); //------------------------------------------- // Include du fichier de connexion à la BDD //------------------------------------------- $DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "/rs"; // chemin racine de ton site $CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site if(file_exists($CnxBDD)){ require_once($CnxBDD) ; }else{ echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ global $bdd; // déclaration globale de BDD $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; $sql = "SELECT * FROM profil WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //exécution de la requête try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $infos = $prepare->fetchall(); }catch(Exception $e){ die('Erreur : '.$e->getMessage()); } return $infos; }
Donc plus d'erreur visiblement...
Donc maintenant.. il faut regarder le code qui te sert à afficher .
par contre... c'est visiblement un NOUVELLE QUESTION .. donc ... tu clos cette discussion et tu en ouvres une autre !
Et au passage ... tu fourniras le code source GÉNÉRÉ de ta page
(c'est à dire .. tu affiches ta page dans ton navigateur, tu fais un clic droit dessus, tu sélectionnes "afficher le code source" ... et tu le copie/colle dans le forum )
Donc maintenant.. il faut regarder le code qui te sert à afficher .
par contre... c'est visiblement un NOUVELLE QUESTION .. donc ... tu clos cette discussion et tu en ouvres une autre !
Et au passage ... tu fourniras le code source GÉNÉRÉ de ta page
(c'est à dire .. tu affiches ta page dans ton navigateur, tu fais un clic droit dessus, tu sélectionnes "afficher le code source" ... et tu le copie/colle dans le forum )
C'est entendu :) j'obtiens ceci :
Le code qui sert à afficher est celui ci n'est ce pas ?
<!DOCTYPE html> <html> <head> <link rel='stylesheet' href='css/style.css'> </head> <meta charset="UTF-8" > <body> <div id='content'> <div class='header'> </div> </div> </body>
Le code qui sert à afficher est celui ci n'est ce pas ?
<div class='header'> <?php $infos = infos_membre_connecte(); foreach($infos as $info){ echo "Bienvenue ".$info['pseudo']; } ?> </div>
Le code qui sert à afficher est celui ci n'est ce pas
Oui.
A la limite pour tester on pourrait essayer ça :
<div class='header'> <?php $infos = infos_membre_connecte(); print_r( $infos ); foreach($infos as $info){ echo "Bienvenue ".isset($info['pseudo'])?$info['pseudo']:''; } ?> </div>
et dans le fichier
<?php //*********************************************// //Fichier : membre.func.php //*********************************************// ini_set("display_errors", "1"); error_reporting(E_ALL); //------------------------------------------- // Include du fichier de connexion à la BDD //------------------------------------------- $DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "/rs"; // chemin racine de ton site $CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site if(file_exists($CnxBDD)){ require_once($CnxBDD) ; }else{ echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ global $bdd; // déclaration globale de BDD $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; $sql = "SELECT * FROM profil WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //le temps des tests: $infos['sql'] = $sql; $infos['params'] = $params; //exécution de la requête try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $infos = $prepare->fetchall(); }catch(Exception $e){ die('Erreur : '.$e->getMessage()); } return $infos; }
J'obtiens un bandeau blanc sur fond noir avec "Array ()"
modifie comme ça :
?php //*********************************************// //Fichier : membre.func.php //*********************************************// ini_set("display_errors", "1"); error_reporting(E_ALL); //------------------------------------------- // Include du fichier de connexion à la BDD //------------------------------------------- $DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "/rs"; // chemin racine de ton site $CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site if(file_exists($CnxBDD)){ require_once($CnxBDD) ; }else{ echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte(){ global $bdd; // déclaration globale de BDD $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; $sql = "SELECT * FROM profil WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //le temps des tests: $infos['sql'] = $sql; $infos['params'] = $params; //exécution de la requête try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $infos['result'] = $prepare->fetchall(); }catch(Exception $e){ die('Erreur : '.$e->getMessage()); } return $infos; }
Dans ta bdd .. tu prends la requête que tu as dans ton code ... tu remplaces la variable par celle qui est présente dans ta page ( le print que je t'ai fait ajouter....) et tu testes la requête directement dedans (via phpmyadmin par exemple ou via un logiciel comme heidisql : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql )
Et donc.. la requête à tester est :
et pour ce qui est du message d'erreur, essayes ça :
Et donc.. la requête à tester est :
SELECT * FROM profil WHERE pseudo ='xzak47'
et pour ce qui est du message d'erreur, essayes ça :
<div class='header'> <?php $result= infos_membre_connecte(); //----------------------------------------// //le temps des tests : //----------------------------------------// echo "<pre> Result de la fonction : <br>"; print_r( $infos ); echo "</pre>"; //----------------------------------------// $infos = $result['result']; foreach($infos as $info){ $pseudo = isset($info['pseudo'])?$info['pseudo']:''; echo "Bienvenue ". $pseudo; } ?> </div>
Après rajout du point, j'ai toujours ce Parse error: syntax error, unexpected 'echo' (T_ECHO) in C:\wamp\www\rs\pages\membre.php on line 15
sinon pour le pb de requete, il faut donc que je crée cette table rs.profil ?
<div class='header'> <?php $result= infos_membre_connecte(); //----------------------------------------// //le temps des tests : //----------------------------------------// echo "<pre> Result de la fonction : <br>"; print_r( $infos ); echo "</pre>"; //----------------------------------------// $infos = $result['result']; foreach($infos as $info){ $pseudo = isset($info['pseudo'])?$info['pseudo']:'' echo "Bienvenue ". $pseudo; } ?> </div
sinon pour le pb de requete, il faut donc que je crée cette table rs.profil ?