-1

我有一个产品的 mysql 表,上面添加了 6 个以上的服务(列)。

您可以考虑的那些列service1, service2, service3, service4, service5, service6

现在我在页面上显示数据表。为了相应地过滤该表服务,我使用了一个表格,其中包括每个服务的复选框。

每个复选框都有一个value = "Yes"

现在,当我选择服务并按下提交按钮时,它将通过传递查询参数刷新页面,如下所示

page.php?service1=Yes&service2=Yes&service3=&service4=&service5=Yes&service6=

在这里,这些服务是空白的,这意味着我没有从表格中选择,所以它们在这里是空白的。如果我选择它们,它将获得 Yes 值。

我想选择服务具有“是”值的表行。并忽略那些没有值的值。

怎么做?

4

2 回答 2

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.
    }
}
于 2013-05-30T08:40:59.667 回答
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);
}

?>
于 2013-05-30T08:44:30.373 回答