【问题标题】:php - how do I use a form to display data with multiple where conditions?php - 如何使用表单显示具有多个 where 条件的数据?
【发布时间】:2011-12-06 17:01:33
【问题描述】:

我为志愿者名单创建了一个数据库。然后是一个表格,用于提取报名参加特定任务的志愿者的个人信息。我是 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 />";

我非常感谢任何建议。

【问题讨论】:

    标签: where conditional-statements


    【解决方案1】:

    你可以把它写得更像这样

    [EDIT]-------- 我想这就是你要找的东西

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

    【讨论】:

    • 谢谢。我尝试了它并收到一条错误消息: – HTTP 错误 500(内部服务器错误):服务器尝试满足您的请求时遇到了意外情况。所以我加了“;”到每个 if 语句的末尾,并通过了错误消息,但仍然出现一个空白页,此时我应该得到两个结果(返回 2 行)。
    • 它是一个不会改变的帖子变量列表吗?因为我认为最好的方法可能是有一个帖子变量名称的数组,然后循环。如果是这样,我将编辑代码,这应该有助于使这变得更容易和更清晰
    • 我想是的。表格的目的:提供一种方式,组织者可以拉出通过另一份表格指出的志愿者列表,这些志愿者之前填写了他们有兴趣参与的领域/任务。所以组织者有一个所有自愿拉票的人的名单,并且可以使用 PHPMailer 向他们发送一封电子邮件,当然我在设置时也遇到了麻烦,但那是另一回事了。我希望组织者能够一次搜索多个领域/技能 - 拉票和收集签名或媒体和新闻稿以及与组织交谈或其他。
    • 已重新发布,但我建议您将其视为 cms 应用程序,因为有许多可以让您完成所有这些功能并让您在几个小时内运行的应用程序。需要考虑的事情。
    • 你会推荐哪些?
    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    相关资源
    最近更新 更多