2011-12-28 48 views
3

只需单击链接即可触发PHP函数吗?还是应该坚持使用表单提交方法?如果点击链接将工作,链接应该指向哪里?通过单击HTML链接触发PHP函数

这里是一个示例代码:

<?php 
    session_start(); 
    function listMe($username){ 
     $username = mysql_real_escape_string($username); 
     $query = mysql_query("INSERT INTO List (Usernames) VALUES ('$username')") or die(mysql_error()); 
    } 
?> 

<html> 
    <head> 
     <title>SAMPLE</title> 
    </head> 
    <body> 
     <a href="**__???___**">Add my username to the list</a> 
     <?php 
      listMe($_SESSION['Username']); 
     ?> 
    </body> 
</html> 

也许有人可以点我在正确的方向。谢谢!

回答

6

您可以通过在加载整个页面的方式再次做到这一点表单提交的使用,或者通过将特定页面内容直接加载到页面中而不需要逐页进行。第二种方法称为“AJAX”(Asynchoronous Javascript和XML)。这里有两个例子,每个例子都有指定。

提交表单的方式

form.php的

<?php 
function get_users(){ 
} 
if(isset($_GET['get_users'])) 
{ 
    get_users(); 
} 
?> 
... 
<form method="get"> 
    <input type="hidden" name="get_users"> 
    <input type="submit"> 
</form> 

AJAX方法

ajax_file.php

<?php 
function call_me(){ 
    // your php code 
} 
call_me(); 
?> 

form.html

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() 
    { 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     { 
      // do something if the page loaded successfully 
     } 
    } 
    xmlhttp.open("GET","ajax_file.php",true); 
    xmlhttp.send(); 
} 
</script> 
</head> 
<body> 
<a href="#" onclick="loadXMLDoc()">click to call function</a> 
</body> 
</html> 
+0

我调整你的代码,我会反馈一次就可以了。顺便说一句我想我可以使用你的代码的其他情况..谢谢! – 2011-12-29 00:25:06

+0

没问题。我忽略了一些我认为可以自己填写的小片段,并且为了防止自己为你编写整个申请。 – 2011-12-29 01:48:06

2

HTML

<a href="?list_me">list me</a> 

PHP

<?php 
if (isset($_GET['list_me'])) listMe(); 
1

要触发链接点击使用PHP函数,我知道将追加设置了一个param在链接的URL,然后监听的唯一途径这

<a href="?function">Add my username to the list</a> 

然后检查链接

if (isset($_GET['function'])){ 
     runFunction(); 
} 

这是因为PHP是一个服务器端的技术,如果你想火的东西,而无需刷新,你需要看的东西如JavaScript

4

的页面,您可以将它作为链接的查询参数。 http://example.com/?command=listMe&username=tom 但是大家这样就可以通过加载该URL

<a href="http://example.com/?command=listMe&">List me</a> 

,并在运行该函数的PHP

<?php 
if(isset($_GET['list_me']) && isset($_SESSION['Username'])){ 
    listMe($_SESSION['Username']); 
} 
?> 
0

我发现了一个插件的代码,他们有用户在foreach看看触发动作:

$actions = unset($meta[$key]); 
foreach ($actions as $action => $value) { 
    echo '<li><a href="' . esc_url($value['url']) . '" class="my-action-' . $action . '">' . '<i class="fa fa-times"></i></a></li>'; 
}