2011-12-28 34 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>'; 
}