2013-04-03 24 views
0

我試圖做一個程序通過,我可以顯示任何特定的關鍵字(搜索項),有多少次得到了上搜索特定的日期。
我,如果有人正在尋找#1,所以我想,以顯示其搜索統計上的特定數據。例如:
;保存數據並打印日期明智

at 2013-04-01 -> stackoverflow was searched for 15 times<br> 
at 2013-04-02 -> stackoverflow was searched for 28 times<br> 
at 2013-04-03 -> stackoverflow was searched for 10 times<br> 


現在我希望你能明白我想說的話。,。
現在讓我來說說我爲製作這個程序做了些什麼。

看到這個代碼

<?php 
$keyword = null; 

if (!empty($_GET['s'])) { 


$keyword = stripslashes($_GET['s']); 

try { 

    $objDb = new PDO('mysql:dbname=test;charset=UTF-8', 'root', ''); 

    $sql = "INSERT INTO `search` (`keyword`) 
      VALUES (:keyword) 
      ON DUPLICATE KEY UPDATE `times` = `times` + 1"; 

    $statement = $objDb->prepare($sql); 
    $statement->execute(array(':keyword' => $keyword)); 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 


    } 


    try { 

$objDb = new PDO('mysql:dbname=test;charset=UTF-8', 'root', ''); 




    $sql = "SELECT `s`.*, 
     IF (
      (
       SELECT `id` 
       FROM `search` 
       ORDER BY `date` DESC 
       LIMIT 0, 1 
      ) = `s`.`id`, 
      1, 
      0 
     ) AS `latest` 
     FROM `search` `s` 
     ORDER BY `date` DESC LIMIT 0, 50"; 




$statement = $objDb->query($sql); 
$result = $statement->fetchAll(PDO::FETCH_ASSOC); 

    } catch(PDOException $e) { 
echo $e->getMessage(); 
    } 

    ?> 
    <!DOCTYPE HTML> 
<html lang="en"> 
<head> 
<meta charset="utf-8" /> 
<title>Save search requests to database</title> 
<meta name="description" content="Save search requests to database" /> 
<meta name="keywords" content="Save search requests to database" /> 
<link href="/css/core.css" rel="stylesheet" type="text/css" /> 
<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
    </head> 
    <body> 

    <section id="wrapper">  

<form method="get"> 
    <input type="text" name="s" id="search" class="field" value="<?php echo $keyword; ?>" /> 
    <input type="submit" class="button" value="Search" /> 
</form> 

<?php if (!empty($result)) { ?> 

    <table cellpadding="0" cellspacing="0" border="0" class="tbl_repeat"> 
     <tr> 
      <th>Keyword</th> 
      <th class="tar">Searched</th> 
     </tr> 
     <?php foreach($result as $row) { ?> 
     <tr<?php echo $row['latest'] == 1 ? ' class="active"' : null; ?>> 
      <td><?php echo $row['keyword']; ?></td> 
      <td class="tar"><?php echo $row['times']; ?></td> 
     </tr> 
     <?php } ?> 
    </table> 

<?php } else { ?> 
    <p>There are currently no searches available.</p> 
<?php } ?> 

    </section> 

    </body> 
    </html> 


這是一個簡單的程序,從而節省了最近在數據庫中搜索關鍵字,並顯示在網頁上,它也表明,多少次關鍵字得到的搜索。 。實際上它只是更新的時間戳替換當前的時間戳..
現在,任何人都可以請幫助添加特定條件下由它會檢查今天的日期,然後將添加在數據庫中的條目,如果某個詞在得到了研究同一天,它會更新curren帶有更新時間戳的t_timestamp。 我只是想根據日期劃分最近的搜索查詢。


這是在你的數據庫製作此表的代碼

CREATE TABLE IF NOT EXISTS `search` (<br> 
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, <br> 
`keyword` varchar(100) NOT NULL, <br> 
`times` int(11) unsigned DEFAULT '1', <br> 
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, <br> 
PRIMARY KEY (`id`), <br> 
UNIQUE KEY `keyword` (`keyword`) <br> 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=301 ; <br> 



請用一個例子數據回覆..

+0

所以GROUP BY在查詢日期,計數值爲每個組。 – CBroe

+0

如何通過集團在database..plz保存搜索查詢,解釋它.. – Kapil

回答

0

如何

SELECT keywords, COUNT(*) as no_of_times, date 
FROM search 
GROUP BY date, keywords 

,這將給你像

keywords  | no_of_times | date  | 
------------------------------------------ 
stackoverflow | 25  | 2012-10-12 | 
meta   | 10  | 2012-10-12 | 

DEMO

+0

看,如果計算器中搜索在2012年10月12日25次,它會顯示,但如果計算器將獲得搜查2012-10- 13 5倍,那麼也許你的概念將展示它bcoz上對重複密鑰更新'times' ='times' + 1" 的35倍;但我想說明,如果計算器被搜查的2012年10月12日25次,然後後它被搜尋5倍於2012年至1013年,所以必須顯示像this..stackoverflow => 25倍財產以後(2102年10月13日)和計算器=> 5倍(2012年10月13日)..所以它是可能與你的概念.. – Kapil

+0

查看演示[** **這裏(http://sqlfiddle.com/#!2/f634a/2)所有你需要做的是去除'keyword'列的唯一鍵 – asprin

+0

Hmm..It好像我的要求..非常感謝您的幫助...我要檢查這在PC上xampp..Then我會回答你的。 – Kapil

0

我有一個簡單的解決方案,我現在能想到的。

$search_term = $_POST['search_term']; 
$date = $_POST['date']; 

$select = mysqli_query("select * from search where keyword='$search_term' and date='$date'"); 
$rowCheck = mysqli_num_rows($select); 
if($rowCheck>0) { 
$fetch = mysqli_fetch_array($select); 
$times = $fetch['times']; 
$update_query = // RUN UPDATE QUERY HERE 
} else { 
    // RUN INSERT QUERY HERE 
} 

希望這有助於