Question

Résolu
cs_Asherah Messages postés 25 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 25 novembre 2007 - 24 nov. 2007 à 20:06
cs_Asherah Messages postés 25 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 25 novembre 2007 - 25 nov. 2007 à 20:47
Salut tout le monde^^

J'ai une petite question, je suis entrain de faire une methode while avec while ^^", pour afficher divers champs d'une table depuis une requete.

    public function SqlWhile($req, $select){
    $this->SqlOpreation($req);
    while($this->data = mysql_fetch_assoc($this->query)){
    $this->boucle = $this->data[$select];
    echo $this->boucle;
        }
    }

Et je sait pas trop comment faire pour afficher ces resultats dans une mise en forme de la page d'appel,
Une maniere radicale serait de mettre du html directement dans la methode, mais ca me fait mal au coeur de faire de l'objet pour y mettre du html dedans :/

Si vous avez une soluce, et au passages quelques conseils pour ce bout de code je suis preneuse^^.

merci d'avance^^

3 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 nov. 2007 à 23:53
Salut miss,

Vais t'expliquer un ptit truc... L'intérêt d'un itérateur... Parce que ça ne sert pas uniquement à faire joli et faire semblant d'être un pro... Ca sert aussi à gagner en performances. Sisi.

Traditionnellement, on fait une requête sur une base de données, on récupère le résultat, plus précisément TOUS les enregistrements dans un tableau, puis, au moment de l'affichage, on boucle sur le tableau (avec un while, un foreach, un for, peu importe, on boucle) pour afficher chaque enregistrement avec une chouette mise en page qui déchire.
C'est tellement courant que c'est un comportement qu'on retrouve dans certains forums très utilisés (phpBB pour ne citer que celui-ci, mais je n'ai pas regardé dans le code de la v3 pour voir s'ils avaient amélioré ça depuis).

Utiliser un itérateur permet de ne plus avoir à faire ça... On peut ne boucler qu'une seule fois.

On récupère un résultat d'une requête (type de données : resource) et on le fourre dans un itérateur, une classe qui va parcourir ce résultat et même, pourquoi pas, qui va pouvoir se déplacer de l'enregistrement 1 à 8 puis 3 puis 5... si on veut.

L'itérateur, quand la boucle (foreach par exemple) lui demande le contenu, va renvoyer un tableau associatif (ou pas, mais associatif c'est quand même BEAUCOUP plus pratique, pour peu qu'on prenne soin de nommer ses champs correctements, quitte à leur donner des alias qui servent justement à ça).
AVANTAGE : on pourra, avant de renvoyer le tableau avec l'enregistrmeent courant, effectuer EN PLUS un traitement sur les données... Ainsi, on peut tout à fait modifier le contenu d'une variable du tableau pour lui coller du HTML autour, pour faciliter l'affichage (pas trop, sinon on limite la souplesse du bazar, mais par exemple quelques balises bien choisies permettant d'homogénéiser l'affichage avec un CSS).

Bon... Comme d'hab, je ne donne pas de code, parce que ça reviendrait à le faire à ta place... Et c'est pas mon objectif, et je sais que c'est pas le tien non plus ;) J'espère juste que ce que j'ai écrit est compréhensible et clair...
3
cs_Asherah Messages postés 25 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 25 novembre 2007
24 nov. 2007 à 20:13
..ou faire un tableau associatif et stocker les resultats?
c'est pas un peu lourd? il n'y aurais pas un moyen plus simple?
0
cs_Asherah Messages postés 25 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 25 novembre 2007
25 nov. 2007 à 20:47
merci neige^^ mais...

..aie aie l'itérateur, bon je vais continuer a faire mes classes de base qui demande aucunes boucles sur les enregistrements, histoire de me familiariser avec la POO et ensuite j'attaquerais la fameuse histoire de l'itérateur^^, et je viendrais surement te voir au passage^^.

merci pour ta reponse^^
0
Rejoignez-nous