Parse error: syntax error, unexpected '$bdd' (T_VARIABLE),
RésoluZakarya93 Messages postés 1026 Statut Membre -
J'ai cette erreur : Parse error: syntax error, unexpected '$bdd' (T_VARIABLE), expecting '{' in C:\wamp\www\rs\functions\liste_membre.func.php on line 5
Sachant que je voulais convertir ce script (membre.func.php) en pdo :
<?php
//la function qui va récupérer le pseudo et l'avatar des membres sauf de celui connecté
function recuperer_pseudo_avatar()
{
$results = array();
$query = mysql_query("SELECT pseudo,avatar FROM utilisateurs WHERE pseudo!='{$_SESSION['pseudo']}'");
while($row = mysql_fetch_assoc($query))
{
$results[] = $row;
}
return $results;
}
?>
J'ai fais :
<?php
//la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté
function recuperer_pseudo_avatar()
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
//donc la, la verification:
$req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"');
$etat = $req->fetchColumn();
if($etat == 0){
return 0;
}else{
return 1;
}
}
?>
Pouvez-vous me corriger svp et voir mon erreur ? Merci d'avance :)
4 réponses
Une erreur de syntaxe survient lors de la tentative de conversion d'une fonction PHP utilisant MySQL vers PDO pour récupérer le nom d'utilisateur et l'image du membre, en excluant le membre connecté. Les solutions proposées incluent l'utilisation d'une variable globale pour le PDO et l'usage de requêtes préparées afin d'obtenir les noms d'utilisateur et images tout en filtrant le compte courant. Les échanges insistent aussi sur l'importance des balises PHP correctes, du démarrage de session et de l'orthographe des accolades et méthodes fetch pour éviter les erreurs de parse et de retour. En pratique, il est recommandé d'employer une requête préparée qui retourne un tableau, puis d'exécuter et d'afficher les noms d'utilisateur et images via une boucle.
-
{ oubliée.
-
J'ai maintenant 3 erreurs :
Notice: Undefined variable: pseudo in C:\wamp\www\rs\functions\liste_membre.func.php on line 7
Notice: Undefined variable: avatar in C:\wamp\www\rs\functions\liste_membre.func.php on line 7
Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\liste_membre.php on line 10 -
-
Corrigez mon code svp :
<?php //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté function recuperer_pseudo_avatar() { global $bdd; // déclaration globale de BDD $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ''); //donc la, la verification: $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"'); $etat = $req->fetchColumn(); if($etat == 0){ return 0; }else{ return 1; } } ?> -
-
-
-
Bonsoir, je vais me méler un peu de cette discussion...
Déjà ... NE REMETS PAS la connexion à ta BDD dans ton code !
Tu as un fichier de connexion.. tu l'importe via un REQUIRE ça suffira ! (comme on l'a fait dans tes autres codes !!!!)
Ton souci de variable BDD non déclarée... vient du fait qu'il faut que tu penses à mettre un global $bdd; dans chacune de tes fonctions !<?php //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté function recuperer_pseudo_avatar($pseudo,$avatar="defaut.jpg") { global $bdd; // déclaration globale de BDD $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"'); $etat = $req->fetchColumn(); // ceci ne fonctionnera jamais ! /*if($etat == 0){ return 0; }else{ return 1; } */ // commence par faire un PRINT de ta variable $etat pour savoir ce qu'elle contient print_r($etat); // Ensuite si ton but est de savoir si la requête a retourné quelquechose tu peux faire: return count($etat)>0 ? 1 : 0 ; } ?>
Penses aussi à nous montrer COMMENT tu appelles la fonction dans ton code .... quels arguments tu lui passes (car il en faut... il faut le pseudo.. ET l'avatar .... )*
Cordialement,
Jordane-
(script liste_membre.php juste au dessus)
J'ai entré ceci :<?php //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté function recuperer_pseudo_avatar($pseudo,$avatar="defaut.jpg") { global $bdd; // déclaration globale de BDD $req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'" AND avatar="'.$avatar.'"'); $etat = $req->fetchColumn(); // commence par faire un PRINT de ta variable $etat pour savoir ce qu'elle contient print_r($etat); // Ensuite si ton but est de savoir si la requête a retourné quelquechose tu peux faire: return count($etat)>0 ? 1 : 0 ; } ?>
et j'obtiens :
Warning: Missing argument 1 for recuperer_pseudo_avatar(), called in C:\wamp\www\rs\pages\liste_membre.php on line 8 and defined in C:\wamp\www\rs\functions\liste_membre.func.php on line 3
Notice: Undefined variable: pseudo in C:\wamp\www\rs\functions\liste_membre.func.php on line 6
Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\liste_membre.php on line 10
-
-
Tu veux récupérer l'avatar de tous les users sauf de celui qui est connecté ?
Dans ce cas... ta requête n'est pas bonne !
Change le code ainsi ://la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté function recuperer_pseudo_avatar() { global $bdd; // déclaration globale de BDD $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $strWhere = $pseudo ? " WHERE pseudo !='$pseudo' " : '' ; $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere"; $req = $bdd->query($sql); return $req->fetchColumn(); }
Et donc là .. dans ta page liste_membre.php<?php include('functions/membre.func.php'); include('body/header.php'); include('body/menu.php'); ?> <h3>Liste des membres</h3> <?php $pseudos_avatars = recuperer_pseudo_avatar(); foreach($pseudos_avatars as $pseudo_avatar) { echo "<p><a href=''>".$pseudo_avatar['pseudo']."</a></p> <img src='avatar/".$pseudo_avatar['avatar']."' height='100' width='100' alt='avatar'>"; }
PS: Tu remarqueras que j'ai tout fait dans le PHP .. pour éviter d'ouvrir/fermer des balises php un peu partout dans le code !-
-
-
-
-
<? //la function qui va récuperer le pseudo et l'avatar du membre sauf de celui connecté function recuperer_pseudo_avatar() { global $bdd; // déclaration globale de BDD $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $strWhere = $pseudo ? " WHERE pseudo !='$pseudo' " : '' ; $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere"; $req = $bdd->query($sql); return $req->fetchColumn(); }
-
-
Désolé.. pas besoin de mettre de fecth avec query ...
Mais de toutes façons.. il vaut mieux passer par les requête préparées :
function recuperer_pseudo_avatar() { global $bdd; // déclaration globale de BDD $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo'] : NULL; $strWhere = $pseudo ? " WHERE pseudo !='$pseudo' " : '' ; $sql = "SELECT pseudo, avatar FROM utilisateurs $strWhere"; $req = $bdd->prepare($sql); $req->execute(); $resultat = $req->fetchall(); return $resultat; }
Et pour tester,
<?php require_once('functions/membre.func.php'); include('body/header.php'); include('body/menu.php'); ?> <h3>Liste des membres</h3> <?php $pseudos_avatars = recuperer_pseudo_avatar(); // le temps des tests : print_r($pseudos_avatars); foreach($pseudos_avatars as $pseudo_avatar) { echo "<p><a href=''>".$pseudo_avatar['pseudo']."</a></p> <img src='avatar/".$pseudo_avatar['avatar']."' height='100' width='100' alt='avatar'>"; }