0

MySQLデータベースの画像を3行1列のテーブルに表示しようとしています。私はそれを行うことができますが、問題は私の元のコードがそれを持っていたので、MySQLテーブルに1行しかない場合、とにかくコードを1行あたり3回実行し、2つを空<td>のままにします(そして1つを空のままにします) 2行の場合は1つ)。残りの行が3つ未満の場合は、そのループを何度も実行して終了するというループを実行しようとしました。私はこのコードを何度も調べて自分自身に話しかけましたが、問題がどこにあるのかわからないようです。私が得るエラーは、それがループを無限に実行するということです。私は現在2つの行を持っているので、ループを2回実行しています<tr>が、永久に実行しています。

$ rowcounterに3を追加すると、ループが停止すると思いました。$ rowcounterは0から始まり、ループが実行されます。3が$rowcounterに追加され(3になります)、$ num_rows_temp(2行しかないため2になります)より大きくなり、ループは実行されません。繰り返しになりますが、問題は最初のwhileループにあるはずです。これは、テーブルに新しい行が無限に生成されるためです... $ rowcounterに3が追加されなかった理由はありますか?

(また、fetch_arraysの下の変数宣言は無視してください。ループが機能するようになると、これらは機能に使用されます。ただし、今は取るに足らないように見えます...)

誰かが私がここで間違っていることを理解するのを手伝ってくれますか?本当にありがとう。

<?php
$rowcounter=0;

if($num_rows_temp==0){
echo "No pictures yet!";
}
else{
//BEGIN JOB POSTING                             
    while($rowcounter<=$num_rows_temp){
        $remaining=$num_rows_temp-$rowcounter;
        $counter=1;
        echo "<tr>";
        //IF THE REMAINING AMOUNT OF ROWS IS LESS THAN THREE, RUN THE WHILE LOOP
        //FOR THE AMOUNT OF REMAINING ROWS
        if ($remaining>0 && $remaining<3){
            while($counter<=$remaining){
                $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
                $id = $row_temp[0];
                $location = $row_temp[1];
                $name = $row_temp[2];
                $email = $row_temp[3];
                echo "<td>
                <a href='".$location."'>
                <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
                </a>
                </td>";
                $counter++; 
             } //END WHILE
          } //END IF
          else{
              while($counter<=3){
                  $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM);
                  $id = $row_temp[0];
                  $location = $row_temp[1];
                  $name = $row_temp[2];
                  $email = $row_temp[3];
                  echo "<td>
                  <a href='".$location."'>
                  <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" />
                  </a>
                  </td>";
                  $counter++;   
               } //END WHILE
           } //END ELSE
           echo "</tr>";
           $rowcounter+3;
        } //END WHILE
    } //END ELSE
?>
4

1 に答える 1

2

あなた$rowcounter+3;は増加していません$rowcounter。への変更-

$rowcounter +=3;

そのままでは、エコーしている$rowcounter+3;場合にのみ機能します

echo $rowcounter+3;  // would echo 3 each time

また$counter、whileループ内に設定しています

while($rowcounter<=$num_rows_temp){
    $remaining=$num_rows_temp-$rowcounter;
    $counter=1;

だからあなたがすることによってそれを増やしても

$counter++;

ループを再開1すると、に戻されます。while()の前にこれを宣言する必要がありwhile()ます。

于 2012-11-25T08:00:03.250 に答える