Question

[Résolu]
Signaler
Messages postés
25
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
25 novembre 2007
-
Messages postés
25
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
25 novembre 2007
-
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

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...
Messages postés
25
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
25 novembre 2007

..ou faire un tableau associatif et stocker les resultats?
c'est pas un peu lourd? il n'y aurais pas un moyen plus simple?
Messages postés
25
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
25 novembre 2007

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^^