2014-07-07 2 views
0

내 데이터베이스에 좋아요/싫어요 값을 저장하는 데 문제가 있습니다. 각 행에 자신의 좋아하는/싫어하는 행을 저장해야하며, 누군가가 게시물을 좋아하면 그 행을 좋아합니다. 그 게시물 그 밖의 것이 아니라, 제가 가지고있는 문제는 데이터베이스의 첫 번째 항목을 좋아한다는 것입니다. 누군가지도 할 수 있습니까? 이 heres는 데이터베이스 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은 들었습니까? Eloquent처럼? 그렇게 쓰면 사용하고 유지하기가 훨씬 쉬워집니다. 그냥 ' – 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를 사용하여 계산하십시오.

자바 스크립트에서 좋아요/싫어함 및 유효성 확인의 계산을 선호하므로 애플리케이션 속도가 느려지지 않습니다. 나는 거기에 자바 스크립트에서 계산하고 유효성 검사를위한 PHP의 상응하는 방법이라고 확신합니다.

희망이 도움이됩니다.

관련 문제