用数据行填充html表.使用选择框进行选择


Populate html table with data rows. Chooses with select boxes

此代码适用于一个选择框,当找到值时,即使存在更多具有相同值的列,它也会停止。我需要为许多选择框工作,并用具有相同列值的所有行填充表(值。用户用选择框选择的值)

<?php
require('includes/config.php');
require('layout/header.php'); 
function get_info($db, $predmet)
{
    $sql = $db->prepare("SELECT * FROM raspored WHERE predmet = :predmet");
    $sql->setFetchMode(PDO::FETCH_ASSOC);
    $sql->execute([':predmet' => $predmet]);
    if ($row = $sql->fetch()) {
        return $row;
    }
    return false;
}
?>

<table border="0" class="table table-hover table-striped">
    <tr COLSPAN=2 BGCOLOR="#6D8FFF">
        <th>ИД</th>
        <th>Предмет</th>
        <th>Професор</th>
        <th>Ден</th>
        <th>Час</th>
        <th>Просторија</th>
        <th>Тип</th>
    </tr>
    <?php
    if (isset($_POST['predmet1'])) {
        if ($row = get_info($db, $_POST['predmet1'])) {
            echo "<tr>" .
                "<td>" . $row["ID"] . "</td>" .
                "<td>" . $row["predmet"] . "</td>" .
                "<td>" . $row["profesor"] . "</td>" .
                "<td>" . $row["den"] . "</td>" .
                "<td>" . $row["chas"] . "</td>" .
                "<td>" . $row["prostorija"] . "</td>" .
                "<td>" . $row["tip"] . "</td>" .
                "</tr>";
        } else {
            echo "don't exist records for list on the table";
        }
    }
    ?>
</table>
</div>
<?php 
//футер
require('layout/footer.php'); 
?>

这是选择框。

<select name="predmet[1]" id="predmet[1]" class="form-control input-lg">
                        <option value="" class="placeholder" style="display: none;">Предмет1</option>  
                        <option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>  
                        <option value="Конечна Математика">Конечна Математика</option>  
                        <option value="Софтверско инженерство">Софтверско инженерство</option>
                    </select>
                        </div>
                    </div>
                    <div class="col-xs-6 col-sm-6 col-md-6">
                        <div class="form-group">
                    <select name="predmet[2]" id="predmet[2]" class="form-control input-lg">
                        <option value="" class="placeholder" style="display: none;">Предмет2</option>  
                        <option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>  
                        <option value="Конечна Математика">Конечна Математика</option>  
                        <option value="Софтверско инженерство">Софтверско инженерство</option>

                    </select>

所以我想是这样的。

    function get_info($db, $predmet_1,$predmet_2)
    {
       $param = array();
       $query = "SELECT * FROM raspored";
       $where_sql = '';
       if($predmet_1 != '' || $predmet_2 != '') {
          $query .= " WHERE ";
       }
       if($predmet_1 != '') { 
           $where_sql .= 'predmet = :predmet_1';
          $param[':predmet_1'] = $predmet_1;
       }  
       if($predmet_2 != '') {
           if($where_sql != '') {
              where_sql .= ' AND ';
           }
           $where_sql .= 'predmet2 = :predmet_2';
           $param[':predmet_2'] = $predmet_2;
       }
        $sql = $db->prepare("SELECT * FROM raspored ".$where_sql);
        $sql->setFetchMode(PDO::FETCH_ASSOC);
        $sql->execute($param);
        return $sql->fetchAll();
    }
<select name="predmet_1" id="predmet_1" class="form-control input-lg">
                        <option value="" class="placeholder" style="display: none;">Предмет1</option>  
                        <option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>  
                        <option value="Конечна Математика">Конечна Математика</option>  
                        <option value="Софтверско инженерство">Софтверско инженерство</option>
                    </select>
                        </div>
                    </div>
                    <div class="col-xs-6 col-sm-6 col-md-6">
                        <div class="form-group">
                    <select name="predmet_2" id="predmet_2" class="form-control input-lg">
                        <option value="" class="placeholder" style="display: none;">Предмет2</option>  
                        <option value="Алгоритми и структури на податоци">Алгоритми и структури на податоци</option>  
                        <option value="Конечна Математика">Конечна Математика</option>  
                        <option value="Софтверско инженерство">Софтверско инженерство</option>

                    </select>

<table border="0" class="table table-hover table-striped">
    <tr COLSPAN=2 BGCOLOR="#6D8FFF">
        <th>ИД</th>
        <th>Предмет</th>
        <th>Професор</th>
        <th>Ден</th>
        <th>Час</th>
        <th>Просторија</th>
        <th>Тип</th>
    </tr>
    <?php
        $rows = get_info($db, $_POST['predmet1'],$_POST['predmet2'];
        if(!empty($rows) {
        foreach($rows as $row ) {
            echo "<tr>" .
                "<td>" . $row["ID"] . "</td>" .
                "<td>" . $row["predmet"] . "</td>" .
                "<td>" . $row["profesor"] . "</td>" .
                "<td>" . $row["den"] . "</td>" .
                "<td>" . $row["chas"] . "</td>" .
                "<td>" . $row["prostorija"] . "</td>" .
                "<td>" . $row["tip"] . "</td>" .
                "</tr>";
           }
        } else {
            echo "don't exist records for list on the table";
        }
    }
    ?>
</table>
</div>
<?php 
//футер
require('layout/footer.php'); 
?>

我认为这是对的,但如果predmet_1和predmet_2都与同一字段相关,那么您可以使用SQL"IN",但以类似的方式构建SQL语句和parms。

如果是这样的话,我可以建议你这样做吗。http://loudev.com/或http://davidstutz.github.io/bootstrap-multiselect/

可能会帮助您的用户。

希望能有所帮助。