1

mySQL データベースに保存されている広告に関する質問があります。すべての結果をフェッチし、id の降順制限で 8 まで並べ替えてから、4 つの結果を 1 つの <div> に表示し、残りの 4 つの結果を別の <div> に表示する必要があります。

これが私の現在のコードです:

 <div id="first_adverts">
 <?php $i = 1; ?>
 <?php $getAdverts=mysql_query(" SELECT * FROM adverts WHERE live = 1 ORDER BY id DESC LIMIT 8");
          while($showAdverts=mysql_fetch_array($getAdverts)) {

          $checkdate = $showAdverts['expiry_date']; // Date From Advert in Database
          $checkdate = strtotime(str_replace("/","-",$checkdate)); // Change Date format to 01-07-2013 instead of 01/07/2013
          if ($checkdate > time()) { // If date is in the future (EG the advert hasn't expired) then show:

          $showAdvertiserData=mysql_fetch_array(mysql_query(" SELECT * FROM advertisers WHERE id = '".$showAdverts['advertiser_id']."'")); ?>
      <div class="advert-cell">
        <a href="#" class="topopup_<?php echo $i; ?>">
         <img src="images/adverts/<?php echo $showAdverts['image']; ?>" width="200">
        </a>
      </div>
      <div id="toPopup_<?php echo $i; ?>">

        <div class="close"></div>
        <div id="popup_content">
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <h1>Contact <span class="green"><?php echo $showAdvertiserData['company_name']; ?></span></h1>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <form id="advertenquiry<?php echo $i; ?>" name="advertenquiry<?php echo $i; ?>" method="post" action="" onSubmit="return validateAdvertEnquiryForm<?php echo $i; ?>()">
            <input name="advertiser_id" type="hidden" value="<?php echo $showAdverts['advertiser_id']; ?>">
            <input name="advert_id" type="hidden" value="<?php echo $showAdverts['id']; ?>">
            <p><input name="enquiry_name" type="text" id="name" value="Name *" onFocus="clearMe(this)" style="width: 250px;" /></p>
            <p><input name="enquiry_telephone" type="text" id="telephone" value="Telephone *" onFocus="clearMe(this)" style="width: 250px;" /></p>
            <p><input name="enquiry_email" type="text" id="email" value="Email *" onFocus="clearMe(this)" style="width: 250px;" /></p>
            <p><textarea name="enquiry_query" id="query" cols="45" rows="5" onFocus="clearMe(this)" style="width: 300px;" >Query </textarea></p>
            <p><input type="submit" name="enquire" value="Send" class="submit_button" /></p>
          </form>
          <p>&nbsp;</p>
        </div>
    </div>

    <?php $i++; ?>
    <?php } } ?>
 </div>

<div id="second_adverts">
<?php // second set of ads here ?>
</div>

ご覧のとおり、これは 8 つの結果すべてを表示し、広告の有効期限が将来の日付であるかどうかを確認します。基本的に、ページの最初の 4 つの結果と最後の 4 つの結果を個別に表示するには、上記のコードが必要です。(2 つのクエリの間にもう少し HTML があります)

4

3 に答える 3

1

これは、私のプロジェクトで以前に使用したソリューションの 1 つです。

1) すべてのレコードを取得し、php 配列に格納します

$rows = array();
while($row = mysql_fetch_array(YOUR_QUERY))
{
    $rows[] = $row;
}

2)foreach()ループを使用して、必要な場所でクエリから取得したデータを使用します

if(is_array($rows)) {
    foreach($rows as $row) {
        //do with $row or create some if,switch condition here !
    }
}

特定の制限と微調整については、 から取得した結果セットを調べてmysql_fetch_array()ください。

于 2013-07-03T08:35:51.430 に答える