如何在数据库中保存页面视图

时间:2015-06-10 13:30:40

标签: php mysql database

我有一个页面,我向用户显示50个图像,用户可以点击图像,并将此图像加载到另一个页面。现在我想将每个图像视图保存到数据库,即点击的图像ID的计数器。 所以我到目前为止所做的是在表中添加另一行,我称之为hits。我在这里展示图片:

$result = $pdo->prepare("SELECT * FROM images ORDER BY id ASC LIMIT $start_from, 50");
$result->execute();
for($i=0; $row = $result->fetch(); $i++)
{
   echo '                                   
         <h1><a href="post.php?id='.$row['id'].'">'.$row['title'].'</a></h1>
         <img src="../upload/'.$row['name'].'" alt=""/>';
}

post.php中,用户只能看到他点击过的图像,我有这个:

if(isset($_GET['id']) && is_numeric($_GET['id']))
{
   $id = $_GET['id'];                         
   $result = $pdo->prepare("SELECT * FROM images WHERE id= ?");
   if ($result->execute(array($_GET['id']))) 
   {            
       for($i=0; $row = $result->fetch(); $i++)
       {
           echo '    
               // source to show that image
               ';
       }
   }
}

我的理解我必须使用类似的内容更新hits

UPDATE images SET hits = hits + 1 WHERE id = idofimage

我无法理解的是如何在当前代码中实现更新。还在哪里?

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您必须创建UPDATE语句,然后选择SELECT以显示该单个图像。应该是这样的:

let parameters = [
        "data": jsonObj.object
    ]

注意:未经过测试,我还在学习PHP和MySQL,所以如果有更好的解决方案,请更正我。 感谢&#39; S

答案 1 :(得分:1)

你几乎解决了所有问题

只需在显示图片的同一位置添加更新代码

if(isset($_GET['id']) && is_numeric($_GET['id']))
{
   $id = $_GET['id'];                         
   $result = $pdo->prepare("SELECT * FROM images WHERE id= ?");
   if ($result->execute(array($_GET['id']))) 
   {       
       //replace for by if because we are only getting one result  
       if($row = $result->fetch())
       {
           //update the hits
           $update = $pdo->prepare("UPDATE images SET hits = hits + 1 WHERE id = ?");
           //I prefer binding values and have a call to execute()
           //but both options are ok
           //$update->bindParam(1, $_GET['id'], PDO::PARAM_INT);
           //$update->execute();
           $update->execute(array($_GET['id']));

           echo '    
               // source to show that image
               ';
       }
   }
}