0

我有以下报价:

<form class="searchform" name="search" id="search" action="<?php echo base_url();?>video/search" method="get" >
                <input type="text" name="search_key" onblur="if (this.value == '') {this.value = 'Search video';}" onfocus="if (this.value == 'Search video') {this.value = '';}" value="<?php if(isset($search_key))echo $search_key;else echo 'Search video';?>" class="searchfield" onKeyPress="return submitenter(this,event)">
        </form>

搜索后的页面 url 如下所示 - 例如:

mypage.com/video/search?search_key=blabla

我用来展示它的代码是:

<?php echo $_GET["search_key"]; ?>

但它不起作用,我不明白为什么。

我无法让 -blabla- 出现在页面中。

4

4 回答 4

0

要从查询字符串中获取值,您必须将查询字符串设置为 true。

转到 1) application/config/config.php 2) 设置查询字符串选项 true

前任。$config['enable_query_strings'] = true;

比你能得到 $_GET["search_key"]

其他明智的发送值

mypage.com/video/search/blabla

您将在 cideo 控制器的搜索功能的第一个参数中获得“blabla”。

于 2013-04-27T03:20:05.690 回答
0

actionform标签中,应该是一个类似的PHP文件myphp.php,然后您可以使用$_GET[[“search_key']; atmyphp.php`来获取它。例如

action="<?php echo base_url();?>video/search/myphp.php"

那么 URL 应该像mypage.com/video/search/myphp.php?search_key=blabla

于 2013-04-27T03:43:20.380 回答
0

看看$_GET超级全局中是否有任何值,使用var_dump($_GET)它会将对象的不太漂亮的字符串转储到屏幕上。

也可以试试$_REQUESTand$GLOBALS变量,看看它们是否有任何值,方法和上面一样。

如果这些不显示您的值,您可能需要强制设置enctypeForm 以便 PHP 知道它可以将查询字符串(从后面的文本?)或 POST 数据放入超级全局变量中。您将enctype要使用的是application/x-www-form-urlencoded默认,但以防万一,请设置它。

设置好后,您的表单将如下所示

<form class="searchform" name="search" id="search" action="<?php echo base_url();?>video/search" method="get" enctype="application/x-www-form-urlencoded">
    <input type="text" name="search_key" onblur="if (this.value == '') {this.value = 'Search video';}" onfocus="if (this.value == 'Search video') {this.value = '';}" value="<?php if(isset($search_key))echo $search_key;else echo 'Search video';?>" class="searchfield" onKeyPress="return submitenter(this,event)" />
</form>

超级全球人

另外,以防万一您错过了它,您的input标签/在关闭之前需要一个>/>否则它不是有效的标记。

于 2013-04-27T02:59:45.363 回答
0

如果显示 URL /search?search_key=blabla,请尝试使用$_POST和 catch with print_r($_POST),因为 CI 上的默认表单方法是使用 post。

于 2013-04-27T02:59:45.393 回答