Php 对mysql数据库中的数据进行排序
好的,显然我的第一个解释不清楚。。。我不确定该说什么。为了简化,我需要做什么才能使用下面的表单成功地搜索我拥有的mysql数据库?我想让用户从下拉菜单中的三个选项中进行选择,然后键入文本进行搜索,并获得与该类别匹配的结果 html文件:Php 对mysql数据库中的数据进行排序,php,mysql,Php,Mysql,好的,显然我的第一个解释不清楚。。。我不确定该说什么。为了简化,我需要做什么才能使用下面的表单成功地搜索我拥有的mysql数据库?我想让用户从下拉菜单中的三个选项中进行选择,然后键入文本进行搜索,并获得与该类别匹配的结果 html文件: <html> <body> <h2>Database Search</h2> <form action="retrieve_data.php" method="POST"&g
<html>
<body>
<h2>Database Search</h2>
<form action="retrieve_data.php" method="POST">
<input type='hidden' name='submitted'>
Search for your information:
<select name="field" id="field">
<option value="id">id</option>
<option value="name">name</option>
<option value="username">username</option>
</select>
Search item:<input type="text" name='cond' size='20'><br><br>
<input type="submit">
</form>
</body>
</html>
数据库搜索
搜索您的信息:
身份证件
名称
用户名
搜索项目:
我目前使用的php代码使用复选框进行搜索,我不希望:
<?php
extract($_REQUEST);
$fields = 0;
$query = "select ";
$th = "";
for( $i = 0; $i < count($chk); $i++ ) {
if( $chk[$i] ) {
$query .= $chk[$i].',';
$th .= "<th>".$chk[$i]."</th>";
$fields++;
}
}
$query = rtrim($query,',');
$query .= "user";
if(!empty($cond)) {
$query .= " where ".$cond;
}
$query .= " name ".$sorted;
$query .= " ".$name;
@ $db = new mysqli('localhost','root','','userData');
if (mysqli_connect_errno()) {
echo "Can't connect to Server. Errorcode: ", mysqli_connect_error();
exit;
}
else {
echo "Connected successfully<br />";
}
$result = $db->query(stripslashes($query));
$numrecs = $result->num_rows;
echo "Your results: <br />";
echo "<b>".$query."</b><br />";
echo "<table border='2'>";
echo $th;
for ($i = 0; $i < $numrecs; $i++ ) {
$row = $result->fetch_array();
echo "<tr>";
for($f = 0; $f < $fields; $f++ ) {
echo '<td>'.$row[$f].'</td>';
}
echo '</tr>';
}
echo "</table>";
?>
查找条目、对它们进行排序并按类别进行选择是MySQL适合的任务 因此,您需要的是一个查询,它使用:
- A在分类表上
- A查找“类似”用户输入的内容
- 还有一种方法来分类它们
- 此外,您可能需要对项目进行排序(取决于您希望如何排序)
getSortedResult()
),它将用户发布的值作为参数,并返回按某种顺序排序的结果对象。决定传递参数的格式。也就是说,您可以在“选择”类别中选择多个值。然后让我们将数组作为参数
现在,您只需要准备category参数并调用getSortedResult()
。打印发布的VAL,看看你得到了什么
$postedCategory = $_POST['field']; //dropdown's posted values
print_r($postedCategory);
//you may just need to pass this param.
getSortedResult($postedCategory, $_POST['cond']);
现在,在getSortedResult函数中-
function getSortedResult($categories, $cond)
{
$db = new mysqli('localhost','root','','userData');
if (mysqli_connect_errno()) {
echo "Can't connect to Server. Errorcode: ", mysqli_connect_error();
exit;
}
else
{
//Assuming that you have some category field in the same table. If category is a separate table, you will need to do a join, refer Lukas Knuth's answer.
$query = "select * from table where category in (".implode(",",$categories)." and somefield = '".$cond."' order by <field you want>";
return $result = $db->query(stripslashes($query));
}
}
函数getSortedResult($categories,$cond)
{
$db=newmysqli('localhost','root','userData');
if(mysqli\u connect\u errno()){
echo“无法连接到服务器。错误代码:”,mysqli_connect_error();
出口
}
其他的
{
//假设在同一个表中有一些category字段。如果category是一个单独的表,则需要进行连接,请参考Lukas Knuth的答案。
$query=“从表中选择*,其中category位于(“.infrade”(“,”,$categories)。”和somefield='”“$cond.”“order by”;
返回$result=$db->query(条带斜杠($query));
}
}
最后,在显示逻辑中,在结果对象上循环并准备表格-
?>
Your results: <br />
<table border="2">
<?php foreach($results as $each) : ?>
//
// row preparation
<?php endforeach; ?>
</table>
?>
您的结果:
//
//行准备
那么,您基本上有两个问题?1.我需要创建什么来让程序搜索用户键入的单词(并在正确的类别中搜索)?2.另外,我希望我的新结果仍然返回到这个表中,所以我可以保留我所做的任何表代码工作吗?我说的对吗?你在mysql查询部分需要帮助吗?还有,你所说的“表代码”到底是什么意思?是的,这是我的两个问题。我(最后!)我把mysql部分搞定了。表代码指的是我所有的and等等。假设你已经修复了mysql查询部分,那么现在和以前mysql查询的结果有什么区别?我猜你仍然得到相同的结果对象,其中包含多条记录,每个记录都包含一些字段。哦,等等。你是说要改变我的查询方式吗想要检索我的数据,我需要改变mysql查询的现状吗?在这种情况下,不,我没有改变它/不知道我必须改变。我会从头开始,但我不确定如何再次达到现在的状态…@rwqq如果你的PHP代码有问题,请发到这里。如果你的mysql表有问题,请cture-在此处发布。如果您在SQL查询方面有问题,请在此处发布。当前您的帖子只有HTML代码,这本身就很好。嗯……当我运行此操作时,会出现以下两个错误……您知道我做错了什么吗?警告:inpode()[function.inpode]:传递的参数无效
和警告:为foreach()提供的参数无效
因此您只提交单个值作为字段
下拉列表的值。在这种情况下,它不是数组。请验证$\u POST['field']的值。向mysql查询添加一个条件,如果(is_array($categories))$whereCond=“In”“。内爆(,”,$categories);else$wherecond=“=”$categories;
好的,严肃的最后一个问题…哈哈(顺便说一下,非常感谢你的帮助!)这到底应该放在哪里?我放在哪里仍然不起作用。你有我可以联系你的直接电子邮件吗?我有兴趣得到你对另一个项目的帮助(为了钱)如果你感兴趣…@rwqq,回复你的邮件。你说的“这到底应该去哪里?”是指我说的if-else条件吗?它应该放在getSortedResult()函数中。