2016-03-04 58 views
0

我试图为从数据库打印出来的一些文章创建一个“Like”按钮。但我卡住了。用jQuery和OOP创建Like按钮PHP

我到了我从jQuery发布我的投票的地步,我得到一个空的VAR_DUMP。

而在我的OOP类中,我不确定如何在将数据保存到数据库时打印出投票。

这里是我的代码

HTML

<?php 
// IF theres is a id in adress field 
//if(isset($_GET['id'])) { 
$page = new CMS(); 
$gp = $page->getPage(); 


foreach ($gp as $sp) { 
    //var_dump($sp); 

    echo "<div class='pub'>"; 
    echo "<h4 class='pub-headline'>" . $sp['title'] . "</h4>"; 
    echo "<article class='pub_art'>" . $sp['content'] . "</article>"; 
    echo "<p class='pub_created'>" . $sp['created'] . "</p>"; 
    echo "<p class='pub_created_by'>". $sp['writer'] ."</p>"; 
    echo "<button class='show'>Show</button>"; 
    echo "<button class='noshow'>Hide</button>"; 

    echo "<button class='btn-like'>Like</button>"; // Here is my button 

    echo "</div>"; 

} 
?> 

jQuery的

/* --------------------Selecting article----------------------*/ 

    // Calling for the method - likes 
    $(".btn-like").on("click", like); 


function like(e) { 
    e.preventDefault(); 

     // Declaring variables 
    var id=$(id).val(); 
    var likes=$(".btn-like").val(); 


    console.log('Click Click..'); 

    $.post('classCalling4.php', { 

     id: id, 
     likes: likes }, 

     function(data){ 
      console.log(data); 

      }); 

    } 

PHP

var_dump($_POST); // ***** This VAR_DUMP is getting back to me empty 


    if(isset($_POST['id'])) { 

    //echo "rätt..."; 

    $id = $_POST['id']; 
    $likes = $_POST['likes']; 

    $id = intval($id); 
    $likes = intval($likes); 


    $ul = new updateLikes(); 

    if($ul->updateLikes($_POST['id'], $_POST['likes'])) { 

     echo "Created"; 
    } 
    else { 

    } echo "noooo"; 
} 
?> 

最后我OOP类,即没有完成,因为我卡住了。

public function updateLikes($id, $likes) { 


    $stmt = $this->db->prepare('UPDATE pages SET likes = likes+1, WHERE id = $id'); 
    $stmt->bind_param("ii", $likes, $id); 

    if($stmt->execute()) { 
     echo "win"; 
    } else { 
     echo "lost"; 
    } 
    } 

回答

0

至少你的OOP类有一些错误:

$stmt = $this->db->prepare('UPDATE pages SET likes = likes+1, WHERE id = $id'); 
$stmt->bind_param("ii", $likes, $id); 

应该是:

$stmt = $this->db->prepare('UPDATE pages SET likes = likes + :likes, WHERE id = :id'); 
$stmt->bind_param(":likes", $likes); 
$stmt->bind_param(":id", $id); 

,或者意思是只能由一个增加所好,则:

$stmt = $this->db->prepare('UPDATE pages SET likes = likes + 1, WHERE id = :id'); 
$stmt->bind_param(":id", $id); 

如果var_dump没有返回一个什么的,那么在PHP代码中可能会有错误(导致错误代码500,并且取决于PHP设置PHP可能会返回空白页)