图像点击计数器、数据库行更新和按点击排序


Image Click Counter, data base Row update, and Order by hits

我正在尝试制作一个图像点击计数器,这样当一次点击图像时,它会将hit列更新1。

我在语法上遇到了问题,就获取需要更新的行号而言。

稍后我想使用这个点击栏来排序图像在网站上的显示顺序。

如果你想扔给我一块骨头,并告诉我如何做到这一点,我将不胜感激:)

connect.php

<?php
$servername = "*******";
$username = "********";
$password = "********";
$dbname = "********";
$conn = new mysqli($servername, $username, $password,$dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//echo "Connected successfully";
?>

art.php

     <?php
    require 'connect.php';
    $sql = "SELECT * FROM art";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo 
            "<div class='art'>
            <a href='img/".$row["name"].".jpg ' 
//part that I need help with
onclick='
<?php
include 'update_hits.php';
update_hit('$row');
?>'
 target='_blank'>
                <img src='img/".$row["name"]."_tnail.jpg' alt='".$row["name"]."' title='".$row["name"]." • ".$row["year"]." • ".$row["type"]."'/>
            </a>
            <p>
                &nbsp;&nbsp;&nbsp;&nbsp;".$row["name"]." &nbsp; • &nbsp; ".$row["year"]."&nbsp; • &nbsp;".$row["type"]."
            </p>
        </div>"
            ;
        }
    } else {
        echo "0 results";
    }
    $conn->close();
    ?>

update_hits.php

<?php
require 'connect.php'; 
 function update_hit($row){
        $query = "SELECT 'hits' FROM 'art'";
        if(@$query_run = mysql_query($query);){     
            $count = mysql_result($query_run, '$row' , 'hits');
            $count_inc = $count + 1;        
            $query_update = "UPDATE 'art' SET 'hits' = '$count_inc'";
            @$query_update_run =mysql_query($query_update);     
            }       
        }           
?>

终于让工作了

     <?php
require 'connect.php'; 
$image = $_GET['image'];
//need to check whether file exists also
if(!empty($image)){
    echo "<img src='".$image.".jpg'>"; // prefix full path if needed
    $imagename = explode("/", $image); 
    $sql = "UPDATE `art` SET `hits`=`hits` +1 WHERE `name` = '".$imagename[1]."'";

     if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}
$conn->close();
}       
?>

这只是逻辑,您的代码并不完美,它需要许多验证和额外的检查。我还没有测试过这个代码检查的语法错误。只有你才能了解如何做到这一点的逻辑。

修改的art.php

<?php
    require 'connect.php';
    $sql = "SELECT * FROM art";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo 
                "<div class='art'>
    <a href='displayImg.php?image=".$row["name"]."' target='_blank'>
    <img src='img/".$row["name"]."_tnail.jpg' alt='".$row["name"]."' title='".$row["name"]." • ".$row["year"]." • ".$row["type"]."'/>
    </a>
    <p>
    &nbsp;&nbsp;&nbsp;&nbsp;".$row["name"]." &nbsp; • &nbsp; ".$row["year"]."&nbsp; • &nbsp;".$row["type"]."
    </p>
    </div>"
                ;
        }
    } else {
        echo "0 results";
    }
    $conn->close();
    ?>

新显示Img.php

<?php
require 'connect.php'; 
$image = $_GET['image'];
//need to check whether file exists also
if(!empty($image)){
    echo 'img/'.$image.'jpg'; // prefix full path if needed
    $sql = "UPDATE 'art' SET hits=hits+1 where name = ".$image;
    $result = $conn->query($sql);
}       
?>