2014-07-07 22 views
0

我有問題將喜歡/不喜歡的值存儲到我的數據庫中,我需要每個帖子都有自己的喜歡/不喜歡的列存儲在其行中,並且當有人喜歡帖子時,就像沒什麼其他的,我遇到的問題是它喜歡數據庫中的第一個條目,有人可以提供指導嗎?更新不是特定於某一行

如果它有助於繼承人的數據庫 enter image description here

$likes = (empty($_POST['like'])) ? : $_POST['like'] ; 
$dislikes = (empty($_POST['dislike'])) ? : $_POST['dislike'] ; 
$ip = $_SERVER['REMOTE_ADDR']; 
if(isset($_POST['like'])){ 
$likes1 = $likes+1; 
$voted1 = $voted+1; 
$query2 = $db->prepare("INSERT INTO data (voted, ip) VALUES (:voted, :ip)"); 
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR); 
$query2->bindParam(':ip', $ip, PDO::PARAM_STR); 
$query2->bindParam(':pid', $pid, PDO::PARAM_STR); 
$query2->execute(); 
$update1 = $db->prepare("UPDATE data SET likes = :likes"); 
$update1->bindParam(':likes', $likes1, PDO::PARAM_STR); 
$update1->bindParam(':quote', $actual_quote, PDO::PARAM_STR); 
$update1->execute(); 
header("Location: inspirational.php?"); 
} 

if(isset($_POST['dislike'])){ 
$dislikes1 = $dislikes+1; 
$voted1 = $voted+1; 
$query2 = $db->prepare("INSERT INTO data (voted, ip) VALUES (:voted, :ip)"); 
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR); 
$query2->bindParam(':ip', $ip, PDO::PARAM_STR); 
$query2->execute(); 
$update1 = $db->prepare("UPDATE data SET dislikes = :dislikes"); 
$update1->bindParam(':dislikes', $dislikes1, PDO::PARAM_STR); 
$update1->bindParam(':quote', $actual_quote, PDO::PARAM_STR); 
$update1->execute(); 
header("Location: inspirational.php?"); 
} 
$stmt = $db->query("SELECT * FROM data"); 
$stmt->setFetchMode(PDO::FETCH_ASSOC); 
$row3 = $stmt->fetch(); 

$query = $db->prepare("SELECT * FROM data WHERE formtype = 'Inspirational' "); 
$query->execute(); 
$row = $query->fetch(PDO::FETCH_ASSOC); 
//delete this-> $info = mysql_fetch_array($query1); ? 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{ 
?> 
<div class="wrapper"> 
<div class="submissions"> 
    <div class="logo-logo"><h2>Questions.</h2> 
     <div class="checkboxes"><?php echo htmlentities($row["formtype"]); ?></div> 
    </div> 
    <div class="top-submit"> 
     &#8220;<?php echo htmlentities($row["actual_quote"]); ?>&#8221; 
    </div> 
    <div class="poster">- <?php echo htmlentities($row["poster"]); 

if(isset($row3["voted"]) && isset($row3["ip"])) 
{ 
    echo "You have already voted for this."; 
} 
else 
{ 
    ?> 
<form action="" method="post"> 
<input type="submit" name="dislike" value="dislike" />   
<input type="submit" name="like" value="like" />   
</form>  <?php 
} 
?> 
+0

聽說過ORM?喜歡雄辯嗎?這使得這個很容易編寫,使用和維護。只是在說' – MightyPork

回答

0

的圖片我已經嘗試過我的項目的一個結構。不同之處在於我在評分系統上嘗試過。我更喜歡將喜歡和不喜歡的內容存儲爲JSON文本格式,因此您可以輕鬆操作它。

喜歡/不喜歡JSON格式

{user_id:1} 

user_id是一個喜歡的用戶/不喜歡一個具體崗位。 1表示喜歡/不喜歡帖子。例如。

Like/Dislike Column 
{0001:1, 0002:1; 0003:1} 

可以json_decode這個和將輸出作爲

陣列([0001] => 1,[0002] => 2,[0003] => 3)

如果使用函數array_key_exists,則可以驗證用戶是否喜歡該帖子。並使用array_count對其進行計數。

我更喜歡在javascript中計算喜歡/不喜歡和驗證,所以它不會減慢你的應用程序。我相信有一個等效的方法來計算和驗證JavaScript中的PHP。

希望這會有所幫助。