1

有一个包含业务线索列表的数据库。他们都被赋予了新的、热的、冷的等状态。我在页面上有链接,只显示新的或只有热的工作正常,但我似乎无法让一个工作显示全部。默认视图是新建。这是我正在使用的,在此先感谢您的帮助。

$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

4

3 回答 3

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';  

如果没有通过任何联系状态,我已将其设置为自动全选。

于 2012-06-22T14:40:57.297 回答
0

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

如果要获取所有联系人,请更改此设置

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

对此

$query = "SELECT * FROM contacts ORDER BY contacts.date DESC"; 
于 2012-06-22T14:31:45.633 回答
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 参数,请参阅在 URL 中为同一个 GET 变量传递多个值

于 2012-06-22T14:34:04.587 回答