2

いくつかの問題がありますが、基本的にランダムな画像ギャラリーがあります。

これは、ランダム サムネイルのコードです。

<?php
include('../../connect.php');
$result = mysql_query("SELECT *
                       FROM picture AS r1
                       JOIN
                       (
                          SELECT ROUND(RAND() * (SELECT MAX(id)
                                                 FROM picture) ) AS id
                       ) AS r2 
                       WHERE r1.id >= r2.id 
                          AND public_approved=1
                       ORDER BY r1.id ASC 
                       LIMIT 4;")
or die(mysql_error());

while($row = mysql_fetch_array( $result ))  
{
echo "<div style='float:left; margin:2px;' >";
echo '<a href="pictures.php?id=' . $row['id'] .'"><img src="../../files/small/thumb0_'. $row['file_name'] . '.' . $row['file_extension'] . '" border="0"></br>';
echo "</div>";
}
?>

サムネイルの 1 つがクリックされると、ページが再読み込みされ、次のコマンドを使用してメイン コンテンツが読み込まれます。

<?php
include('../../connect.php');

$passed_id = $_GET['id']; 

$result1 = mysql_query("SELECT * FROM picture where id='$passed_id' ")
  or die(mysql_error());

while($row = mysql_fetch_array( $result1 ))     
{?>

これは、大きな画像とタイトルなどを表示するテーブルに続きます。

次の 2 つの問題が発生しています。

1 - 制限で 4 を指定しても、1 つ 2 つまたは 3 つの親指しか表示されないことがあります。

2 - サムネイルをクリックすると、間違った ID が使用されることがあります。つまり、サムネイル ID は 2 ですが、ID は 8 になります。

4

2 に答える 2

3

1、2、または 3 つのサムを取得する理由は、r1.id >= r2.id であり、r1.public_aprove 1 には結果セット 1、2、または 3 しかないためです。理由は RAND() です。

問題2の場合、どの行[id]がr1.idまたはr2.idを使用していますか-r2.idが疑われます。

于 2012-10-18T23:50:25.457 に答える
1

X が表示する画像の数であると仮定すると、実際には [MAX(id) - X] を RAND() 乗数として使用する必要があります。このようにして、結果セットには十分な結果が含まれます。

2 番目の問題は単純に思えます。誰かがおそらく適切な回答を投稿するでしょうが、通常は php/html コードの列/パラメーターの混乱であることを覚えておいてください。

幸運を!

于 2012-10-18T23:56:00.310 に答える