在链接点击

时间:2016-09-05 16:43:27

标签: php

我正在创建一个论坛,现在我正在尝试创建一个按钮,在按下时为用户提供一个顶部(如)。

我试图在按下类似链接时启动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变量作为唯一标识符。

有人可以帮助我吗?我有点卡住,已经尝试了很多方法..

2 个答案:

答案 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)

没有ajax的方法(我强烈建议使用Ajax)

假设您的更新功能是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");