だから私は若いいとこのためにピアノ図書館のウェブサイトを作っています。
現在、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"
and を変数として設定することに関係して$row[id]
いますが、正直なところ、助けが必要です。
変数の変数と関係がありますか?私は見当もつかない。どんな助けでも大歓迎です。