我有一个产品的mysql表,其中添加了超过6个服务(列)。
您可以将这些列视为service1, service2, service3, service4, service5, service6
现在我在页面上显示数据表。要相应地过滤该表,我使用的表单包括每个服务的复选框。
每个复选框都有一个value = "Yes"
现在,当我选择服务并按下提交按钮时,它将刷新页面并传递查询参数,如此
page.php?service1=Yes&service2=Yes&service3=&service4=&service5=Yes&service6=
这里的服务是空白的,这意味着我没有从表单中选择,所以他们在这里空白。如果我选择它们,那么就会有值。
我想选择服务具有“是”值的表行。并忽略那些没有价值的价值。
怎么办?
答案 0 :(得分:1)
我正在写一个答案,但请在下次询问之前尝试做一些努力:
<强> HTML:强>
<form name="form" method="get" action="">
Service 1: <input type="checkbox" name="service1"/><br/>
Service 2: <input type="checkbox" name="service2"/><br/>
Service 3: <input type="checkbox" name="service3"/><br/>
Service 4: <input type="checkbox" name="service4"/><br/>
Service 5: <input type="checkbox" name="service5"/><br/>
Service 6: <input type="checkbox" name="service6"/><br/><br/>
<input type="submit" value="Search" name="submit"/>
</form>
PHP:
if(isset($_GET['submit'])) { // If the form is submitted
$services = array(); // Define an empty array
for($i = 1; $i<=6; $i++) {
if($_GET["service$i"]) { // If Service(x) checkbox is checked
$services[] = "service$i = 'Yes'"; // Add to array
}
}
if(count($services) > 0) {
print_r($services); // Here are all choosed services
$selectQuery = "SELECT * FROM products WHERE " . implode(' AND ', $services) . ";";
// Take a look what implode function does: http://php.net/manual/en/function.implode.php
echo $selectQuery; // Now fetch the result using this query
} else {
// There is not any service checked. Maybe you can just get all the information from the table in this case.
}
}
答案 1 :(得分:0)
您的意思是检查您是否要检查某些字段是否为空白,有些字段为“是”?
如果是这样的话: -
<?php
$RequiredVars = array('service1'=>'Yes','service2'=>'Yes','service3'=>'Yes','service4'=>'Yes','service5'=>'Yes','service6'=>'Yes');
$Clause = array();
foreach($_REQUEST AS $Field=>$Value)
{
if (array_key_exists($Field, $RequiredVars))
{
$Clause[] = " $Field = '".mysql_real_escape_string($Value)."' ";
}
}
$sql = "SELECT * FROM SomeTable ";
if (count($Clause) > 0)
{
$sql .= "WHERE ".implode(' AND ', $Clause);
}
?>