PHP在循环中显示MYSQL结果

时间:2013-11-01 13:41:59

标签: php while-loop

我有一个左连接,下面显示了代码,

  • ID
  • 引荐
  • 搜索字词
  • 的client_id

从表1开始,然后使用下面的左连接查询从表2中获取以下列。

  • 的client_id
  • visit_id
  • TIMEDATE
  • URL1

     $query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
      "FROM table1 LEFT JOIN table2 "
     "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate";
    
       $result = mysql_query($query) or die(mysql_error());
    
          while($row = mysql_fetch_array($result)){ ?>
         <div id=''>
       <?php "<br />";
       echo $row['referrer']. " - ". $row['search_term']; 
       echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];
       echo "<br />"; ?>
           </div>
       <?php
            }
    

我要做的是格式化行,以便引用者和搜索词只显示一次而不是每行显示,以便结果看起来像这样。

推荐人搜索词

timedate url1 1 时间安排Url1 1 timedate url1 1

推荐人搜索字词

时间安排Url1 2 时间安排Url1 2 时间安排Url1 2

数字1和2用于表示结果分组的不同访问ID。目前,我在每一行之后都会获得引荐来源和搜索词,因为它处于循环中并且理解这一点。只是不知道我是否可以在每组结果中只显示一次推荐人和searc术语。

2 个答案:

答案 0 :(得分:1)

您必须保存当前待处理的referrer-searchterm组合并检查它是否发生变化,如果是,则打印出referrer-searchterm行:

$query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
  "FROM table1 LEFT JOIN table2 "
 "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate" .
 "ORDER BY referrer, search_term";

$result = mysql_query($query) or die(mysql_error());
$currentReferrerSeatchTerm = null;

while($row = mysql_fetch_array($result)){   
    $newReferrerSearchTerm = $row['referrer']. " - ". $row['search_term'];

    echo '<div id=""><br>';

    if($currentReferrerSeatchTerm != $newReferrerSearchTerm){
       echo $newReferrerSearchTerm . '<br>'; 
       $currentReferrerSeatchTerm = $newReferrerSearchTerm
    }

    echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];

    echo '<br></div>';
}

答案 1 :(得分:0)

我通常设置一个var来存储引用者,然后在每个循环中检查它。如果它与前一个相同,则什么也不做。如果它不同,则显示新的标题信息(在您的情况下为referrer&amp; search_term),然后更新var。

$query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
  "FROM table1 LEFT JOIN table2 "
 "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate";

   $result = mysql_query($query) or die(mysql_error());

      $prevRef = '';
      while($row = mysql_fetch_array($result)){ ?>
     <div id=''>
   <?php "<br />";

   if($prevRef != $row['referrer']) {
       echo $row['referrer']. " - ". $row['search_term'];
       $prevRef = $row['referrer'];
   }

   echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];
   echo "<br />"; ?>
       </div>
   <?php
        }