2011-12-06 56 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发送给他们所有的电子邮件,当然我也遇到了麻烦,但这是另一回事。我希望组织者能够一次搜索多个地区/技能 - 拉票和收集签名或媒体和新闻稿,并与组织或其他人交谈。 –

相关问题