【问题标题】:how to output only male/female students if male/female is selected in select tag html php如果在选择标签html php中选择了男/女,如何仅输出男/女学生
【发布时间】:2014-10-05 16:26:40
【问题描述】:

我创建了一个 php 程序,用户将在其中选择 10 月 1 日到 11 月 1 日这样的日期。选择后,该程序将生成在这些给定日期之间生病的学生的结果。另外,我希望用户选择他/她是否只想显示男性或女性结果。如果用户在下拉列表中选择了男,则只会显示男学生,否则只会显示女学生。我还希望用户能够同时显示两种性别,如果他/她选择了两种性别。

这是我的程序,我唯一的问题是,如果我选择男性或女性,它会同时显示。如果选择了两个选项,我只想显示两个性别。

<form action="gen.php" method="POST"> 
        <input type="date" name="date1"> 
        <input type="date" name="date2"> 
        <select name="gender">
            <option value="male">Male</option>
            <option value="female">Female</option>
            <option value="both">Both</option>
        </select>
        <input type="submit" name="generate" value="Generate">
    </form>

<?php

$con = mysqli_connect("localhost", "root", "", "sickstuds") or die("amasarry can't connect...");

if(isset($_POST['date1']) && isset($_POST['date2']) && isset($_POST['gender'])){
    $date1 = $_POST['date1'];
    $date2 = $_POST['date2'];
    $gender = $_POST['gender'];



    $query = "SELECT * FROM sickstud";

    $result = mysqli_query($con, $query);

    $found = mysqli_num_rows($result);

        if($found > 0 ){

            while($row = mysqli_fetch_array($result)){
                if($row['date'] >= $date1 && $row['date'] <= $date2){
                    if($row['Gender'] == $gender){

                        echo '

                        <table border="1" cellpadding="20" cellspacing="5">
                            <tr>
                                <td>'.$row['id'].'</td>
                                <td>'.$row['fn'].'</td>
                                <td>'.$row['mn'].'</td>
                                <td>'.$row['ln'].'</td>
                                <td>'.$row['date'].'</td>
                                <td>'.$row['program'].'</td>
                                <td>'.$row['Gender'].'</td>
                            </tr>
                        </table>

                    ';

                    }
                    else if($row['Gender'] == $gender){

                            echo '

                        <table border="1" cellpadding="20">
                            <tr>
                                <td>'.$row['id'].'</td>
                                <td>'.$row['fn'].'</td>
                                <td>'.$row['mn'].'</td>
                                <td>'.$row['ln'].'</td>
                                <td>'.$row['date'].'</td>
                                <td>'.$row['program'].'</td>
                                <td>'.$row['Gender'].'</td>
                            </tr>
                        </table>

                    ';

                    }

                    else{

                            echo '

                        <table border="1" cellpadding="20">
                            <tr>
                                <td>'.$row['id'].'</td>
                                <td>'.$row['fn'].'</td>
                                <td>'.$row['mn'].'</td>
                                <td>'.$row['ln'].'</td>
                                <td>'.$row['date'].'</td>
                                <td>'.$row['program'].'</td>
                                <td>'.$row['Gender'].'</td>
                            </tr>
                        </table>

                    ';

                    }

                }
                else{
                    echo '';
                }
            }

        }
        else{
            echo 'no';
        }
}

?>

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    你必须先测试性别值

    然后在您的查询中使用它来自定义结果...

    <?php
    
    $con = mysqli_connect("localhost", "root", "", "sickstuds") or die("amasarry can't connect...");
    
    if(isset($_POST['date1']) && isset($_POST['date2']) && isset($_POST['gender'])){
        $date1 = $_POST['date1'];
        $date2 = $_POST['date2'];
        $gender = $_POST['gender'];
    
    
        if($gender == 'male' || $gender == 'female') // 1 here is the value of the gender it might be 1 or male depends on your form 
        {
          $query = mysqli_query($con, "SELECT * FROM sickstud WHERE gender = '$gender' AND date >= '$date1' AND date <= '$date2'");
          $rows = mysqli_num_rows($query);
          if($rows > 0)
          {
            while($i = mysqli_fetch_assoc($query))
            {
              // the rest of what you want to do and then echo
            }
          }
          else
          {
            echo 'No results';
          }
        }
        elseif($gender == 'both')
        {
          $query = mysqli_query($con, "SELECT * FROM sickstud WHERE date >= '$date1' AND date <= '$date2'");
          $rows = mysqli_num_rows($query);
          if($rows > 0)
          {
            while($i = mysqli_fetch_assoc($query))
            {
              // the rest of what you want to do and then echo
            }
          }
          else
          {
            echo 'No results';
          }
        }
    ?>
    

    【讨论】:

      【解决方案2】:

      您需要在查询中添加 Where 更改您的查询

      这个

      $query = "SELECT * FROM sickstud";
      

      $query = "SELECT * FROM sickstud where gender='". $gender."'";
      

      在下拉菜单中为两个选项更改此行

      <option value="both">Both</option>
      

      到这里

      <option value="">Both</option>
      

      【讨论】:

        【解决方案3】:

        首先,您可以根据当前选择从数据库中选择所需的结果,例如:

        $query = "SELECT * FROM sickstud WHERE Gender='" . $_POST['gender'] . "'";
        

        回答您的问题。您有三个打印出相同的子句:

        if($row['Gender'] == $gender){
        ...
        } else if($row['Gender'] == $gender){
        ...
        } else {
        ...
        }
        

        你可能想要这样的东西:

        if($row['Gender'] == $gender || $gender == 'both'){
        ...
        }
        

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多