Affichage dans deux colonnes selon un critère

Eléphanteau du PHP | 25 Messages

18 mai 2005, 09:46

Bonjour à tous,

Voilà mon problème :

J'ai une base de données me permettant de stocker des évènements selon deux catégories ("réunion interne" et "réunion externe")

Quand je parcours la table, je souhaiterais qu'il me fasse la mise en forme sur "deux colonnes" ou quelque chose d'équivalent (genre division ?) avec "à gauche" les réunions internes et "à droite" les réunions externes.

Si vous aviez quelques pistes à m'indiquer :wink:

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 09:51

Il faut que tu fasse 2 requetes sur ta bdd et que quand tu construit ta page html tu affiche une ligne d'une requete dans une case, une ligne de l'autre requete dans la case à coté, un saut de ligne et tu recommence
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

18 mai 2005, 09:53

Tu as ces éléments dans une seule et même table ? Quelle est la structure de cette table. À priori, tu peux faire ça en une requête en aliasant le nom de table comme si tu cherchais dans deux tables différentes. Une requête qui ressemblerait à quelque chose comme ceci:

Code : Tout sélectionner

SELECT t1.evenement as interne, t2.evenement as externe FROM table as t1, table as t2 WHERE interne = 'interne' AND externe = 'externe'
Je suis pas certain de mon coup, mais ça doit ressembler à peu près à ça
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 09:59

SI ca marche, ça peut être assez puissant !!!

A voir
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
pjl
ViPHP | 2119 Messages

18 mai 2005, 10:04

Une et une seule requête suffit largement et il faut qu'elle ramène l'élèment permettant de savoir si l'évènement est extérieur ou intérieur.
Pour l'affichage, il suffit de le faire avec une condition.

Code : Tout sélectionner

Si (interieur OK) affiche (intérieur) sinon affiche (extérieur)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 10:07

Ca veut dire qu'il va avoir des sauts de lignes !!!

Imagine que dans sa base il a deux externes qui se suivent, il va avoir un truc comme ca :

Code : Tout sélectionner

interne | externe | externe interne | interne | externe
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
pjl
ViPHP | 2119 Messages

18 mai 2005, 10:18

affichage (intérieur) :

Code : Tout sélectionner

evénement | vide
affichage (extérieur) :

Code : Tout sélectionner

vide | évènement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 10:34

C'est pas du tout ce que j'avais compris !!! :oops:

Je pensais qu'il voulait

Code : Tout sélectionner

interne | externe interne | externe interne | externe interne | externe
Mais si c'est pour ça,

Code : Tout sélectionner

interne | interne | | externe | externe interne | | externe interne | | externe
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 25 Messages

18 mai 2005, 10:48

C'est pas du tout ce que j'avais compris !!! Embarassed

Je pensais qu'il voulait

Code:
interne | externe
interne | externe
interne | externe
interne | externe
Oui c'est ceci que je veux :)
Tu as ces éléments dans une seule et même table ?
Oui. J'ai juste un intitulé qui se balade dans une autre table mais ce n'est pas un problème/

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 10:50

Tu as ces éléments dans une seule et même table ? Quelle est la structure de cette table. À priori, tu peux faire ça en une requête en aliasant le nom de table comme si tu cherchais dans deux tables différentes. Une requête qui ressemblerait à quelque chose comme ceci:

Code : Tout sélectionner

SELECT t1.evenement as interne, t2.evenement as externe FROM table as t1, table as t2 WHERE interne = 'interne' AND externe = 'externe'
Je suis pas certain de mon coup, mais ça doit ressembler à peu près à ça
Essaye de te renseigner sur ça !!!

Sinon essaye ce que je t'ai dit au début !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

18 mai 2005, 10:55

Il manque peut-être un critère : la date de l'évènement qui fera que de toutes façon tu n'auras pas les évènements internes et externes sur les mêmes lignes... Actuellement, j'ai cru comprendre que ça ne rentrait pas en ligne de compte. Pour obtenir les évennement sans trous dans les colonnes, ça va être plus difficile avec une seule requête. Il va falloir faire une bidouille avec deux requêtes et ensuite des tableau indexés, des pointeurs et une génération de ton affichage qui, selon la colonne, prend un élément dans le tableau d'évènement internes ou dans l'autre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

18 mai 2005, 11:24

En fait ce n'est pas tant l'accès aux données qui me pose problème c'est la façon de faire la mise en page. En effet, si je demande de me balancer tous mes évènements "à la suite", ça ne pose pas de problèmes :)

Mammouth du PHP | 19672 Messages

18 mai 2005, 11:35

L'idée que je soulevais, c'est de récupérer tes évènements dans deux tableaus indexés, un pour l'interne, l'autre pour externe.

Lors de la génération de ton tableau HTML, tu utilises le premier pour compléter la première colonne tant que le tableau n'est pas vide, sinon, tu inscris un espace insécable (   ) et tu fais la même chose pour l'autre colonne avec l'autre tableau. La génération des lignes du tableau html sera limité par le plus grand nombre du tableau indexé externe ou interne.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

18 mai 2005, 11:52

Tu les récuperes en les triant pour par exemple tout les internes puis les externes.
Et utiliser pour l'affichage deux tabeaux html interne dans la structure de ta page. l'avantage, un tableau pour la colonne de gauche et un autre pour la colonne de droite. tu remplis celui de gauche avant de remplir celui de droite...
Mais il faut être certains de ne pas avoir des modifications par la suite au niveaux d'un classement par date, par exemple une ligne pour les trucs d'un certaines jours, etc

Eléphanteau du PHP | 25 Messages

18 mai 2005, 12:58

Je vois bien ce que vous voulez dire en théorie. J'avais un peu la même idée. Par contre, débutant en php et en programmation, j'ai un peu de mal à passer du théorique au pratique. :)

Je regarde de mon côté et vous tient au courant. :wink: