【问题标题】:How to create <form> for search with assoc array如何使用 assoc 数组创建 <form> 进行搜索
【发布时间】:2013-02-01 08:31:13
【问题描述】:

你好,你能帮我写一个我遇到问题的脚本吗?\ 我想从不同的列和价格范围创建一个搜索脚本:所以 search.php 是这样的:

<?php
/* connect to the database*/
$db = new mysqli("localhost", "root", "", "movie");
/* check connection */
if ($db->connect_errno) {
    echo "Connection failed: " . $db->connect_error;
    exit();
}
$query="SELECT * FROM `filmi` 
         WHERE (`nomer` rlike '%$search%' OR 
                `rezume` rlike '%$search%' OR 
                `kategoriq` rlike '%$search%') AND 
                `seriq` BETWEEN '%$pricemin%' AND '$pricemax'  
         ORDER BY seriq ASC";
/* create a prepared statement */
if ($stmt = $db->prepare($query)) {
    /* bind parameters for markers */
    $stmt->bind_param("sssdd", $search, $search, $search, $pricemin, $pricemax);
    /* execute query */
    $stmt->execute();
    /* get result */
    $result = $stmt->get_result();
    if ($result) {
    /* now you can fetch the results into an assoc array */
        while ($row = $result->fetch_assoc()) {
            echo $row['nomer']. ", " .$row['rezume']. ", " .$row['kategoriq']. ", " .$row['seriq']. "<br>";
        }
    }
    /* close statement */
    $stmt->close();
}
/* close db connection */
$db->close();

?> 

&lt;form method=?&gt;”表单应该填写 $search 和 $pricemin / $pricemax 字段吗?

【问题讨论】:

  • 嘿,你想在表单的文本框中填写 $_REQUEST 值吗?
  • 我想填充它,但现在当我没有为 $search 输入任何文本时,只输入 $pricemin / $pricemax 它没有显示任何结果:(你能帮我吗?
  • 我很乐意为您提供帮助。但是,我无法理解你的问题。能否请您详细说明。
  • 好吧,我的问题是,当我按关键字和价格搜索时,我会看到结果,但是当我只按没有关键字的价格查找时,我没有得到任何结果。当我没有为 $search 输入任何关键字来显示表格中的所有内容时,我该怎么做

标签: php mysql arrays search


【解决方案1】:

您可以在&lt;form&gt; 标签中使用GETPOST 方法

在您的 PHP 脚本中,您可以使用$form_var_name = $_REQUEST['form_var_name'] 来访问由表单发送的数据。具体如下

$search = $_REQUEST['search']; 
$pricemin = $_REQUEST['pricemin'];
$pricemax = $_REQUEST['pricemax'];

【讨论】:

  • 嗯我试了一下,但它仍然没有显示任何结果 :( 我这样做了:&lt;form action="search.php" method="post" name="FormName" target="_self"&gt; Search: &lt;input type="text" name="search" value="" size="24" border="0"&gt; &lt;p&gt;&lt;input type="submit" name="Submit" value="Search" border="0"&gt; &lt;input type="reset" value="Reset" border="0"&gt;&lt;/p&gt; &lt;/form&gt; 并把 $form_var_name = $_REQUEST['form_var_name'] 放在 $query 之前,但我仍然想知道是这种方式正确放入查询中--> '%$search%'
  • hmm 它的工作,但现在另一个问题;\ 我需要为 $search 和 $pricemax/min 设置值,否则它不会显示我需要填充它们的任何结果:( 它只能与 $search 一起使用吗还是只有 $pricemax $pricemin ?
【解决方案2】:

检查$search 是否存在。意思是,$search 是否有一些价值。

if(isset($search) && $search!=''){
    case 1
}
else{
    case 2
}

案例 1: 如果 $search 中有值,则将其包含在 where 子句中。
下面的查询是解释我的想法的一个例子。

$query="SELECT * FROM `filmi` 
     WHERE (`nomer` rlike '%$search%' OR 
            `rezume` rlike '%$search%' OR 
            `kategoriq` rlike '%$search%') AND 
            `seriq` BETWEEN '%$pricemin%' AND '$pricemax'  
     ORDER BY seriq ASC";

案例 2: 如果 $search 中没有值,则不要将其包含在 where 子句中。
检查下面的查询

$query="SELECT * FROM `filmi` 
     WHERE `seriq` BETWEEN '%$pricemin%' AND '$pricemax'  
     ORDER BY seriq ASC";

【讨论】:

  • 是的,我得出了这个结论,但你能帮我检查一下代码吗?
  • 我已经更新了答案。但是,奇怪的是,在您写了有问题的内容之后,您要求我帮助您进行值检查代码。无论如何,现在结帐答案。
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2016-11-14
  • 2014-08-24
  • 1970-01-01
相关资源
最近更新 更多