2014-03-18 2 views
0

while 루프를 사용하여 일부 축소판을 텍스트로 표시하려고하지만 첫 번째 문자 인 <tr> 만 잘 작동하고 두 번째 문자는 표시되지 않습니다. 오류가 없으므로 내가 잘못한 것을 알지 못합니다.이중 루프가 작동하지 않습니다. 이게 어떻게 작동합니까?

<?php 
    require_once("inc/config.inc.php"); 
    $sql = "SELECT * FROM games ORDER BY RAND() LIMIT 20"; 
    $result = $mysqli->query($sql); 
    $row = $result->fetch_assoc(); 

    $counter = 0; 
    $max = 5; 
    $counter2 = 0; 
    $max2 = 5; 
?> 

    <table style="table-layout:fixed;width:100%;text-align:center;" align="center" valign="center"> 
    <?php 
     echo "<tr>"; 
     while (($row = $result->fetch_assoc()) and ($counter < $max)) {echo "<td><a class='nogame' href='play.php?g=". $row['pid'] ."'><img src='". $tpath . $row['thumb'] ."'><br>". $row['name'] ."</a></td>";$counter++;} 
     echo "</tr>"; 
     echo "<tr>"; 
     while (($row = $result->fetch_assoc()) and ($counter2 < $max2)) {echo "<td><a class='nogame' href='play.php?g=". $row['pid'] ."'><img src='". $tpath . $row['thumb'] ."'><br>". $row['name'] ."</a></td>";$counter2++;} 
     echo "</tr>"; 
    ?> 
    </table> 

당신이 나를 도울 수 있기를 바랍니다. 그리고 미안, 만약 내가 바보 같은 실수를했다면. PHP를 처음 사용합니다. 또한 Google을 시도했지만 도움이되지 않았습니다.

인사말

+0

두 쿼리간에 결과 집합을 다시 설정해야합니다. 첫 번째 while 루프가 끝날 때 결과 집합에는 반환 할 레코드가 더 이상 없으므로 루프가 종료됩니다. 두 번째 루프가 시작되면 레코드가 없으므로 즉시 종료됩니다. 나는 루프 사이의'$ row-> data_seek (0)'이 당신이 원하는 것을 할 것이라고 생각한다. – andrewsi

+0

첫 번째 루프는 결과 행의 ** ALL **을 가져옵니다. 그런 다음 두 번째 루프에는 아무 것도 작업 할 필요가 없습니다. –

+0

아 와우! 너희 둘 다 고마워. '$ result-> data_seek (0);'이 문제를 해결했습니다. 고맙습니다. :) – user3434770

답변

0

여기에 명백한 문제가 발생하지 않아 문제가 발생할 수 있습니다. 데이터베이스에 6 개 미만의 레코드가 있습니다 (행 5에서 "먹기"때문에 6 개). tr-s의 secound 쌍이 소스 페이지에 있는지도 확인하십시오. 그렇지 않으면 코드가 어떤 이유로 죽습니다.

관련 문제