2011-12-06 55 views
0

我爲志願者列表創建了一個數據庫。然後提供一份表格,用於爲志願者提供個人信息,以便志願者完成特定任務。我是一個初學PHP的人,我已經找遍了所有的答案,並嘗試了多種方式來做,但唉,沒有運氣。php - 如何使用表單顯示多個條件的數據?

這是我目前正在掙扎的關鍵代碼:

if(isset($_POST['planning']) && $_POST['planning'] == '1') 
    { $result1 = mysql_query("SELECT * FROM volunteers WHERE planning = '1'");} 
if(isset($_POST['signatures']) && $_POST['signatures'] == '1')     
    { $result2 = mysql_query("SELECT * FROM volunteers WHERE signatures = '1'"); 
    $newresult1 = array_merge($result1, $result2);} 
if(isset($_POST['canvassing']) && $_POST['canvassing'] == '1') 
    { $result3 = mysql_query("SELECT * FROM volunteers WHERE canvassing = '1'"); 
    $newresult2 = array_merge($newresult1, $result3);} 
if(isset($_POST['phone_bank']) && $_POST['phone_bank'] == '1') 
    { $result4 = mysql_query("SELECT * FROM volunteers WHERE phone_bank = '1'"); 
    $newresult3 = array_merge($newresult2, $result4);} 
if(isset($_POST['media']) && $_POST['media'] == '1') 
    { $result5 = mysql_query("SELECT * FROM volunteers WHERE media = '1'"); $newresult4 = 
    array_merge($newresult3, $result5);} 
if(isset($_POST['press_releases']) && $_POST['press_releases'] == '1') 
    { $result6 = mysql_query("SELECT * FROM volunteers WHERE press_releases = '1'"); 
    $newresult5 = array_merge($newresult4, $result6);} 
if(isset($_POST['volunteer_coordinator']) && $_POST['volunteer_coordinator'] == '1') 
    { $result7 = mysql_query("SELECT * FROM volunteers WHERE volunteer_coordinator = 
    '1'"); 
    $newresult6 = array_merge($newresult5, $result7);} 
if(isset($_POST['speaker']) && $_POST['speaker'] == '1') 
    { $result8 = mysql_query("SELECT * FROM volunteers WHERE speaker = '1'"); $newresult7 
    = array_merge($newresult6, $result8);} 
if(isset($_POST['house_parties']) && $_POST['house_parties'] == '1') 
    { $result9 = mysql_query("SELECT * FROM volunteers WHERE house_parties = '1'"); 
    $newresult8 = array_merge($newresult7, $result9);} 
if(isset($_POST['web_page']) && $_POST['web_page'] == '1') 
    { $result10 = mysql_query("SELECT * FROM volunteers WHERE web_page = '1'"); 
    $newresult9 
    = array_merge($newresult8, $result10);} 
if(isset($_POST['other']) && $_POST['other'] == '1') 
    { $result11 = mysql_query("SELECT * FROM volunteers WHERE other = '1'"); $newresult10 
    = array_merge($newresult9, $result11);} 

$newresult10 = array_unique($newresult10); 

while($row = mysql_fetch_array($newresult10)) { 
echo $row['first_name'] . " " . $row['last_name']; 
echo "    "; 
echo $row['email']; 
echo "    "; 
echo $row['phone']; 
echo "<br />"; 

我非常讚賞任何建議。

回答

0

,使其更像這個

[編輯]你可以把它寫--------我覺得這是你找什麼

$postVars = array(
    "canvassing"=>"1", 
    "other"=>"1" 
    //and you would go on post name valid post value 
); 

//start the query 
$query="SELECT * FROM volunteers WHERE ";  

//loop thru the posibable post vars and check and add to the query 
$andcount=0; 
foreach($postVars as $name=>$value){ 
    if(isset($_POST[$name]) && $_POST[$name] == $value){ 
     if($andcount>0)$query.=" AND "; 
     $query.=" ".$name."= '".mysql_real_escape_string($value)."'"; 
     $andcount++; 
    } 
} 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) { 
    echo $row['first_name'] . " " . $row['last_name']; 
    echo "&nbsp;&nbsp;&nbsp;&nbsp;"; 
    echo $row['email']; 
    echo "&nbsp;&nbsp;&nbsp;&nbsp;"; 
    echo $row['phone']; 
    echo "<br />"; 
} 
+0

感謝。我試了一下,並得到一個錯誤消息: - HTTP錯誤500(內部服務器錯誤):服務器試圖完成您的請求時遇到意外的情況。所以我加了「;」到每個if語句的末尾,並通過錯誤消息,但仍然拿出一個空白頁,當我應該得到兩個結果(返回2行)。 –

+0

這是一個不會改變的後變量列表嗎?因爲我認爲最好的方法可能是創建一個後期var名稱的數組,然後循環。如果是這樣,我會編輯代碼,這應該有助於使我更容易和更清潔 –

+0

我認爲。表格的目的:提供一種組織者可以抽出志願者名單的方式,他們通過其他表格填寫了他們有興趣參加志願活動的區域/任務。所以組織者列出了所有自願參加拉票的人,並且可以使用PHPMailer發送給他們所有的電子郵件,當然我也遇到了麻煩,但這是另一回事。我希望組織者能夠一次搜索多個地區/技能 - 拉票和收集簽名或媒體和新聞稿,並與組織或其他人交談。 –

相關問題