0

動作していないように見える次のコードがあります。私が知る限り、事前定義された配列はそれぞれ同じサイズです.テーブル「ホームページ」には32行あり、「ユーザー名」、「画像」、「ウェブサイト」は3つのフィールドです。テスト目的で、ユーザー名は 1 から 32 です。画像と Web サイトのフィールドは空白です - 現時点では (これは変更される予定です)。

私が持っているコードは次のとおりです。

 $sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC LIMIT 32");



$links = array();
$images = array();
$usern = array();



$array_Length_1 = count($usern);

    for ($i=0; $i<$array_Length_1; $i++)
    {
    while ($row_1 = mysql_fetch_assoc ($sorthpge)) {
        $images[$i] = $row_1['image'];
        $links[$i] = $row_1['website'];
        $usern[$i] = $row_1['username'];
        if($images[$i] == ""){
        $images[$i] = "uploads/default.png";
        $links[$i] = "register.php?no=";
        }
        else
        {
        if($images[$i] == "auction"){
        $images [$i] = "uploads/auction.png";
        $links[$i] = "auction.php?no=";
        }
        }
    }
    }

あなたはおそらく私が何をしようとしているのかを知ることができます. 前述のように、すべての「画像」行は空白なので、32 までのすべての i に対して「$images[i] = "uploads/default.png" を取得する必要があります。しかし、私の html には何も表示されません。

誰かが私のコードのエラーを指摘できるかどうか疑問に思いました. または、私のセットアップが何か間違っていると想定している場合。私はphpにかなり慣れていません。よろしくお願いします。PS i は、これらの基本が機能するようになったら、mysqli に変換します。

4

5 に答える 5

2

これがすべてのコードである場合、これが問題です。

$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++)
{

配列は空なので、長さは0コードが実行されないようにします。

forとにかくそのループの目的は何ですか?削除できるようです。

于 2012-12-14T13:59:55.423 に答える
1

サンプルコードには、次のものがあります。

$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++) {

$usern空で$array_Length_1あるため、 0-ループは実行されません。

これを行う背後にあるロジックが何であるかわからないので、それを修正するための適切な方法がわかりませんが、forループを完全に削除して別のインクリメントを保存する場合は$i、コードはうまくいきます。

たとえば、コードを次のように更新してみてください。

$sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC LIMIT 32");

$links = array();
$images = array();
$usern = array();
$i = 0;
while ($row_1 = mysql_fetch_assoc ($sorthpge)) {
    $images[$i] = $row_1['image'];
    $links[$i] = $row_1['website'];
    $usern[$i] = $row_1['username'];
    if($images[$i] == ""){
        $images[$i] = "uploads/default.png";
        $links[$i] = "register.php?no=";
    } else if($images[$i] == "auction"){
        $images [$i] = "uploads/auction.png";
        $links[$i] = "auction.php?no=";
    }
    $i++;
}
于 2012-12-14T14:00:26.297 に答える
0

1つの問題は、$ array_Length_1 = count($ usern);ということです。配列$usernは空です。forループの最大値は空です。$iが0に増分していることを意味します。
$usern = array();
$array_Length_1 = count($usern);
for ($i=0; $i<$array_Length_1; $i++)

また、htmlファイルに何も表示されていないことを説明したように、ファイルがphpファイルとして保存されていることを確認してください。

于 2012-12-14T14:03:24.347 に答える
0

上記のコードは、私が思うにいくつかの場所で失敗していました。これ$array_Length_1 = count($usern);は役に立たなかった。forループは、$ array_lengthのカウントを使い果たしていました。これは、まだ埋められていないため、常に空になります...

これを試してみてください:

<?php
    // connection strings here or db include
    $sorthpge = mysql_query ("SELECT * FROM homepage ORDER BY no DESC");

    $links = array();
    $images = array();
    $usern = array();

    $array_Length_1 = count($usern);

    $i = 0;

    while ($row_1 = mysql_fetch_assoc($sorthpge)){
        $images[$i] = $row_1['image'];
        $links[$i] = $row_1['website'];
        $usern[$i] = $row_1['username'];

        if($row_1['image'] == ""){
            $images[$i] = "uploads/default.png";
            $links[$i] = "register.php?no=";
        }
        elseif($row_1['image'] == "auction"){
            $images [$i] = "uploads/auction.png";
            $links[$i] = "auction.php?no=";
        }

        $i++;

    }

?>
于 2012-12-14T14:01:08.177 に答える
0
$array_Length_1 = count($usern);

あなたは問題ですか!宣言したばかりなので、配列は空です

于 2012-12-14T14:01:55.547 に答える