Jump to content


This topic is now archived and is closed to further replies.


Order query results by columns

Recommended Posts



I\'m trying to order a mysql query by column, not by rows.

Let\'s say I have 6 results, so I want to output on screen smth. like:


1 | 4

2 | 5

3 | 6


and NOT like:


1 | 2

3 | 4

5 | 6




The code I currently use is [results are ordered in 2 columns]:



<TABLE width="85%" ALIGN="CENTER">

   <tr><td class="barre"> <font class="lien"><a href="../">Linkuri.ro</a> <? echo $a[0]; ?></font> </td></tr>

   <tr><td  class="barreclair">< </td></tr>


if ($ad==1) $query="SELECT * FROM $tablecatannu WHERE attach=\'$num\' ORDER BY $tri_cat ASC";

 else $query="SELECT * FROM $tablecatannu WHERE attach=\'$num\' AND actif=\'1\' ORDER BY $tri_cat ASC";

$result=mysql_query($query); if (!$result) { echo "<BR><FONT class=\'texte\'>Error!</FONT><BR>"; exit(); }


echo "<TABLE align=\'center\' width=\'85%\'>";

for ($i=0; $i<$n-1; $i=$i+2)

 { //left column








 echo "<TR><TD width=\'40%\' align=\'left\'>";


 if ($sous_cat!="") echo "<FONT class=\'lienp\'>$sous_cat</FONT>";

 echo "</TD>";

 //right column








 echo "<TD width=\'40%\' align=\'left\'>";


 if ($sous_cat!="") echo "<FONT class=\'lienp\'>$sous_cat</FONT>";

 echo "</TD></TR>";


if ($n%2==1) 










 echo "<TR><TD width=\'$size%\' colspan=\'2\'>";


 if ($sous_cat!="") echo "<FONT class=\'lienp\'>$sous_cat</FONT>";

 echo "</TD></TR>";



echo "</TABLE>";




Any ideas?



Share this post

Link to post
Share on other sites

You code currently gives you


i | i+1

i+2 | i+3



n-1 | n


or something like that... Right ?


You want:


i | k + 1

i+1 | k +2

i+2 | k + 3



So if you have a total of 53 rows, k should be 27, resulting in 27 rows in the table, the last row consisting of 1 output only.


Calculate $n as you do. Make $k = ceiling($n/2)

Now you may use




$n = number of rows in query result;

$k = number of rows/2 rounded up //ceiling will be the last result in left coloumn.

$i = 0; // counter for output row

While $i < $k; $i++;{

//Left column:


//Right coloumn




This should work. You\'ll have to add some checking whether the number of rows is even or not (in the sql result) and adjust the output accordingly.


I hope this helps,

P., denmark

Share this post

Link to post
Share on other sites


Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.