1

というわけで、 PHPMySQLを学んでいるのですが、ここでちょっとした問題にぶち当たりました。

情報が不足しているので、これは私にとって非常に役立ちます=)

データベースに対してクエリを実行し、結果を取得します。この結果は、リストされるすべての画像ファイルです。

$fileSQL = $mysqli->query("
    SELECT *
    FROM content
    WHERE projID=$projectID     
");

したがって、すべてのファイルを自分のページにサムネイルとしてリストしたい場合は、次のようにします。

<?php while($row = $fileSQL->fetch_assoc()){ ?>
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg"
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>           
<?php } ?>

もちろん、これで問題なく動作します。各行に for を追加しながら、すべての行をループします。

ただし、最初の親指を完全に表示する必要があるメイン画像もあります (この例では、親指とフルサイズのcontentFull両方を使用します)。

contentFullでは、while ループを行番号 2 から開始せずに、最初の行の を取得するにはどうすればよいでしょうか。

そして一般的に; これらの状況で行う最善の方法は何ですか? 最初に結果を配列に保存して、簡単にアクセスできるようにしますか、それとも「通常の」方法は何ですか? =)

必要なもの:

  1. クエリを実行する
  2. メイン画像を設定します(SQL結果の最初の画像/コンテンツからcontentFullを使用)
  3. 次に、結果のすべての画像をサムネイルに描画します (メイン画像として既に表示されている最初のものを含む)。

事前に感謝します。さらに情報が必要な場合はお知らせください =)

4

2 に答える 2

1

簡単なオプションの 1 つは、次のようにすることです。

<?php 
$first = null;
while($row = $fileSQL->fetch_assoc()) {
    if(!isset($first)) $first = $row;
    ?>
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg"
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>           
<?php } ?>

これで、すべての結果を配列に格納する必要なく、使用する変数に最初の行が格納されました。何らかの理由ですべての行を配列に格納したい場合は、次のように簡単に実行できます。

<?php 
$rows = array();
while($row = $fileSQL->fetch_assoc()) {
    $rows[] = $row;
    //rest of code
}
?>

次に、参照して最初の行にアクセスできます$rows[0]

もう 1 つのオプションは、php を使用して完全なイメージを作成しないことです。代わりに、JavaScript 呼び出しを使用して最初の画像を入力します。

于 2013-08-19T15:27:04.633 に答える
0

whileループの外で最初の写真を撮ることができると思います:

$row = $fileSQL->fetch_assoc(); // the first picture
if($row){
  // show first image if it exists
  }

while ( $row = $fileSQL->fetch_assoc()) // etc.

おそらく、大きな画像のコードは他の画像とは異なるため、妥当かもしれません。そうでない場合は、関数の定義を検討するか、カウンター (または Pitchinnate の回答のようなフラグ) を使用します。

于 2013-08-19T15:28:34.760 に答える