2016-06-16 4 views
0

У меня есть база данных, содержащая список учеников с их именами и доступными книгами (список книг, сериализованных, хранящихся в одной строке). Я и теперь, пытаясь отобразить всех учеников и список книг, которые они использовали, я создал цикл в цикле, но дело в том, что он просто отображает первую запись. Он отображает прекрасную, но только первую запись.PHP Loop with in a loop

mysql_select_db("MYDB", $con); 
$result = mysql_query("Select * From EnrolleeList where Gradelvl = 2 Order By Lname ASC"); 
while($row=mysql_fetch_array($result)) 
    { 
    echo $row['name'] . " " . $row['lastname']; 
    $glvl = $row['Gradelvl']; 
    $getbooks = $row['BookList']; //data containing book list 

    $getbooks = unserialize($getbooks); 
    $arrlength = count($getbooks); 

    for($actr = 0; $actr < $arrlength; $actr++) 
     { 
     $result = mysql_query("Select * From ELEMBooks where GradeLevel = '$glvl' and BID = '$getbooks[$actr]' "); 
     while($row = mysql_fetch_array($result)) 
      { 
      echo $row['Subject']; 
      echo " - "; 
      echo $row['Book']; 
      echo " - "; 
      echo $row['Weight']; 
      echo " - "; 
      } 
     }  
} 
mysql_close($con); 
+0

Просто использовать другое имя переменной для внутреннего цикла '$ row',' $ result' и т.д. иначе ваши верхние значения вар будет перезаписывать и верхняя часть петли будет не в состоянии получить правильный –

ответ

2

Для использования в внешнем контуре $row и для использования в других внутренних сетях различной переменной ex. $rowInner и одинакова для всех дублирующих переменных

while($row=mysql_fetch_array($result)) // $row here 
    { 
    echo $row['name'] . " " . $row['lastname']; 
    $glvl = $row['Gradelvl']; 
    $getbooks = $row['BookList']; //data containing book list 

    $getbooks = unserialize($getbooks); 
    $arrlength = count($getbooks); 

    for($actr = 0; $actr < $arrlength; $actr++) 
     { 
     $resultInner = mysql_query("Select * From ELEMBooks where GradeLevel = '$glvl' and BID = '$getbooks[$actr]' "); 
     while($rowInner = mysql_fetch_array($resultInner)) // $rowInner here 
      { 
      echo $rowInner['Subject']; 
      echo " - "; 
      echo $rowInner['Book']; 
      echo " - "; 
      echo $rowInner['Weight']; 
      echo " - "; 
      } 
     }  
} 
+0

Было бы лучше, если бы вы объяснили, зачем использовать имя diifer var? –