Affichage d'un query en 4 colonnes

hsld Messages postés 5 Date d'inscription mercredi 18 octobre 2000 Statut Membre Dernière intervention 3 mai 2002 - 7 avril 2002 à 14:57
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 9 avril 2002 à 22:43
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

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

Syn.
0
hsld Messages postés 5 Date d'inscription mercredi 18 octobre 2000 Statut Membre Dernière intervention 3 mai 2002
7 avril 2002 à 16:12
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
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
7 avril 2002 à 18:25
Mon dieu !! Alors soit j'ai po compris la question d'origine, soit tu sors le marteau piqueur pour écraser une mouche...
Syn.plissime...
0
hsld Messages postés 5 Date d'inscription mercredi 18 octobre 2000 Statut Membre Dernière intervention 3 mai 2002
7 avril 2002 à 21:06
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
9 avril 2002 à 22:43
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.
0
Rejoignez-nous