【问题标题】:Save data by MySQL after click a link to an external web单击指向外部 Web 的链接后由 MySQL 保存数据
【发布时间】:2015-04-13 04:38:58
【问题描述】:

我想在我的页面上的横幅上放置一个点击计数器,以便广告客户了解有多少访问者通过我的网站到达。

我已经看到可以通过将链接定向到使用 PHP 访问 MySQL(以将数据保存在记录 BD 中)的中间页面来完成,然后重定向到广告商的网站,但我想知道是否还有其他方面这样做更“优雅”。

谁能告诉我这是否可能?

我找到了一个类似的例子,但是这个例子是下载一个文件并计算访问次数(我只想去另一个网站)

示例 HTML

<span style="font-family: Verdana, Arial, Helvetica, sans-serif;"><a href='files/my_file.zip' id='25' onClick='dc(this.id)' target='_blank'>Download this file</a> </span>

示例 Javascript

function dc(id){$.post("process.php",{file_id:id})}

示例流程.php

$file_id = $_POST['file_id'];

mysql_query("UPDATE file SET downloads = downloads + 1 WHERE id = " .$file_id);

我尝试将此示例改编为我的代码,如下所示:

HTML

echo '<br><a onClick="sumar(this.id);" href="http://'.$result['WEB'].'" id="'.$result['ID_PAG'].'" target="_blank">'.$result['WEB'].'</a><br />';

Javascript(在头部)

function sumar(id){($.post("suma.php",{pag:id})}

Suma.php

$pag=$_POST['pag'];
$mysqli->query("UPDATE lapag SET visitas=visitas+1 WHERE id_pag=".$pag);

谢谢!

【问题讨论】:

  • 我认为你的方法应该行得通——这个解决方案的问题在哪里?
  • 它不起作用。转到网页,但是 sumar.php 没有执行 :(
  • 你的 javasvript 函数调用 suma.php 而不是 sumar.php
  • 哦!对不起,这是文本的php文件名错误,但在我的真实文件中是正确的。现在已更正。
  • @ekans 我相信积累的经验表明,信息的不断传播可能会导致我们考虑重组所需的费率。否则,您可以使用 PDO 来执行此查询。我更喜欢使用 Zend PHP 等框架。你怎么看?

标签: javascript php html mysql hyperlink


【解决方案1】:

你确定你的撇号是对的吗?我将 c/p html 部分放入 eclipse 中,它并不特别喜欢它。

echo "<br><a onClick='sumar(this.id)'";
echo "href='http://".$result['WEB'] . "'";
echo "id=". $result['ID_PAG'] . 'target="_blank">';
echo $result['WEB']. "</a><br />";

我已经把它分解成几个回声,以使它更清晰和更容易处理。

【讨论】:

  • 嗨!我认为引号是正确的,因为当我在 Firebug 上观看代码时,我读到 unaweb.es" onclick="sumar(this.id);"> www.unaweb.es 函数里面加“this.id”正常吗?不应该是数字或者对象名?
【解决方案2】:

HTML

<a href="sumar.php?web=<?php echo $result['WEB'];?>&id=<?php echo $result['ID_PAG'];?> target="_blank"><?php echo $result['WEB']; ?></a>

Sumar.php

$pag=$_GET['ID_PAG'];
$mysqli->query("UPDATE lapag SET visitas=visitas+1 WHERE id_pag=".$pag);
header("Location: http://".$_GET['WEB']); // redirect
exit();

【讨论】:

  • 谢谢 NIsam,该解决方案有效,但我想避免从 php 文件重定向。无论如何,如果有人解决了我的疑问,我将使用此代码。再次感谢!
【解决方案3】:

认为最佳实践应如下所示:

<a href="http://random.org" onclick='called(event, this,  "clicked")'>Visit site</a>


function called(event, link, id){
    event.preventDefault();
    event.stopImmediatePropagation();
    var theUrl = "counter.php";
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange=function(){
        if (this.readyState != 4)       //4 means call is finished - we just want to switch side after the counter-call finished
            return;
        window.location.href = link.href.value;
    };
    xmlHttp.open("GET", theUrl, true);
    xmlHttp.send("id="+id);
    return false;
}

示例:http://jsbin.com/porotobuna/1/edit?html,js,output

在 counter.php 中只需获取 get 变量“id”(代表点击的链接)并处理计数器(我推荐某种数据库)

【讨论】:

  • 你好,Verim。我看到了你的代码,但我不知道它是如何工作的。我将不得不询问 counter.php 中的 GET 变量,不是吗?为什么 this.readyState 必须不同于 4?抱歉,我不习惯对 javascript 进行编码。
猜你喜欢
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
相关资源
最近更新 更多