Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建下拉列表PHP数据库搜索?_Php_Mysql_Phpmyadmin_Full Text Search - Fatal编程技术网

创建下拉列表PHP数据库搜索?

创建下拉列表PHP数据库搜索?,php,mysql,phpmyadmin,full-text-search,Php,Mysql,Phpmyadmin,Full Text Search,所以我尝试创建一个下拉列表搜索,用PHP和sql搜索我的数据库。到目前为止,我已经能够创建一个简单的文本搜索,当我在搜索框中键入它们时,它会返回所需的结果。但是我希望能够从下拉列表中选择一个选项,而不是键入它。我还没有找到解决这个问题的方法,如果有任何帮助,我将不胜感激 这是我的search.php代码 <?php mysql_connect ("localhost", "root","") or die (mysql_error()); mysql_select_db ("schoo

所以我尝试创建一个下拉列表搜索,用PHP和sql搜索我的数据库。到目前为止,我已经能够创建一个简单的文本搜索,当我在搜索框中键入它们时,它会返回所需的结果。但是我希望能够从下拉列表中选择一个选项,而不是键入它。我还没有找到解决这个问题的方法,如果有任何帮助,我将不胜感激

这是我的search.php代码

<?php

mysql_connect ("localhost", "root","")  or die (mysql_error());
mysql_select_db ("schoolsni");


$term = $_POST['term'];

$sql = mysql_query("SELECT * FROM  product WHERE  model LIKE '%$term%'");

while ($row = mysql_fetch_array($sql)){
    echo 'Product ID '.$row['product_id'];
    echo '<br/> Model: '.$row['model'];
    echo '<br/> quantity: '.$row['quantity'];
    echo '<br/><br/>';
    }

?>

这是一个快速代码,可能不是100%正确,我也遗漏了一些事情,比如检查你的连接是否成功。php.net提供了大量关于这方面的信息和示例


编辑:从disticnt数据库值添加自填充选项列表。

您可以使用表格本身填充选择框:

$sql = mysql_query('SELECT model FROM  product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
    $models[] = $row;
}
?>
<form action="search.php" method="post">
  <select name="term">
  <?php
  foreach ($models as $model) {
  ?>
    <option value="<?php echo $model['model']?>"><?php echo $model['model']?></option>
  <?php
  }
  ?>
  </select>
  <input type="submit" name="submit" value="Submit" />
</form>
事实上,您可能会使用此选项来构建一个选择框,其中包含完整的模型名和部分模型名:

$sql = mysql_query('SELECT model FROM  product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
    $modelParts = explode(' ', $row['model']);
    $models[$modelParts[0]][] = $row['model'];
}

// Equivalent to ending up with something like:
// $models['product'] = array('product 1', 'product 2');
然后你可以循环浏览它们并列出如下列表:

  <select name="term">
  <?php foreach ($models as $modelRoot => $modelEntries) { ?>
    <option value="<?php echo $modelRoot?>"><?php echo $modelRoot?></option>
    <?php foreach ($modelEntries as $model) { ?>
      <option value="<?php echo $model['model']?>"><?php echo $model['model']?></option>
    <?php } ?>
  <?php } ?>
  </select>


您的代码可用于SQL注入。任何人都可以操纵您的数据库,很可能甚至删除您的所有数据。它在本地端。。。现在不在线!否则它将被密码保护!不过,在任何查询中使用用户输入的数据之前,您应该先将其转义,不要单独依赖密码保护。。。正在阅读sql注入。。。但我的问题有什么帮助吗?什么不起作用?如果您在mysqlOk中从product WHERE模型(如“%product1%”)中选择*会发生什么情况,这实际上是一个不错的添加数据,但在填充选择框之后,是否仍然存在我可以运行搜索的位置?例如,假设有许多产品名为“产品2”和“产品3”,在选择框中我只选择了“产品”。单击“搜索”时,我希望能够返回这两个结果。我可以做一个输入框,但更喜欢选择框纯。谢谢你的耐心。你的问题是,你的产品中有一组有效的公共子字符串,那么?例如,您可能已经有了产品类别或产品类型。您可以使用该信息而不是产品名称。否则,您可以获取所有产品名称,按字母顺序排列,然后构建第一部分的列表。我会在上面的答案中解释我的意思。是的,我理解你的意思。。。我会尝试一下,然后再给你回复!谢谢您可以
选择DISTINCT products.name FROM products
来填充列表,该列表将创建一个匹配但不会重复的产品名称列表,并将其添加到上面的代码示例中:D
$sql = mysql_query('SELECT model FROM  product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
    /*
     * Break the model name up into parts, assuming each part
     * is separated by a space. Then just use the first part
     * to build up an array of common model starts.
     * 
     * Because we're using the sub-part as a key, we'll only 
     * get a single instance of each one.
     */

    $modelParts = explode(' ', $row['model']);

    // e.g. $models['product'] = 'product'

    $models[$modelParts[0]] = $modelParts[0];
}
$sql = mysql_query('SELECT model FROM  product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
    $modelParts = explode(' ', $row['model']);
    $models[$modelParts[0]][] = $row['model'];
}

// Equivalent to ending up with something like:
// $models['product'] = array('product 1', 'product 2');
  <select name="term">
  <?php foreach ($models as $modelRoot => $modelEntries) { ?>
    <option value="<?php echo $modelRoot?>"><?php echo $modelRoot?></option>
    <?php foreach ($modelEntries as $model) { ?>
      <option value="<?php echo $model['model']?>"><?php echo $model['model']?></option>
    <?php } ?>
  <?php } ?>
  </select>
<?php

mysql_connect ("localhost", "root","")  or die (mysql_error());
mysql_select_db ("schoolsni");


$term = $_POST['term'];

$sql = mysql_query("SELECT * FROM  product WHERE  model LIKE '%$term%'");
?>
<select name='term'>
<?php
while ($row = mysql_fetch_array($sql)){
?>
  <option value='<?php echo $row['product_id']?>'><?php echo $row['model'];?></option>
<?php

}
?>
</select>