[RESOLU] Fonction PHP retournant résultat d'une requête SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Fonction PHP retournant résultat d'une requête SQL

Re: Fonction PHP retournant résultat d'une requête SQL

par Grapain » 21 déc. 2016, 23:02

Ouraaaaaaaaaahh j'ai réglé mon problème grâce au lien que tu m'as donné : faq-tutoriels/encodage-utf-t245062.html
Ce lien il m'a permis de corrigé pas mal d'erreur, à ceux qui auront le même problème d'encodage que moi je vous le recommande :) .
Un grand MERCII encore a toi moogli ;) +1
@+


[RESOLU]

Re: Fonction PHP retournant résultat d'une requête SQL

par moogli » 21 déc. 2016, 18:31

il est possible que cela soit un problème d'encodage.
est ce que l'encodage de ton fichier, du html (de toute la chaîne en faite) est le même que la base ?

tu peux regarder cela : faq-tutoriels/encodage-utf-t245062.html

@+

Re: Fonction PHP retournant résultat d'une requête SQL

par Grapain » 21 déc. 2016, 14:41

Salut,
Avant de consulter ta réponse je me suis rendu compte que c'était un problème d'accessibilité ^^ ...
J'ai essayer le code que tu m'as mis et il marche parfaitement :D .
Par contre il me reste juste un problème à régler et je ne vois pas encore comment mais je sais que c'est du a de l'encodage.
Je m'explique:
Si je tape :
echo recupEvenement('Mardi', 'Trinite',$bdd);
J'ai un affichage alors que je ne devrait pas en avoir puisque dans ma bdd "Trinité" contient bien un "é", en revanche si je ne le met pas j'ai l'affichage.
De même pour les lieux avec un "ç" ou autre.
Ainsi si je tape avec les caractère spéciaux il me refuse l'affichage, sinon si je lui passe en paramêtre le texte brut sans caractère spéciaux et trouve la ligne mais ne n'est pas ce que je recherche.
Je souhaite que si je tape:
echo recupEvenement('Mardi', 'Trinité',$bdd);
il me l'affiche sans problème en prenant en compte les éventuelles accents et ou majuscules exactement comme écrit dans la cellule de colonne correspondant au lieu.

De mon côté je continue a chercher à se niveau en attendant une réponse de ta part :).

Et je te remercie encore beaucoup pour la correction que tu m'as apporté.

Re: Fonction PHP retournant résultat d'une requête SQL

par moogli » 21 déc. 2016, 12:59

salut,

oui ton code retourne un tableau c'est toi qui lui dit : $data_event['description']
d'ailleurs cette ligne ne sert à rien : $data_event['description'] = $description ['description'];
=> return $description;

Je vois un gros problème dans cette fonction : l'utilisation de variable globale. c'est généralement une mauvaise idée, passe la en paramètre, mais pas ainsi.
D'ailleurs, pour moi juste au vu du code php devrait te dire $bdd n'existe pas.

pour finir si :
- tu es certain que la requête retourne qu'une seule ligne
- que tu ne veux que la description

fait simplement return $description ['description'];
Voilà comment tu peux :
- simplifier ton code
- éviter une faille type injection SQL
- ne pas utiliser de variable globale
<?php
/**
 * Récupération d'un evennement pour un jour avec une localisation. 
*/
function recupEvenement($jour, $localisation, \PDO $bdd)
{
     $recup_desc = $bdd->prepare('SELECT description FROM events WHERE lieu= :localisation AND jour= :jour');
     $recup_desc->bindParam('localisation',$localisation);
     $recup_desc->bindParam('jour',$jour);
     $recup_desc->execute();
     $description = $recup_desc->fetch();
     $recup_desc->closeCursor();
     return $description ['description'];
}
// Exemple d'utilisation
$bdd = new PDO();
echo recupEvenement('le jour', 'la localisation',$bdd);

ceci c'est qu'un exemple, qui est plus prêt de ce devrait ton code, pour ce que tu souhaites faire (avec les postulats fait au dessus).

@+

Fonction PHP retournant résultat d'une requête SQL

par Grapain » 21 déc. 2016, 02:37

Bonjour,
Cela fait des heures que je suis entrain de chercher mon erreur, je ne l'a trouve pas :/ :cry:
J'ai chercher sur: Openclassroom, Stackoverflow, google .. etc sans solution du cou p je me retrouve ici car je pense que cela vient d'une erreur de syntax ou de la façon dont je procède.

Voici ce que je cherche à faire:
Récupérer le résultat de la requète SQL dans un variable, et cette variable est retournée par la fonction.
Ce qui plus tard me mettrai de faire: $resultat = maFonction(); et l'afficher par la suite avec un: echo $resultat;
(Toute fois je me pose la question est ce que le résultat qui est retournée par ma fonction n'est pas un tableau ? oui normalement ?)

Voici le code sur lequel je travaille actuellement:
function recupEvenement($jour, $localisation)
{
     $data_event = array();

     $recup_desc = $bdd->query("SELECT description FROM events WHERE lieu='$localisation' AND jour='$jour' ");
     $description = $recup_desc->fetch();  
     $recup_desc->closeCursor();
     $data_event['description'] = $description ['description'];

     return $data_event;

}
Je vous remercie d'avance pour votre aide :wink: