0

ユーザーのランダムな画像を生成する while ループを作成しました。ページをロードするたびに、while ループによってランダムな数の画像が生成されます。10枚表示したいのですが、3〜10枚の画像が生成されます。データベースにチェックインしましたがuser_id、すべてのエントリで一意です。なぜこれを行っているのかわかりません。コードの何が問題になっていますか? このコードをより良い方法で書き直す方向 (チュートリアル リンク) を示すことができる回答も受け入れます。

<?php

$query = mysql_query("SELECT `user_id` FROM  `users` ORDER BY RAND() LIMIT 0, 10");

$r = 1;

while ($results_row = mysql_fetch_assoc($query))

    {   

$var_1 = $results_row['user_id']; 

    $getting_essentials = mysql_query("SELECT 

    `band_name`,`donated_money`,`donated_time` FROM `create_project` WHERE `user_id` = 

    $var_1");

    $getting_results = mysql_fetch_assoc($getting_essentials);

$bandsname = $getting_results['band_name'];

if (isset($bandsname) === true) {       

$donatedmoney = $getting_results['donated_money'];

$donated_time = $getting_results['donated_time'];   

$var_2 = username_from_user_id($var_1); 

$image_name = 'images/' . md5($var_2) . '_' . $var_1;       

    echo '<a href="' . $var_2 . '"><img src="' . $image_name . '" class="'.$r.'" 

    width="300" height="185"/></a>';

} 
$r++;
}

?>
4

2 に答える 2

1

潜在的な問題がいくつか見られます。

まず、とはvar_2?どこにも設定されていないようです。

次に、テーブル内の一意のユーザー ID と同じ数の画像を取得できるようです。これは、10 個の画像を取得しようとする奇妙な方法のように思えます。

3 番目に、画像に使用している実際のファイル名は、ユーザー ID を使用して作成されます。すべてのファイルが存在するわけではない可能性があります。

最後のポイントを確認する方法は、ブラウザで「ソースの表示」操作を実行することです。

常に 123 個の画像を取得している (123 個の個別のユーザー ID を持っていると仮定) かもしれませんが、そのうちのいくつかは存在しません。

低レベルのデバッグ作業として、コードを挿入してデバッグ ステートメントを (HTML 形式で) エコーし、内部で何が起こっているかを確認できます。これは、多くの場合、問題を特定する最も迅速な方法です。つまり、コードに次のようなものを追加します。

$bandsname = $getting_results['band_name'];     # Existing line
echo 'bandsname is "' . $bandsname . '".<br>';  # new line

それを行って出力を調べることで、コードの静的分析を試みるよりもはるかに明白になります。

于 2012-08-24T04:49:53.287 に答える
0

次の投稿は、あなたの答えに対する解決策を提供します http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-テーブルから/

于 2012-08-24T04:51:59.627 に答える