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

时间:2016-01-12 15:20:31

标签: php mysql pdo html-select dropdownbox

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

<?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>

1 个答案:

答案 0 :(得分:0)

所以我觉得这样的事情。

    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&#39; IN&#39;但是以类似的方式构建sql语句和parms。

我是否可以建议如果是这样的话,就像这样。 http://loudev.com/http://davidstutz.github.io/bootstrap-multiselect/

可以帮助您的用户。

希望有所帮助。