PHP の if ステートメントではor
andを使用しないでください。and
正しい演算子は||
for or and &&
for and です。
問題を引き起こしているステートメント;
の最後にもあります。if
while($row = mysql_fetch_array($result))
{
$rank = $row["rank"];
if($rank == "President/Main Developer" || $rank == "Administrator/Asst. Developer")
{
echo "In first while";
echo "<td>" . $row["username"] . "</td>";
echo "<td style='color: #FF4747'>" . $row["rank"] . "</td>";
$time = formatTime($row["joinDate"]);
echo "<td>" . $time . "</td>";
echo "</tr>";
}
}
コードの 2 番目のビット:
while($row2 = mysql_fetch_array($result))
{
echo "<tr>";
echo "In second while";
echo "<td>" . $row2["username"] . "</td>";
if ($row["rank"]!="President/Main Developer" && $row2["rank"]!="Administrator/Asst. Developer")
{
echo "<td>" . $row2["rank"] . "</td>";
}
$time = formatTime($row2["joinDate"]);
echo "<td>" . $time . "</td>";
echo "</tr>";
}
また、エコーで改行文字を使用することもできます。ブラウザでの出力に違いはありませんが、HTML を自分で読むのがずっと簡単になります。次のように実行できます。
echo "<td>" . $row2["rank"] . "</td>\n";
唯一の違いは、コードを表示すると、enxt ビットが新しい行から始まることです。
編集:Re 2番目のループに入らない
同じ行が使用されることが予想される場合は、すべてを単一の while ループに入れるか、データベースに対してクエリを再度実行する必要があります。while ループは、実行されるまで結果の各行を一度に 1 つずつフェッチします。データベースに再度クエリを実行しない限り、フェッチする行がなくなるため、ループに入ることがありません。