0

さて、私が達成しようとしているのは、PHPとMySQLデータベースを使用した「ニュースフィード」タイプのものです。データベースとテーブルのセットアップ、およびデータベースに情報を挿入するCMSセットアップがあり、SELECTステートメントを使用してテーブルの個々の行をHTMLレイアウトに正常に呼び出しました。

今、私がやろうとしているのは、12のdivを含むホームページを作成することです。各divは、個々の投稿ページにリンクする画像であり、DESCの順序でテーブルから動的に生成されます。そうすれば、最新の12のデザインがホームページに表示されます。

次に、カテゴリで並べ替えられたページを除いて、同じタイプのことを実現したいと思います。これは、SELECTステートメントにWHERE category=categorynameを追加することで実行されると想定しています。より多くの知識を持っている人がこれを進める方法についてのガイダンスを私に与えることができることを願っています。

これが私のHTMLです(リンクとimg srcで動的に生成する必要があります):

/* Other relevant Code */
<div class="homeContent">
    <div class="newsItems">
        <div class="newsItem1">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem2">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem3">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem4">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem5">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem6">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem7">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem8">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem9">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem10">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem11">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem12">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
    </div>
</div>

どちらの方向に進むべきかわからないため、この部分のPHPについてはあまり理解していません。また、PHPで間違った方向を選択すると、通常は最初からやり直す必要があることをゆっくりと学びました。助けてくれてありがとう!

簡単に言うと、PHPを使用してMySQLテーブルからこれらの事前定義されたDIVに動的に生成されるimg srcとリンクを取得し、それらをDESCの順序にする方法を教えてください。

4

2 に答える 2

1

この回答は、次のことを前提としています。

  1. PHPでのMySQL接続(ここでは、これは$sql変数に格納されています)。
  2. image_srcMySQLテーブルの、、、urlおよびcreated_at列(テーブルと呼びますmy_table)。


すべてを照会する

まず、クエリを見ていきましょう。

12行すべてのすべてのデータを同時に取得したいので、複数回クエリを実行する必要はありません。また、すべてを降順で並べ替えることも必要です。これが重要なcreated_at役割を果たします。

次のようになります。

SELECT m.image_src, m.url, m.created_at
FROM my_table AS m
ORDER BY m.created_at DESC
LIMIT 12

このクエリを変数に格納しましょう。シンプルにして呼んでいきます$query

$query = /* The query we just wrote above */


結果の表示

ここで、結果を美しく見せるための方法を理解する必要があります。クエリを実行する方法を知っていると仮定します。これは、クエリをすでにどのように管理しているかを確認するためです。

あなたの例を見ると、それぞれの結果が独自の属性divを持つ独自の要素に含まれている必要があります。それらはユニークになるので、代わりにclassそれらを作ることをお勧めします。代わりに、それぞれidsにクラスを追加できます。newsItem

while必要な処理を実行するために、各行を反復処理して適切なHTMLを出力するループを作成します。次のようになります。

<div class="newsItems">
  <?php
    $result = $sql->query($query);

    $count = 0;
    while(null !== ($r = $result->fetch_assoc()): ?>
      <div id="newsItem<?php echo ++$count; ?>" class="newsItem">
        <a href="<?php echo $r['url']; ?>"><img src="<?php echo $r['image_src']; ?>" alt="" /></a>
      </div>
  <?php
    endwhile;
  ?>
</div>


いくつかのこと

  1. 状態に注意してくださいwhile。PHPの新しいバージョンでは、$r変数をnull値と比較することが重要です。以前は代わりに使用できましたfalseが、現在は使用できないため、次のようなステートメントはエラーをスローします。

    while(false !== ($r = $result->fetch_assoc())):
    

    あなたの発言に注意してください。

  2. newsItemクラスをdiv要素にのみ配置する方法に注意してください。aimgタグはの中にあるので、またはスタイリングdivでそれらのいずれかを選択できます。.newsItem a.newsItem img

  3. 一連の固有のクラスがある場合は、わかりやすくするためidsよりも作成することをお勧めしますclasses。一度だけ使用されるクラスを持っていても意味がありません。

あなたのプロジェクトを楽しんで頑張ってください!

于 2012-08-11T23:43:04.513 に答える
1

次のコードは、データベースからデータを取得し、新しい<div>、リンク、および画像を表示します。

Image.php:

<?php
$query = "SELECT id, link, image FROM images ORDER BY id DESC";
?>

<html>
   <body>
      <?php while($row = mysql_fetch_assoc($query)): ?>
          <div class="NewsItem<?php echo $row['id']; ?>">
              <a href="<?php echo $row['link']; ?>"><img src="<?php echo $row['image']; ?>" alt="" class="newsItem" /></a>
          </div>
      <?php endwhile; ?>
   </body>
</html>

これは、次の列を持つテーブルがあることを前提としています。

  • ID (オートインクリメント) INT
  • image TINYTEXT - 画像ファイルへの URL
  • link TINYTEXT - リンク先へのリンク。
于 2012-08-11T23:25:49.627 に答える