Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mySQL结果拆分为两个,并限制为4个_Php_Mysql_Loops - Fatal编程技术网

Php 将mySQL结果拆分为两个,并限制为4个

Php 将mySQL结果拆分为两个,并限制为4个,php,mysql,loops,Php,Mysql,Loops,我有一个关于存储在mySQL数据库中的广告的问题。我需要获取所有结果,按id降序限制排序为8,然后在其中一个中显示4个结果,在另一个中显示4个结果 以下是我当前的代码: <div id="first_adverts"> <?php $i = 1; ?> <?php $getAdverts=mysql_query(" SELECT * FROM adverts WHERE live = 1 ORDER BY id DESC LIMIT 8");

我有一个关于存储在mySQL数据库中的广告的问题。我需要获取所有结果,按id降序限制排序为8,然后在其中一个中显示4个结果,在另一个中显示4个结果

以下是我当前的代码:

 <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个结果。在两个查询之间会有更多的HTML

这是我在项目早期使用的一个解决方案

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_数组获得的结果集

以下是我在项目早期使用的一个解决方案

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_数组获得的结果集

如果我在第一个div中写,或者在第二个div中写,你为什么不直接写一个呢?

如果我在第一个div中写,或者在第二个div中写,你为什么不直接写一个呢?

你可以通过一个查询来完成:

$query =    "SELECT 'adverts.id', 'adverts.advertiser_id', 'adverts.image' 'advertisers.company_name'
             FROM adverts
             LEFT JOIN advertisers ON adverts.advertiser_id = advertisers.id 
             WHERE((expiry_date > NOW()) && (live = 1))
             ORDER BY id DESC LIMIT 8";
$count = 0;
while($showAdverts=mysql_fetch_array(mysql_query($query)) {
    if ($count < 4){
        //display first four
    } else {
        //display second four
    }
    $count++;
}

您可以通过一个查询来实现这一点:

$query =    "SELECT 'adverts.id', 'adverts.advertiser_id', 'adverts.image' 'advertisers.company_name'
             FROM adverts
             LEFT JOIN advertisers ON adverts.advertiser_id = advertisers.id 
             WHERE((expiry_date > NOW()) && (live = 1))
             ORDER BY id DESC LIMIT 8";
$count = 0;
while($showAdverts=mysql_fetch_array(mysql_query($query)) {
    if ($count < 4){
        //display first four
    } else {
        //display second four
    }
    $count++;
}

此处的循环在哪里抱歉,有些代码没有显示您说要按降序排序,但您的查询有ASC。此处的循环在哪里抱歉,有些代码没有显示您说要按降序排序,但您的查询有ASC。