Итак, я создаю веб-сайт фортепианной библиотеки для своего младшего кузена.
В настоящее время я использую функцию foreach для отображения всех данных из моей базы данных. Теперь это прекрасно работает, и мне удалось заставить работать несколько функций, но у меня возникли проблемы с "счетчиком".
Супер простая концепция, за исключением того факта, что мне нужен счетчик для каждой отдельной записи.
Под "счетчиком" я подразумеваю, что после перехода по ссылке к счетчику добавляется +1. Чтобы у каждой ссылки было "Посещено 100 раз" или "Посещено 34 раза" и т. д..
Я пробовал следующее:
if($mysqli){
$result = mysqli_query($mysqli,"SELECT * FROM testtable ".$orderbyfilter);
$rows = $result->fetch_all(MYSQLI_ASSOC);
foreach($rows as $row) {
echo "<tr id='entry'><td>";
echo ucwords($row['name']);
echo "</td><td align='center'>";
echo '<a href="' . $row['url'] . '">url</a>';
echo "add hit:";
echo "<a href='?action=callfunction'>Click</a>";
//current counter script
if(isset($_GET['action']) && $_GET['action'] == 'callfunction'){
$hitcount = $row['hitcount'] + 1;
$id = $row['id'];
// why doesn't this work?
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='".$id."'";
$result=mysqli_query($con,$sql);
}
echo "</td><td align='center'>";
echo $row['level'];
echo "</td><td align='center'>";
echo $row['hitcount'];
echo "</td></tr>";
}
mysqli_close($mysqli);
} else {
echo "table did not correctly display!";
}
Очевидно метод:
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='".$id."'";
Не работает, так как когда я нажимаю на ссылку, она обновляет все записи с одинаковым количеством обращений. Однако, когда я меняю его на:
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='2'";
Он отлично работает, когда он изменяет количество попаданий только для строки с id=2
.
Очевидно, проблема связана с "foreach"
и установкой $row[id]
в качестве переменной, но, честно говоря, мне не помешала бы помощь.
Это как-то связано с переменной переменных? Я понятия не имею. Любая помощь приветствуется.
UPDATE table SET col_x = col_x +1 WHERE col_y = 'xyz'
- проблема в том, что это в вашем цикле, зачем вообще его использовать? - person Funk Forty Niner   schedule 04.02.2015$result=mysqli_query($con,$sql);
, когда она должна быть$mysqli
- person Funk Forty Niner   schedule 04.02.2015