wmguk Posted June 21, 2008 Share Posted June 21, 2008 hey guys, I am trying to pull out the result for a database, within a table, and so far I have managed to get them all coming out, however I only want 3 results per row. basically i want a table with 3 columns, and as many rows as required, ie, 9 results then 3 rows with 3 columns etc.... what i currently have <table width="100%" border="0" cellpadding="0" cellspacing="0" class="leftmenu"> <tr> <? $result = mysql_query("SELECT * FROM products WHERE colour = '$colour'"); while($row = mysql_fetch_array($result)) { $name = $row['name']; $style = $row['style']; $size = $row['size']; $price = $row['price']; $clear = $row['clear']; $special = $row['special']; $pic = $row['pic']; ?> <td><table width="135" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="left" valign="top"><img src="images/tables/tiles4u_table_lefttop.gif" alt="TILES 4 U" width="8" height="11" /></td> <td><img src="images/tables/tiles4u_table_top.gif" alt="TILES 4 U" width="100%" height="11" /></td> <td align="left" valign="top"><img src="images/tables/tiles4u_table_righttop.gif" alt="TILES 4 U" width="8" height="11" /></td> </tr> <tr> <td background="images/tables/tiles4u_table_left.gif"> </td> <td width="119" align="center" valign="middle" class="leftmenu"> <p align="left"> <? echo $name ; ?><br /> <img src="/images/tiles/<? echo $pic ; ?>" width="150px" /><br /> £<? echo $price ; ?> per sq/m</p> </td> <td background="images/tables/tiles4u_table_right.gif"> </td> </tr> <tr> <td align="left" valign="top"><img src="images/tables/tiles4u_table_leftbottom.gif" alt="TILES 4 U" width="8" height="11" /></td> <td><img src="images/tables/tiles4u_table_bottom.gif" alt="TILES 4 U" width="100%" height="11" /></td> <td align="left" valign="top"><img src="images/tables/tiles4u_table_rightbottom.gif" alt="TILES 4 U" width="8" height="11" /></td> </tr> </table> </td><? }?> </tr> </table> I have put the results in to a <td> so that each result comes out in a new column, however I dont know how to create a new row after the 3rd result? can anyone help? you can see this working at http://tiles4u.wicked-websites.co.uk Thanks guys Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/ Share on other sites More sharing options...
Mattyspatty Posted June 21, 2008 Share Posted June 21, 2008 let me clarify, you want a table something like this: RES_1 RES_2 RES_3 RES_4 RES_5 RES_6 where RES_* is a new row from the database? Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-570908 Share on other sites More sharing options...
wmguk Posted June 21, 2008 Author Share Posted June 21, 2008 bingo <table width="100%" border="0" cellpadding="0" cellspacing="0" class="leftmenu"> <tr> <? $result = mysql_query("SELECT * FROM products WHERE colour = '$colour'"); while($row = mysql_fetch_array($result)) { $name = $row['name']; $style = $row['style']; $price = $row['price']; $clear = $row['clear']; $special = $row['special']; $pic = $row['pic']; ?> <td><table width="135" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="left" valign="top"><img src="images/tables/tiles4u_table_lefttop.gif" alt="TILES 4 U" width="8" height="11" /></td> <td><img src="images/tables/tiles4u_table_top.gif" alt="TILES 4 U" width="100%" height="11" /></td> <td align="left" valign="top"><img src="images/tables/tiles4u_table_righttop.gif" alt="TILES 4 U" width="8" height="11" /></td> </tr> <tr> <td background="images/tables/tiles4u_table_left.gif"> </td> <td width="119" align="center" valign="middle" class="leftmenu"> <p align="left"> <? echo $name ; ?><br /> <img src="/images/tiles/<? echo $pic ; ?>" width="150px" /><br /> £<? echo $price ; ?> per sq/m</p> </td> <td background="images/tables/tiles4u_table_right.gif"> </td> </tr> <tr> <td align="left" valign="top"><img src="images/tables/tiles4u_table_leftbottom.gif" alt="TILES 4 U" width="8" height="11" /></td> <td><img src="images/tables/tiles4u_table_bottom.gif" alt="TILES 4 U" width="100%" height="11" /></td> <td align="left" valign="top"><img src="images/tables/tiles4u_table_rightbottom.gif" alt="TILES 4 U" width="8" height="11" /></td> </tr> </table> </td><? }?> </tr> </table> basically there is one table with 1 td created. then each result is in a different table for formatting and borders etc.... so yes res1 res2 res3 res4 res5 res6 Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-570911 Share on other sites More sharing options...
wmguk Posted June 21, 2008 Author Share Posted June 21, 2008 Been playing and so far I have this: <table width="100%" border="0" cellpadding="0" cellspacing="0" class="leftmenu"> <tr> <?php $result = mysql_query("SELECT * FROM products WHERE colour = '$colour'"); $i = 1; //set $i to 1 outside the loop while ($row=mysql_fetch_assoc($result) { //ERROR RELATES TO THIS ERROR echo '<td><table width="135" border="0" cellspacing="0" cellpadding="0">'; echo '<tr><td align="left" valign="top"><img src="images/tables/tiles4u_table_lefttop.gif" alt="TILES 4 U" width="8" height="11" /></td>'; echo '<td><img src="images/tables/tiles4u_table_top.gif" alt="TILES 4 U" width="100%" height="11" /></td>'; echo '<td align="left" valign="top"><img src="images/tables/tiles4u_table_righttop.gif" alt="TILES 4 U" width="8" height="11" /></td></tr>'; echo '<tr>'; echo '<td background="images/tables/tiles4u_table_left.gif"> </td>'; echo '<td width="119" align="center" valign="middle" class="leftmenu"><p align="left">'; echo $row['name']; echo '<br /><img src="/images/tiles/'; echo $row['pic']; echo '" width="150px" /><br />£'; echo $row['price']; echo 'per sq/m</p></td><td background="images/tables/tiles4u_table_right.gif"> </td></tr><tr>'; echo '<td align="left" valign="top"><img src="images/tables/tiles4u_table_leftbottom.gif" alt="TILES 4 U" width="8" height="11" /></td>'; echo '<td><img src="images/tables/tiles4u_table_bottom.gif" alt="TILES 4 U" width="100%" height="11" /></td>'; echo '<td align="left" valign="top"><img src="images/tables/tiles4u_table_rightbottom.gif" alt="TILES 4 U" width="8" height="11" /></td></tr></table></td>'; $i = $i + 1; //add 1 to $i if ($i == 3) { //when you have echoed 3 <td>'s echo '</tr><tr>'; //echo a new row $i = 1; //reset $i } //close the if }//close the while loop echo '</tr></table>' //close out the table ?> </tr> </table> however i get unexpected { error on line 5 (where i have // ) any ideas? Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-570915 Share on other sites More sharing options...
wmguk Posted June 21, 2008 Author Share Posted June 21, 2008 still cant seem to sort this? Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-570936 Share on other sites More sharing options...
Mattyspatty Posted June 21, 2008 Share Posted June 21, 2008 while ($row=mysql_fetch_assoc($result) missed a second ) and reguarding to the original problem, this should have your desired effect <?php $i=0; echo '<table>'; while ($row=mysql_fetch_assoc($result)) { if($i==0) echo '<tr>'; echo '<td>'; // do rest of column echo '</td>'; if($i==2) { echo '</tr>'; $i=0; } else { $i++ } } echo '<table>'; ?> Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-570942 Share on other sites More sharing options...
wmguk Posted June 21, 2008 Author Share Posted June 21, 2008 excellent thank you, problem solved Link to comment https://forums.phpfreaks.com/topic/111234-solved-limiting-result-display-by-3-across/#findComment-571072 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.