我是比较新的PHP/MySQL组合。我已经看过这个问题很多次,但找不到能帮助我的答案。 我有这样一个表:使用php的多个条件搜索
"CREATE TABLE sample_table (
id_sample smallint(6) NOT NULL auto_increment,
sample1 varchar(20) NOT NULL,
sample2 varchar(20) default NULL,
sample3 varchar(20) default NULL,
sample4 enum('x1','x2','x3') NOT NULL default 'x1',
..
..
samplexx varchar(20) default NULL,
sample_last varchar(20) default NULL,
PRIMARY KEY (`id_sample`)
);"
有没有一个登记表,用户填写所有必填字段。现在我需要做一个“用户搜索”表单,管理员可以通过一个或多个字段搜索用户。
<form id="sample" name="sample" action="sample.php" method="post">
<p> Sample1: </p><input type="text" name="sample_f1" id="sample_f1"/>
<p> Sample2: </p><input type="text" name="sample_f2" id="sample_f2"/>
..
..
<p> Samplexx: </p><input type="text" id="sample_fxx" name="sample_fxx"/>
<input id="search" name="search" type="submit" value="Search">
</form>
我不知道如果我用正确的方法解决这个问题,但这里是我开始了我的PHP:
include_once('common.php');
$dbLink=dbConnect();
if (isset($_POST['sample']))
{
$v[0] = $_POST['sample_f1'];
$v[1] = $_POST['sample_f2'];
..
..
$v[xx] = $_POST['sample_fxx'];
$temp = "";
$temp2 = "";
$counter = 0;
for ($i=0;$i<xx;$i++)
{
if($v[$i] == "" || $v[$i] == "NULL")
{
switch ($i)
{
case "0":
$temp = $temp ."sample1,";
break;
case "1":
$temp = $temp ."sample2,";
break;
..
..
case "xx":
$temp = $temp ."samplexx,";
break;
}
}
else
{
$counter++;
switch ($i)
{
case "0":
$temp2 = $temp2 ."sample1='" .$v[$i] ."'*";
break;
case "1":
$temp2 = $temp2 ."sample2='" .$v[$i] ."'*";
break;
..
..
case "xx":
$temp2 = $temp2 ."samplexx='" .$v[$i] ."'*";
break;
}
}
}
$pieces = explode("*", $temp2);
$some_var = $pieces[0];
if($counter>1)
{
for ($i=1;$i<$counter;$i++)
{
$some_var = $some_var . " AND " .$pieces[$i] ;
}
}
$query = "SELECT " .$temp ."sample_last FROM sample_table WHERE " .$some_var .";";
$result = mysql_query($query, $dbLink);
$result_count = mysql_num_rows($result);
所以我的基本想法是,从所有字段保存值到一个数组中,然后检查哪些字段是空的。空场是我正在寻找和其他人是我的标准。我现在的问题是,我不知道从数据库中得到多少字段/值,也不知道那些字段是什么。现在,对于'多少',我可以使用一个计数器并将所有数据放入一个矩阵中,而不是找出将每个数据放到“显示数据div”上的正确位置的方式。
所以我的问题是:
能“多个标准搜索”来完成这样? 或 你如何做'多标准搜索'?
任何想法,个人经验和/或示例(不一定是实际的程序代码)都是值得欢迎的。
问候, Coding_for_fun
我看你不太明白我问了这么这里的一些解释(因为我这里是新的用户不能张贴图片)。假设我有七个领域可供我进行搜索。如果我尝试搜索db中具有字段sample1 = some_value并且字段sample7 = some_value2的所有记录。我的查询将比是:
SELECT sample2,sample3,sample4,sample5,sample6,sample_last FROM sample_table WHERE sample1='some_value' AND sample7='some_value2';
我可以只使用
SELECT * FROM sample_table WHERE sample1='some_value' AND sample7='some_value2';
但后来我问有更多的数据比我的实际需要。我希望这里澄清一下这个问题。
所以再次,我只是在处理像这样的高级搜索时询问您的想法/个人经验。它不一定是实际的程序代码。
让我们看看我是否得到它:例如,如果用户填充一个或多个字段,则您有4个字段,您希望从数据库填充其余字段。是对的吗? –
不完全。我需要从数据库中提取符合条件的所有记录并显示它们,同时保持“搜索表单”可供用户用新条件进行搜索。 – user3286006
什么是您的最终查询添加它在这里给更多的清晰度 – Sundar