Affichage d'un query en 4 colonnes

Signaler
Messages postés
5
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
3 mai 2002
-
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
Bonjour,

Je suis en pleine bricole et je ne trouve pas de solution qui me plaise.

J'ai une requète qui me renvoie une liste de nom (par ordre alphabétique). La taille de cette liste est variable.

Je voudrais pouvoir afficher les résultats de cette requète sur 4 colonnes

Si vous avez une solution ou un début de piste, ça m'intéresse !

Laurent

Pour vivre ses rèves, il faut commencer par se laisser aller

5 réponses

Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
18
Ok !! essaie cela
<cfoutput query=\"Toto\">
<cfif (CurrentRow mod 4) IS 1>----
</cfif>
#Chose#,
<cfif (CurrentRow mod 4) IS 0></cfif>

Syn.
Messages postés
5
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
3 mai 2002

Re Bonjour,

Je voit que je suis le seul à travailler ce dimanche ;-)

Quoi qu'il en soit, j'ai trouvé la solution à mon problème, je la livre ici (parce que je suis nouveau et que je sait pas trop comment mettre une source)

il y a donc 3 parties : la requète, la gestion, l'affichage des résultats.

La query :

<cfquery name="nomquery" datasource="madsn">
Select macolonne from matable order by matable
</cfquery>

La gestion :

<cfset xxx = nomquery.recordcount> <!--- est le nombre de record retournés par la requète --->
<cfscript>
colspart = xxx / 3.5;
thespan = round(colspart); //nombre max par colonne
span1_start = 1; //spanx est le numéro de la colonne et spanx_start le row de départ de la colonne; spanx_end le dernièr row de la colonne
span1_end = span1_start + thespan - 1;
span2_start = span1_end + 1;
span2_end = span2_start + thespan - 1;
span3_start = span2_end + 1;
span3_end = span3_start + thespan - 1;
span4_start = 3 * thespan + 1;
span4_end = xxx;
</cfscript>

L'affichage : (se fait à travers un cfloop dans lequel on inclu un cfoutput car ça permet de ne pas faire que de l'output et par exemple de mettre en route une numérotation devant les résultats)

<cfloop query="nomquery" startrow="span1_start" endrow="span1_end"><cfoutput>#macolonne#</cfoutput>,

<!--- répeter pour les autres colonnes --->

Voilà, j'espère que ça aidera d'autres que moi à ne pas se prendre la tète...

Laurent

Pour vivre ses rèves, il faut commencer par se laisser réver
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
18
Mon dieu !! Alors soit j'ai po compris la question d'origine, soit tu sors le marteau piqueur pour écraser une mouche...
Syn.plissime...
Messages postés
5
Date d'inscription
mercredi 18 octobre 2000
Statut
Membre
Dernière intervention
3 mai 2002

Bonjour Syn,

Et bien je me dit que effectivement on ne s'est pas bien compris, j'ai testé ton code et j'ai effectivement 4 colonnes, mais les résultats se lisent horizontallement or ce que je voulais c'était qu'ils s'affichent verticalement

celà dit merci de l'info, je ne connaissait pas Currentrow (pas en coldfusion du moins)

et pour ce qui est d'une lecture horizontale ça fonctionne vraiment très bien :-)

Laurent

Pour vivre ses rèves, il faut commencer par se laisser réver
Messages postés
2378
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
18
Alors j'ai mieux comprendu !!
Voici un exemple avec la création d'une fausse table pour illustrer tous cela.

<!-- table bidon -->
<cfset Toto = QueryNew("")>
<cfset lCol = "lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche,janvier,février,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,décembre">
<cfset Pipo = QueryAddColumn(Toto,"Time",ListToArray(lCol))>

<!-- initialisation des variables -->
<cfset Init = 0>
<cfset NbCol = 4>
<cfset Step = Evaluate(Ceiling(Toto.RecordCount/NbCol))>
<!-- on affiche !! -->
<cfloop query=\"Toto\" endrow=\"#Step#\">
<cfset Init = Init + 1>----

<cfloop index=\"i\" from=\"0\" to=\"#Evaluate(NbCol - 1)#\">
<cfset Idx = (i * Step) + Init>
<cfif Idx LTE Toto.RecordCount><cfoutput>#Toto.Time[Idx]#</cfoutput><cfelse> </cfif>,
</cfloop>

</cfloop>

J'espere que ca te simplifiera ton code.
Syn.