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";  
}  

すべてを取得するために使用している URL は次のとおりです。

www.mydomain.com/leads.php?contactstatus=New&contactstatus=ホット&contactstatus=コールド&contactstatus=拒否&contactstatus=クローズ

私も試しました:

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

contactstatus が渡されない場合、すべてを自動的に選択するように設定しました。

于 2012-06-22T14:40:57.297 に答える
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 
}  

1 つの GET パラメーターに複数の値を渡す場合は、URL で同じ GET 変数に複数の値を渡すを参照してください。

于 2012-06-22T14:34:04.587 に答える
0

最初の if は 2 番目と同じように見えます。また、最初のクエリに 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 に答える