@$love=$_POST['id'];if(isset($love)){$query="SELECT * FROM ecs_article_love where article_id='$love' AND ip='$realip'";$result=mysql_query($query);$row=mysql_fetch_row($result);//dump($row);$ip1=$row[2];$ip2=$realip;$todaytime=strtotime(date('Y-m-d'));$iptime=$row[3];//$endtime=strtotime(date('Y-m-d',strtotime('+1 day')));//echo $todaytime;if(strcmp($ip1,$ip2)==0){echo 2;}if(!$row && $iptime<$todaytime){$query="INSERT INTO ecs_article_love (ip,article_id,iptime) VALUES ('".$ip2."','".$love."','".$todaytime."')";mysql_query($query);//echo "";$sql = $GLOBALS['db']->query("update ".$GLOBALS['ecs']->table('article')." set love=love+1 where article_id=$love");echo 1;}die();}這是資料庫的設計
回複討論(解決方案)
你的查詢語句都沒有取,當天的資料,取的是IP對應的文章的所有資料
第一條sql就有很大的問題吧,ip='$realip' 如果沒有$realip,是不是就會報錯啊。可以把後面的where條件刪除了。
假設有 $realip 並從第一條sql中找到了ip 或者 為空白 , 進行下面的比較。後面你寫的邏輯應該是錯的。
因為你在之前用的是文章id做的判斷,所以文章可以確定了 , 就差ip是否相同或者今天是否贊過。我覺得邏輯可以這樣:
if( 今天時間 = 這個文章的資料庫 ){
if( 當前贊ip = 資料庫中的ip){
不能贊;
}else{
可以贊;
}
}else{
可以贊;
}
我也是新手,有不對請幫忙指點一下。
第一條sql就有很大的問題吧,ip='$realip' 如果沒有$realip,是不是就會報錯啊。可以把後面的where條件刪除了。
假設有 $realip 並從第一條sql中找到了ip 或者 為空白 , 進行下面的比較。後面你寫的邏輯應該是錯的。
因為你在之前用的是文章id做的判斷,所以文章可以確定了 , 就差ip是否相同或者今天是否贊過。我覺得邏輯可以這樣:
if( 今天時間 = 這個文章的資料庫 ){
if( 當前贊ip = 資料庫中的ip){
不能贊;
}else{
可以贊;
}
}else{
可以贊;
}
我也是新手,有不對請幫忙指點一下。
$realip是擷取用戶端ip的,不會報錯的。你這樣的邏輯我試了下, 當資料庫存在兩條資料時,它就會自動取昨天的時間戳記,一直可以點贊成功。
第一條sql就有很大的問題吧,ip='$realip' 如果沒有$realip,是不是就會報錯啊。可以把後面的where條件刪除了。
假設有 $realip 並從第一條sql中找到了ip 或者 為空白 , 進行下面的比較。後面你寫的邏輯應該是錯的。
因為你在之前用的是文章id做的判斷,所以文章可以確定了 , 就差ip是否相同或者今天是否贊過。我覺得邏輯可以這樣:
if( 今天時間 = 這個文章的資料庫 ){
if( 當前贊ip = 資料庫中的ip){
不能贊;
}else{
可以贊;
}
}else{
可以贊;
}
我也是新手,有不對請幫忙指點一下。
原來只要在sql語句上加個取當天的資料時,這樣就不會出現一直取出昨天的資料一直點贊成功的情況了。。
你的查詢語句都沒有取,當天的資料,取的是IP對應的文章的所有資料
嗯,正解。這樣就不會出現一直取出昨天的資料一直點贊成功的情況了。。