在URL中传递多个值

时间:2012-06-22 14:27:00

标签: php mysql

拥有一个包含业务线索列表的数据库。它们都被赋予了New,Hot,Cold等状态。我在页面上有链接只显示New或者只有Hot才能正常工作,但我似乎无法让一个人显示All。默认视图为“新建”。这是我正在与之合作的,请提前感谢您的帮助。

$query = "SELECT * FROM contacts WHERE contactstatus = 'New' ORDER BY date DESC";

if(isset($_GET['contactstatus'])
&& in_array($_GET['contactstatus'], array('New', 'Hot', 'Warm', 'Cold', 'Rejected', 'Closed')))
{      
$status = $_GET['contactstatus'];   
$query = "SELECT * FROM contacts WHERE contactstatus ORDER BY date DESC";  
}

if(isset($_GET['contactstatus'])
&& in_array($_GET['contactstatus'], array('New', 'Hot', 'Warm', 'Cold', 'Rejected', 'Closed')))
{      
$status = $_GET['contactstatus'];   
$query = "SELECT * FROM contacts WHERE contactstatus = '".$status."' ORDER BY date DESC";  
}  

我用来获取所有内容的网址是:

www.mydomain.com/leads.php?contactstatus=New&contactstatus=Hot&contactstatus=Cold&contactstatus=Rejected&contactstatus=Closed

我也试过了:

www.mydomain.com/leads.php?contactstatus=New&Hot&Cold&Rejected&Closed

3 个答案:

答案 0 :(得分:2)

当您尝试通过地址传递相同的变量时,您尝试使用数组,否则您将覆盖get变量。

www.mydomain.com/leads.php?contactstatus[]=New&contactstatus[]=Hot&contactstatus[]=Cold&contactstatus[]=Rejected&contactstatus[]=Closed

一样
$status_types = Array('New', 'Hot', 'Warm', 'Cold', 'Rejected', 'Closed');

$statuses = Array();
$query  = 'SELECT * FROM contacts ';
for($i=0, $j=count($_GET['contactstatus']); $i<$j; $i++){
    if(in_array($_GET['contactstatus'][$i], $status_types)){
        if($i==0)
            $query.= " WHERE contactstatus IN (";

        $statuses[] = $_GET['contactstatus'][$i];
        $query .= "'".$_GET['contactstatus'][$i]."'";
        if($i==($j-1))
            $query .= ")";

    }
}
$query .= ' ORDER BY contacts.date DESC';  

如果没有传递contactstatus,我已将其设置为自动全选

答案 1 :(得分:0)

第一个看起来与第二个相同。您还缺少第一个查询的WHERE限定符。

如果您想获取所有联系人,请更改此

$query = "SELECT * FROM contacts WHERE contactstatus ORDER BY contacts.date DESC"; 

到这个

$query = "SELECT * FROM contacts ORDER BY contacts.date DESC"; 

答案 2 :(得分:0)

难道你不能只设置php页面的默认行为来显示所有内容吗?也就是说,如果没有设置$_GET参数(在URL中),您的页面只会从数据库中选择所有潜在客户。

$query = " SELECT * FROM `contacts` ORDER BY date DESC";
$result = $mysqli->query($query);

if($result && $result->num_rows > 0){
    // do something with all leads
}

为了处理特定状态,我们有

if( isset($_GET['contactstatus']) ){
// select leads based on status 
}  

如果要将多个值传递给单个GET参数,请参阅Passing multiple values for same GET variable in URL