7

是否可以创建一个HREF调用 PHP 函数并传递变量的链接?

<?php
function sample(){
    foreach ($json_output->object ){
        $name = "{$object->title}";
        $id = "{$object->id}";

        print "<a href='search($id)' >$name</a>";
    }
}

function search($id){
    //run a search via the id provide by the clicking of that particular name link
}
?>
4

8 回答 8

13

您无需使用框架即可轻松完成此操作。默认情况下,a 之后的任何内容?在 URL 中是一个 GET 变量。

例如,www.google.com/search.html?term=blah

将访问 www.google.com/search.html,并传递带有值“blah”的 GET 变量“term”。

多个变量可以用 & 分隔

例如,www.google.com/search.html?term=blah&term2=cool

GET 方法独立于 PHP,是 HTTP 规范的一部分。

PHP 通过自动创建超全局变量 $_GET[] 轻松处理 GET 请求,其中每个数组索引是一个 GET 变量名,数组索引的值是变量的值。

下面是一些演示代码来展示它是如何工作的:

<?php
    //check if the get variable exists
    if (isset($_GET['search']))
    {
        search($_GET['search']);
    }

    function Search($res)
    {
        //real search code goes here
        echo $res;
    }


?>

<a href="?search=15">Search</a>

这将打印出 15 因为它是 search 的值,而我的搜索虚拟函数只会打印出它得到的任何结果

于 2013-07-09T05:11:54.120 回答
3

HTML 输出需要看起来像

<a href="php_file.php?id=1">anchor text</a>

您的函数将需要以该格式输出此信息。

于 2013-07-09T05:01:53.713 回答
2

不,你不能直接这样做。您只能链接到 URL。

在这种情况下,您可以在查询字符串中传递函数名和参数,然后在 PHP 中进行处理,如下所示:

  print "<a href='yourphpscript.php?fn=search&id=$id' >$name</a>";

并且,在 PHP 代码中:

  if ($_GET['fn'] == "search")
     if (!empty($_GET['id']))
            search($id);

确保清理 GET 参数。

于 2013-07-09T05:03:27.470 回答
1

是的,你可以做到。例子:

从你的角度来看:

    <p><a href="test/1" class="btn blue">Edit</a>

其中 1 是您要发送的参数。它也可以是从对象中获取的数据。

从您的控制器:

function test($id){
  #code...
}
于 2014-02-13T15:04:42.840 回答
1

不,至少不是直接的。

  1. 您可以链接到一个 URL
  2. <a href="myProgram.php?foo=bar">您可以在该 URL ( )的查询字符串中包含数据
  3. 该 URL 可以由 PHP 程序处理
  4. 那个 PHP 程序可以调用一个函数作为它唯一做的事情
  5. 您可以将数据从$_GET['foo']该函数传递
于 2013-07-09T04:59:33.077 回答
0

在链接中使用值设置查询字符串并使用或href访问它$_GET$_REQUEST

<?php
    if ( isset($_REQUEST['search']) ) {
        search( $_REQUEST['search'] );
    }

    function Search($res) {
        // search here
    }

    echo "<a href='?search='" . $id . "'>" . $name . "</a>";
?>
于 2013-07-09T06:01:23.043 回答
0

只需这样做

<?php
function sample(){
    foreach ($json_output->object ){
        $name = "{$object->title}";
        $id = "{$object->id}";

        print "<a href='?search=" . $id . "' > " . $name . "</a>";
    }
}

if (isset($_REQUEST['search'])) {
    search($_REQUEST['search']);
}

function search($id){
    //run a search via the id provide by the clicking of that particular name link
}
?>

还要确保您$json_output可以使用 issample()功能访问。
你可以做任何一种方式

<?php
function sample(){
    global $json_output;
    // rest of the code
}
?>

或者

<?php
function sample($json_output){
    // rest of the code
} 
?>
于 2013-07-09T05:46:26.070 回答
-1

是的,这是可能的,但是您需要一个 MVC 类型结构,并且.htaccessURL 重写也打开了。

下面是一些阅读材料,可帮助您开始了解 MVC 的全部内容。

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

如果你想选择一个甜蜜的框架,而不是重新发明 MVC 轮子,我强烈建议,LARAVEL 4

于 2013-07-09T05:01:08.040 回答