1

最初のものは機能しますが、2番目のものには到達しません..

while($row = mysql_fetch_array($result))
{
    $rank = $row["rank"];
    if($rank == "President/Main Developer" or $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>";
        }
    }
4

4 に答える 4

3

PHP の if ステートメントではorandを使用しないでください。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 つずつフェッチします。データベースに再度クエリを実行しない限り、フェッチする行がなくなるため、ループに入ることがありません。

于 2012-08-20T23:28:19.733 に答える
0

あなたが抱えている問題は次のとおりだと思います。if文の最後に。あなたが置くとき; あなたは文がそこで終わると言っています。これは、if の「then」の部分が空で、{ は無関係であると言っているようなものです。

これがあなたが望むものです:

while($row = mysql_fetch_array($result))
{
    $rank = $row["rank"];
    if($rank == "President/Main Developer" or $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>";
    }
}
于 2012-08-20T23:30:54.493 に答える
0

クエリ自体を変更します...最初のクエリは次のようになります

$query1 = "SELECT * FROM `TABLE_NAME` WHERE `rank` = 'President/Main Developer' OR `rank` = 'Administrator/Asst. Developer'";

$query2 = "SELECT * FROM `TABLE_NAME` WHERE `rank` != 'President/Main Developer' OR `rank` != 'Administrator/Asst. Developer'";

最初に最初のものを実行し、次に最後のものを実行します。IFステートメントは必要ありません:)

于 2012-08-20T23:31:15.400 に答える
0

2 つのループ間で「再クエリ」を行わない場合は、すでに結果の最後に到達しています。したがって、2 番目のwhile-loop は何もする必要がありません。

もう一度続行する前に、リセットする必要があります。

mysql_data_seek($result, 0);
于 2012-08-20T23:33:46.900 に答える