我正在创建一个论坛,现在我正在尝试创建一个按钮,在按下时为用户提供一个顶部(如)。
我试图在按下类似链接时启动PHP / MySQL函数或脚本。 但我使用iFrame加载页面,因此我无法使用/page.php?like=1或其他内容。所以我在论坛评论中加载了这个PHP函数。
function foraTopicComments($x)
{
global $con;
$d = $con->query("SELECT * FROM forum_comments WHERE id_topic = '$x' ORDER BY id DESC");
$i = 0;
if(mysqli_num_rows($d) > 0){
while($r = $d->fetch_object()){
$writer = $r->writer;
$ui = $con->query("SELECT * FROM users WHERE username = '$writer'");
$u = $ui->fetch_object();
$date = $r->date;
echo '<div class="row fora">';
echo '<div class="box" type="grey">';
echo '<div class="col-md-2 col-sm-3 col-xs-5" style="padding: 10px; text-align: center;">
<b><u>' . $r->writer . '</u></b><br /><br />
<br />
<p>Posts: ' . $u->posts . '</p>
<p>Tops: ' . $u->respect . '</p>
<a href="&top=1"><i class="fa fa-heart" aria-hidden="true"></i></a>
</div>';
echo '<div class="col-md-10 col-sm-9 col-xs-7" style="min-height: 327px;background-color: white;word-wrap: break-word;padding: 10px;">';
echo '<div class="text fora">' . $r->comment . '</div>';
echo '<div class="text fora signature"> ' . $u->mission . '</div>';
echo '<div class="text fora date">'. $date .'</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
}
}
所以现在点击它时:
<a href="&top=1"><i class="fa fa-heart" aria-hidden="true"></i></a>
我想在我的代码中运行一个更新语句,并将$ writer变量作为唯一标识符。
有人可以帮助我吗?我有点卡住,已经尝试了很多方法..
答案 0 :(得分:0)
我建议使用AJAX和jquery将喜欢的内容发送到您的PHP页面。
你可以在这里阅读AJAX和JQuery
W3School AJAX tutorial¸
W3School JQuery tutorial
但基本上你需要的是一些jquery脚本,一个只用于类似的php脚本,就是这样。
我把一些例子放在这里,但我没有测试过它。
JQuery:
$(document).ready(function(){
$('.like').on('click', function(){
$.ajax({
'url': 'path/to/your/file.php',
'method': 'GET',
'data': {'id': idOfTheComment},
'success': function(){
console.log('success ! ');
},
'error': function(error){
console.log('Error : ' + error)
}
});
});
});
HTML
<div>
<button class='like'></button>
</div>
PHP:
<?php
if(isset($_GET['id']) {
$id = $_GET['id'];
// do your database connection and insert here.
}
希望它有所帮助!
- Nic
答案 1 :(得分:0)
假设您的更新功能是update.php
。单击该链接时,可以使用一些 GET 参数(在您的情况下为$ writer变量)调用update.php。然后,update.php处理页面并重定向到您的页面。您也可以使用同一页面来处理此问题。这种方法对初学者来说很容易,但Ajax更适合用户体验。
链接生成
function foraTopicComments($x)
{
global $con;
$d = $con->query("SELECT * FROM forum_comments WHERE id_topic = '$x' ORDER BY id DESC");
$i = 0;
if (mysqli_num_rows($d) > 0) {
while ($r = $d->fetch_object()) {
$writer = $r->writer;
$ui = $con->query("SELECT * FROM users WHERE username = '$writer'");
$u = $ui->fetch_object();
$date = $r->date;
echo '<div class="row fora">';
echo '<div class="box" type="grey">';
echo '<div class="col-md-2 col-sm-3 col-xs-5" style="padding: 10px; text-align: center;">
<b><u>' . $r->writer . '</u></b><br /><br />
<br />
<p>Posts: ' . $u->posts . '</p>
<p>Tops: ' . $u->respect . '</p>
<a href="&top=1" onclick="./update.php?Writer=' . $r->writer . '"><i class="fa fa-heart" aria-hidden="true"></i></a>
</div>';
echo '<div class="col-md-10 col-sm-9 col-xs-7" style="min-height: 327px;background-color: white;word-wrap: break-word;padding: 10px;">';
echo '<div class="text fora">' . $r->comment . '</div>';
echo '<div class="text fora signature"> ' . $u->mission . '</div>';
echo '<div class="text fora date">' . $date . '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
}
}
<强> update.php 强>
<?php
$writerId = filter_input(INPUT_GET,'Writer');
$returnCode = 0;
if(isset($writerId)){
//Proceed to your update function
//Assign a new returnCode
}
//We redirect to your main page
header("Location : path/to/your/previous/page/page.php?Code=$returnCode");