【问题标题】:Count Page By Weekly, then create new table entry每周计数页面,然后创建新表条目
【发布时间】:2016-01-24 18:49:26
【问题描述】:

我创建了一个页面计数器,并希望跟踪用户点击该页面的次数。

到目前为止,我可以跟踪他们点击页面的次数,但我现在想设置它,以便在一周结束时创建一个新条目。

我的 mysql_query 查找基于用户名,发现我正在跟踪的用户不止一个。

这是我用于跟踪所选页面的用户的代码:

<?php

include"lib/settings.php";

date_default_timezone_set("America/Los_Angeles");

$track_users_clicks = $_SESSION['username'];

$todays_date = date("m/d/Y H:i:s a");

$query = "SELECT * FROM page_count WHERE `username`=".sql_val($track_users_clicks);
$result = mysql_query($query) or die("<b>A fatal MySQL error occured</b>.<br />Query: ".$query."<br />Error: (".mysql_errno().") ".mysql_error());
while ($row = mysql_fetch_assoc($result)) { 
$username = $row['username'];
$counter_snippet = $row['counter_snippet'];
$date_time = $row['date_time'];
}//end while


if ($_SERVER['REMOTE_ADDR']){

$query_update = 'UPDATE page_count SET 
`counter_snippet` = '.sql_val($counter_snippet + 1).',
`date_time` = '.sql_val($todays_date).'
WHERE `username` = '.sql_val($track_users_clicks);
$result = mysql_query($query_update) or die("<b>A fatal MySQL error occured</b>.<br />Query: ".$query_update."<br />Error: (".mysql_errno().") ".mysql_error());

}


?>

到目前为止,这是我想出的每周跟踪用户的方法:

<?php

include"lib/settings.php";

date_default_timezone_set("America/Los_Angeles");

//$track_users_clicks = $_SESSION['username'];

$todays_date = date("m/d/Y");

$begin_date = date("m/d/Y");

$end_date = date( "m/d/Y", strtotime($begin_date."+7 day" ) );

$user_log = "trevor.hanes" .$end_date;

$track_users_clicks = "trevor.hanes";


$query_begin = "SELECT * FROM date_time WHERE `username`=".sql_val($track_users_clicks);
$result = mysql_query($query_begin) or die("<b>A fatal MySQL error occured</b>.<br />Query: ".$query_begin."<br />Error: (".mysql_errno().") ".mysql_error());
while ($row = mysql_fetch_assoc($result)) { 
$username = $row['username'];
$counter_snippet = $row['counter_snippet'];
$start_date = $row['start_date'];
//$end_date = $row['end_date'];
}

if ($todays_date >= $end_date){

$query_start = 'INSERT INTO date_time (  
   `username`,
   `start_date`, 
   `end_date`, 
   `user_log` 
) VALUES ( 
   '.sql_val($track_users_clicks).', 
   '.sql_val($todays_date).', 
   '.sql_val($end_date).', 
   '.sql_val($user_log).' 
)'; 
$result = mysql_query($query_start) or die("<b>A fatal MySQL error occured</b>.<br />Query: ".$query_start."<br />Error: (".mysql_errno().") ".mysql_error());

}
else

{
if ($_SERVER['REMOTE_ADDR']){

if ($end_date >= $todays_date){    

$query_update = 'UPDATE date_time SET 
`counter_snippet` = '.sql_val($counter_snippet + 1).'
WHERE `end_date` = '.sql_val($end_date);
$result = mysql_query($query_update) or die("<b>A fatal MySQL error occured</b>.<br />Query: ".$query_update."<br />Error: (".mysql_errno().") ".mysql_error());

}}}

echo $begin_date;
echo "<BR>";
echo $end_date;
echo "<BR>";
echo $user_log;
?>

所以我的问题是,一旦我将日期更改为晚于结束日期,它只会不断创建新的表格条目。而不是为新的一周创建一个新的表条目,然后更新命中。

关于我做错了什么的任何想法。

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    首先要做的是:您需要使用准备好的语句。准备好的语句将防止恶意代码深刻影响您的数据库。例如,如果您的用户权限配置不当,有人可能会通过将以下文本放入 $_SESSION['username'] 来删除您的整个表:

    ; DROP TABLE page_count;
    

    这看起来像是一个不错的 PDO 教程(在 PHP 中使用预准备语句的最常用方法):http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

    无论如何,要真正回答您的问题,请使用如下查询:

    SELECT *, YEARWEEK(date_time) as week,
    FROM page_count WHERE `username` = :USERNAME
    GROUP BY week;
    

    YEARWEEK 文档:http://www.techonthenet.com/mysql/functions/yearweek.php

    【讨论】:

    • 这是您要找的吗?
    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多