• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 278
  • Last Modified:

PHP While inside While problem

I am trying to run a while script inside another while script, but it stops after one result.
What am I doing wrong?
<?php $cat_sql="SELECT * FROM cb_categories ORDER BY id ASC"; // Get all the categories and forums.
	$cat_result=mysql_query($cat_sql);
	while($cat_rows=mysql_fetch_array($cat_result)){ // Show next cateogry.
	?>
	<div class="index_cat_top"><font face="Comic Sans MS, cursive"><b><?php echo $cat_rows['name']; ?></b></font></div>
	<div class="index_cat_mid"><center><?php 
        $forum_sql="SELECT * FROM cb_forums WHERE category_id = $cat_rows[id] ORDER BY forum_id ASC";
        $forum_result=mysql_query($forum_sql);
        ?>
        <table width="820px" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">     
        <?php
        while($forum_rows=mysql_fetch_array($forum_result) or die(mysql_error())){ // Get all the forums in the category 
        ?>
        <tr>
        <td bgcolor="#FFFFFF"><? echo $forum_rows['forum_id']; ?></td>
        <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $forum_rows['forum_id']; ?>"><? echo $forum_rows['name']; ?></a><BR></td>
        </tr>
        <?php } ?>
        </table></center>
    </div>
	<div class="index_cat_bot"></div>
    <br /><br />
<?php } ?>

Open in new window

0
DevinPitcher
Asked:
DevinPitcher
1 Solution
 
Michael701Commented:
which loop is stopping?

I really don't see any syntax issues.

try this

        $cat_result=mysql_query($cat_sql);
echo "categories: ". mysql_num_rows($cat_result) ."<br />\n";

let's see how many records are getting returned.

btw: if you just use echo statments you won't have to be switching in and out of php and your code should look cleaner.

see attached
        while($cat_rows=mysql_fetch_array($cat_result)){ // Show next cateogry.
        echo "<div class='index_cat_top'><font face='Comic Sans MS, cursive'><b>".$cat_rows['name']. "</b></font></div>\n";
        echo "<div class='index_cat_mid'><center>\n"; 
        $forum_sql="SELECT * FROM cb_forums WHERE category_id = $cat_rows[id] ORDER BY forum_id ASC";
        $forum_result=mysql_query($forum_sql);
        echo "<table width='820px' border=0 align='center' cellpadding=3 cellspacing=1 bgcolor='#CCCCCC'>\n";
        while($forum_rows=mysql_fetch_array($forum_result) or die(mysql_error())){ // Get all the forums in the category 

Open in new window

0
 
DevinPitcherAuthor Commented:
@Michael701

3 results, like I have in the database.
0
 
-pio-Commented:
Hi,
At first sight I see no problem with the code but

I would change this line:

$forum_sql="SELECT * FROM cb_forums WHERE category_id = $cat_rows[id] ORDER BY forum_id ASC";

to this:

$forum_sql="SELECT * FROM cb_forums WHERE category_id = ".$cat_rows[id]." ORDER BY forum_id ASC";

Regards,
Peter
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
DevinPitcherAuthor Commented:
@-pio-

I will try that when I get home. That looks like it just may work.
0
 
Michael701Commented:
Did you view (verify) that the generated html is valid? Can you post a sample of the generated html?
0
 
DevinPitcherAuthor Commented:
Found the issue: Line 12 above.
the or die command had messed it up. Works great now.
while($forum_rows=mysql_fetch_array($forum_result) or die(mysql_error())){ // Get all the forums in the category

Open in new window

0
 
ee_autoCommented:
Question PAQ'd, 250 points refunded, and stored in the solution database.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now