2013-11-21 110 views
0

我试图在用户点击链接时更新一个值。Sql链接点击更新

<?php 
$data = mysql_query("SELECT * FROM comments a LEFT JOIN pins b ON a.pin_id = b.id INNER  JOIN board c on b.board_id = c.id WHERE a.to_id = '$myid' AND a.status = 'unviewed'") 
or die(mysql_error()); while($info = mysql_fetch_array($data)) 
{ 
Print "<li>"; 
Print "<a href='/board/pins/".$info['board_id']."/".$info['pin_id']."'>"; 
Print "<img src='".$info['pin_url']."' width='50' align='left'>"; 
Print "<font size='1'>comment received on ".$info['date']."</font></a>"; 
Print "Collection: ".$info['board_name']."</li>"; 
} 
?> 

链接是上面的链接。

如何在链接被点击时编辑上述代码以包含更新查询"UPDATE comments SET status='viewed' WHERE to_id = '$myid' AND id='$postid'"

编辑:

这是我mark_viewed.php:

<?php 
$con=mysqli_connect("XXX","XXX","XXX","XXX"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

// get values sent from address bar 
$myid=$_GET['myid']; 
$postid=$_GET['postid']; 

mysqli_query($con,"UPDATE comments SET status='viewed' WHERE to_id ='$myid' AND id='$postid'"); 
mysqli_close($con); 
?> 

而且我发送页面:

<?php // display of the notifications dropdown menu 
$query_select = "SELECT * FROM comments a LEFT JOIN pins b ON a.pin_id = b.id LEFT JOIN  board c on b.board_id = c.id WHERE a.to_id = '$myid' AND a.status = 'unviewed' ORDER BY  a.date DESC"; 
$result_select = mysql_query($query_select) or die(mysql_error()); 
$rows = array(); 
while($row = mysql_fetch_array($result_select)) 
    $rows[] = $row; 
foreach($rows as $row){ 
    $myid = $row['user_id']; // my id 
    $name = $row['board_name']; // collection name 
    $boardid = $row['board_id']; // collection id 
    $postid = $row['pin_id']; // post id 
    $url = $row['pin_url']; // image url 
    echo "<li><a href='/board/pins/$boardid/$postid' data-myid='$myid' data- postid='$postid' class='markviewed'>"; 
    echo "<img src='$url' height='50' width='50'>"; 
    echo "New comment in $name."; 
    echo "</a></li>"; 
} 
?> 

我有JS在同一页面的头,但它不工作。在这页$myid$postid varibles很好,但他们不被发送/接收mark_viewed.php

+0

通过AJAX是最有效,最“现代”的方式 –

+0

AJAX或链接URL – MightyPork

+0

取属性你可以更具体的AJAX?我知道使用AJAX获取或发布可能工作,但任何有用的例子,我可以找到正确的代码在开始? –

回答

0

试试这个代码(AJAX的建议在评论中)。它假设它基本上做的是:

  1. 将相关的id打印到html中作为属性。
  2. 绑定一个监听器,点击这些链接事件
  3. 查验http://domain.com/mark_viewed.php(文件,做查询更新评论如图所示)后,其浏览器重定向到所需的位置(/板/销/ ...)
//html part 
<?php 
$myid = 1234; 
$postid = 333; 
//echo prepared link with ids in it's data-attributes 
echo '<a href="/board/pins/"'.$info['board_id'].'/'.$info['pin_id'].'" 
    data-myid="' . $myid . '" 
    data-postid="' . $postid . '" 
    class="markviewed">mark ids as viewed and go to /board/pins/...</a>'; 
?> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    //bind a listener to "click" event on links with class "markviewed" 
    $('a.markviewed').click(function(event) { 

     //prevent default behavior just in case 
     event.preventDefault(); 

     //get ids from clicked <a> 
     var myid = $(this).attr('data-myid'); 
     var postid = $(this).attr('data-postid'); 

     //ping the address to mark clicked link as viewed 
     $.ajax('http://domain.com/mark_viewed.php?myid=' + myid + '&postid=' + postid); 

     //redirect to the link in the href attribute 
     window.location.href = $(this).attr('href'); 

    }); 
}); 
</script> 
+0

据我了解,如果用户有3条未查看的消息,显示为3个链接,一旦他/她点击到一个,它会更新mark_viewed.php中的数据库,然后重定向到未查看消息的页面?那么用户只有2个未查看的消息。 –

+0

查看我编辑的问题 –

+0

将js移动到页面底部或将'$('a.markviewed')。click(..)'更改为'$('a.markviewed')。on('click',函数(事件){...});' – Kleskowy