Function recuperer_info_membre_choisi() en pdo
RésoluZakarya93 Messages postés 1026 Statut Membre -
J'ai cette function que je voudrais convertir en pdo :
<?php
// la fonction qui va recuperer les informations de la personne choisi par l'utilisateur
function recuperer_info_membre_choisi()
{
$results = array();
$pseudo = mysql_real_escape_string(htmlentities($_GET['pseud
o']));
$query = mysql_query("SELECT * FROM utilisateurs WHERE pseudo='$pseudo'");
while ($row = mysql_fetch_assoc($query))
{
$results[] = $row;
}
return $results;
}
comme j'ai fais maintes erreurs à ce sujet, je pourrais solliciter votre aide ? je vous remercie d'avance: )
10 réponses
Conversion d'une fonction PHP qui récupère les informations d'un membre en PDO et difficultés rencontrées lors de la migration du code original vers une requête préparée. Plusieurs contributions évoquent des erreurs fréquentes comme l'utilisation de variables non définies, des arrays non initialisés, et des enjeux de sécurité, en proposant des ajustements avec PDO et fetch. Des réponses illustrent l'évolution du code, passant d'inclusions répétées à une fonction PDO, avec corrections sur les appels, la gestion des paramètres et le traitement des résultats via fetchAll. Une nuance utile porte sur les pratiques de sécurité et sur le moment où effectuer les conversions, afin d'éviter de mélanger transformations et requêtes.
-
<?php //----------------------------- //Profile.php //----------------------------- include_once('body/header.php'); include_once('body/menu.php'); ?> <div class='info'> <?php if(!function_exists('recuperer_info_membre_choisi')){ echo "ERREUR : La fonction recuperer_info_membre_choisi n'existe pas ! "; } $pseudo = isset($_GET['pseudo'])?$_GET['pseudo']:NULL; $infos_membres_choisis = recuperer_info_membre_choisi($pseudo); foreach($infos_membres_choisis as $info_membre_choisi) { echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>"; echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>"; echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>"; echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>"; } ?> </div>
-
Essaye ça :
<?php // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur function recuperer_info_membre_choisi() { global $bdd; // déclaration globale de BDD $pseudo = htmlspecialchars(strip_tags($_GET['pseud o'])); $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo"); $query->execute(array(':pseudo' =>$pseudo)); $results=$query->fetchall(); return $results; }-
J'obtiens ça ; Parse error: syntax error, unexpected 'body' (T_STRING) in C:\wamp\www\rs\pages\profile.php on line 3
profile.php :
<?php include('functions/membre.func.php); include('body/header.php'); include('body/menu.php'); ?> <div class='info'> <?php $info_membres_choisi = recuperer_info_membre_choisi(); foreach($infos_membres_choisis as $info_membre_choisi { ?> <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'> <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p> <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p> <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p> <?php } ?> </div> -
-
-
-
-
Commence par nous remontrer le code CORRIGE qu'on sache où tu en es !
Penses également à nous mettre le code de ta fonction recuperer_info_membre_choisi()-
Bah c'est le même sauf que j'ai rajouté ma parenthèse :
<?php include('functions/membre.func.php'); include('body/header.php'); include('body/menu.php'); ?> <div class='info'> <?php $info_membres_choisi = recuperer_info_membre_choisi(); foreach($infos_membres_choisis as $info_membre_choisi { ?> <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'> <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p> <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p> <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p> <?php } ?> </div>
profile.func.php :
<?php // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur function recuperer_info_membre_choisi() { global $bdd; // déclaration globale de BDD $pseudo = htmlspecialchars(strip_tags($_GET['pseudo'])); $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo"); $query->execute(array(':pseudo' =>$pseudo)); $results=$query->fetchall(); return $results; } -
-
Ne vois tu pas, quand tu postes ton message dans le forum... que les couleurs de tes différentes lignes peuvent sembler "bizarre" aux lignes 3 4 ... ????
Penses bien qu'une chaine de caractères .. commence ET SE TERMINE par des quotes ! (simples ou doubles..peu importe... du moment que c'est le mêmes qui ouvrent et qui ferment !) -
-
Ah mince j'ai juste fait un c/c de ce topic, je l'avais déjà faite la modif ligne 2 sur mon notepad++ pardon
C'est bien pour ça .. qu'a chaque fois que je te demande le code ... je veux celui QUI EST SUR TON PC ... et pas celui du topic ! .. ce n'est pas la première fois que je te le dis.....
Merci de faire attention.
-
-
Que vient faire l'include
include('functions/membre.func.php');
dans ce code ?
Alors que tu utilises la page profile.func.php ...
l'erreur ne serait-elle pas là ?
Et pourquoi est-ce un INCLUDE au lieu d'un REQUIRE_ONCE (comme pour tes autres pages... voir mes remarques précédentes .... dans tes précédentes questions.....)-
Vous aviez dit que cela était inutile : https://forums.commentcamarche.net/forum/affich-32094140-notice-a-session-had-already-been-started-ignoring-session-st#p32094162
-
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
et avec le require_once j'ai les 2 memes erreurs
Normale ... car VU qu'il est déjà déclaré dans ton INDEX.PHP ... il ne le remet pas ... contrairement à l'include (ou au require) simple (c'est à dire ...sans le ONCE )....
Pour ce qui est des messages d'erreurs... et pour calmer mes doutes... pourrais tu (encore) ... nous mettre le code de tes deux pages ?
PS: Si tu pouvais utiliser le BOUTON : REPONDRE .. au lieu de mettre tes messages en commentaires... cela rendrait le suivi de la discussion plus simple. Merci.
-
Profile.php
<?php require('functions/profile.func.php'); include('body/header.php'); include('body/menu.php'); ?> <div class='info'> <?php $info_membres_choisi = recuperer_info_membre_choisi(); foreach($infos_membres_choisis as $info_membre_choisi) { ?> <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>"" height='200' width='200' alt='avatar'> <p><strong>Email : </strong><em><?php echo $info_membre_choisi['email']; ?></em></p> <p><strong>Sexe : </strong><em><?php echo $info_membre_choisi['sexe']; ?></em></p> <p><strong>A propos de vous : </strong><em><?php echo $info_membre_choisi['apropos']; ?></em></p> <?php } ?> </div>
Profile.func.php :
<?php // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur function recuperer_info_membre_choisi() { global $bdd; // déclaration globale de BDD $pseudo = htmlspecialchars(strip_tags($_GET['pseudo'])); $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo"); $query->execute(array(':pseudo' =>$pseudo)); $results=$query->fetchall(); return $results; }-
P.S.: bien que ce que tu fais ne soit pas incorrect, par convention on stocke les infos non transformées dans la BDD, et on les convertit (ici
htmlspecialchars(strip_tags
) uniquement dès la sortie. Autrement dit cette conversion n'a pas sa place dans les requêtes, mais uniquement lors de l'affichage du pseudo sur la page.- du coup ça donne ? :
?php // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur function recuperer_info_membre_choisi() { global $bdd; // déclaration globale de BDD $pseudo = ($_GET['pseudo'])); $query = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo=:pseudo"); $query->execute(array(':pseudo' =>$pseudo)); $results=$query->fetchall(); return $results; }
-
-
Bon... je recommence ...
La ligne 2 est INUTILE .....
Si tu essaies de comprendre un minimum ce que tu codes ... tu vas comprendre que tu fais DEJA un include de tes fonctions dans ton INDEX.PHP.
( Lorsque tu affiches une page toto .... tu fais EN MEME TEMPS un include de toto.func.php ) !
Bon.. ensuite :
Evite de récupérer les variables GET DANS tes fonctions... traite les AVANT .. et passe les en PARAMETRES DE TA FONCTION.
de plus (comme déjà dit...) ... Pour toutes tes variables de type POST / GET / SESSION / COOKIE ...... vérifie AVANT de les utiliser... qu'elles existent. Cela se fait via la fonction ISSET.
Essayes ça :
Profile.php<?php //----------------------------- //Profile.php //----------------------------- include_once('body/header.php'); include_once('body/menu.php'); ?> <div class='info'> <?php $pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL; $info_membres_choisi = recuperer_info_membre_choisi(pseudo); foreach($infos_membres_choisis as $info_membre_choisi) { echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>"; echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>"; echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>;" echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>"; } ?> </div>
(tu noteras qu'encore une fois.. je t'ai tout remis en PHP (pour éviter d'ouvrir/fermer des balises PHP partout dans ton code ! )
//Profile.func.php<?php //----------------------------- //Profile.func.php //----------------------------- // la fonction qui va recuperer les informations de la personne choisi par l'utilisateur function recuperer_info_membre_choisi($pseudo = NULL) { global $bdd; // déclaration globale de BDD $result = array(); if($pseudo){ $sql = "SELECT * FROM utilisateurs WHERE pseudo=:pseudo" ; $query = $bdd->prepare($sql); $query->execute(array(':pseudo' =>$pseudo)); $result=$query->fetchall(); } return $result; }
edit : ajout d'un IF dans le fichier profil.func.php
Cordialement,
Jordane -
J'ai mtn cette erreur : Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in C:\wamp\www\rs\pages\profile.php on line 18
-
- C corrigé ! j'ai mtn 3 erreurs :'(
Notice: Use of undefined constant pseudo - assumed 'pseudo' in C:\wamp\www\rs\pages\profile.php on line 12
Notice: Undefined variable: infos_membres_choisis in C:\wamp\www\rs\pages\profile.php on line 14
Call Stack
Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\profile.php on line 14
Call Stack
-
-
Je fais beaucoup d'erreur ce soir .... faut que j'aille dormir... ^^
Si tu regardes bien à la ligne 12 .. tu vas voir que j'ai oublié un $ ....
Spoiler$pseudo = isset($GET|'pseudo'])?$GET|'pseudo']:NULL; $info_membres_choisi = recuperer_info_membre_choisi($pseudo);
-
Tu peux me reposter le code corrigé de ta page //Profile.php ?
-
<?php //----------------------------- //Profile.php //----------------------------- include_once('body/header.php'); include_once('body/menu.php'); ?> <div class='info'> <?php $pseudo = isset($GET['pseudo'])?$GET['pseudo']:NULL; $info_membres_choisis = recuperer_info_membre_choisi($pseudo); foreach($infos_membres_choisis as $info_membre_choisi) { echo"<img src='avatar/". $info_membre_choisi['avatar']."' height='200' width='200' alt='avatar'>"; echo "<p><strong>Email : </strong><em>".$info_membre_choisi['email']."</em></p>"; echo "<p><strong>Sexe : </strong><em>".$info_membre_choisi['sexe']."</em></p>"; echo "<p><strong>A propos de vous : </strong><em>".$info_membre_choisi['apropos']."</em></p>"; } ?> </div>
-