2012-04-24 25 views
0

ループ中に2番目のループで問題が発生しました.1回だけループします.2番目のループの最初の行の値しか取得できません。これを理解するのを手伝ってください、私は初心者です。ネストされたwhileループは期待どおりにループしません

<ul id="navbar"> 

    <?php 
    $rel = "SELECT * FROM table1 ORDER BY category"; 
    $sql=$db->query($rel); 
    while($row = $sql -> fetch_array()){ 
    ?> 

    <li><a href="category.php?id=<?php echo $row['category_id'];?>"><?php echo $row['category'];?></a> 

     <ul> 

      <?php 
      $sel = "SELECT * FROM table2 WHERE category_id=".$row['category_id']." ORDER BY subcategory ASC"; 
      $sql=$db->query($sel); 
      while($row1 = $sql -> fetch_array()){ 
      ?> 

      <li><a href="subcategory.php?id=<?php echo $row1['subcategory_id'];?>"><?php echo $row1['subcategory'];?></a></li> 

      <?php }?> 

     </ul> 
    </li> 

    <?php }?> 

</ul> 

答えて

3

内側ループの場合は$sqlを上書きし、外側ループの場合は無効にします。 2番目の照会でSQL結果IDに別の変数名を使用する。

+0

ありがとうございます。これは本当に役立ちました....そして今はうまくいきます:-) –

2

さて、あなたは変数$sql

$sql=$db->query($rel); 

に最初のクエリの結果を維持している。しかし、その後、第二のループの前に、あなたはその変数を上書きします。

$sql=$db->query($sel); 

2回目の使用のために新しい変数を宣言してください。言って、$sql2

+0

私のコードを見て、私を助けてくれてありがとう...本当に助けになりました –

1

これは、両方のクエリに変数$sqlを使用しているためです。 2番目の名前をたとえば$sql2に変更します。

また、多くのタグを使用することは避けてください。<?php ?>

+0

ありがとう、私はメモをしますそれは本当に役に立ちました。私のコードを見ていただきありがとうございます。 –

関連する問題