Я работаю над проектом, который включает в себя галерею изображений. Теперь я хочу сохранить количество значений clicks / counts в моей базе данных (разработанных в MySQL). Я попытался сделать это по-своему, но проблема в том, что значение count / clicks для всех изображений хранится в базе данных как одно значение.
Код, приведенный ниже, находится в файле main.php, который отображает изображения, которые извлекаются из базы данных. Picture.php – это тот, который извлекает изображения из базы данных. Я добавил код для подсчета количества кликов в picture.php, чтобы он подсчитывался всякий раз, когда нажимается изображение.
main.php
$query="SELECT * FROM files"; $result=mysql_query($query) or die(mysql_error()); while($fetch=mysql_fetch_array($result)){ echo "<div class=single> <div class=wrap> <a href=picture.php?fid=".$offer_id."> <img src=picture.php?fid=".$offer_id."\"> </a> </div> </div>"; }
picture.php
if(isset($_GET['fid'])) { include "connect.php"; $fid=$_GET['fid']; $query="SELECT * FROM offers_em WHERE o_id =$fid"; $result=mysql_query($query) or die(mysql_error()); $sql="UPDATE offers_em SET count+=1 WHERE o_id=".$fid; $sql2=mysql_query($sql); $name=mysql_result($result,0,"pic_name"); $size=mysql_result($result,0,"size"); $type=mysql_result($result,0,"type"); $content=mysql_result($result,0,"content"); header("Content-Disposition: attachment; filename=$name"); header("Content-length: $size"); header("Content-type: $type"); echo $content; } else{ die("No file ID given..."); }
Я не уверен, что MySQL поддерживает «+ =», попробуйте SET count = count + 1
EDIT: Определенно посмотрите на сортировку уязвимости инъекций, независимо от того, как указано в комментариях ниже вашего сообщения.
Это не имеет никакого отношения к SQL-инъекции.
Проблема в том, что я вызываю ссылку в цикле, поэтому все значения кликов обновляются. Поэтому я создал другой файл count_link.php и будет вызываться только тогда, когда пользователь нажимает ссылку на изображение.
$query="SELECT * FROM files"; $result=mysql_query($query) or die(mysql_error()); while($fetch=mysql_fetch_array($result)){ echo "<div class=single> <div class=wrap> <a href=count_link.php?fid=".$offer_id."> <img src=picture.php?fid=".$offer_id."\"> </a> </div> </div>"; }
в$query="SELECT * FROM files"; $result=mysql_query($query) or die(mysql_error()); while($fetch=mysql_fetch_array($result)){ echo "<div class=single> <div class=wrap> <a href=count_link.php?fid=".$offer_id."> <img src=picture.php?fid=".$offer_id."\"> </a> </div> </div>"; }
В любом случае спасибо за вас, парни .. 🙂