【问题标题】:How to retrieve all data from database using select option in php?如何使用 php 中的选择选项从数据库中检索所有数据?
【发布时间】:2017-01-20 14:30:02
【问题描述】:

所以我从我的database 中得到了这个table,我想使用select optionecho out。但我遇到了麻烦,因为我有一个option,用户可以在其中添加更多选项,但我不知道如何设置它的值。你能帮我解决一下吗?谢谢!

这是我当前的代码:

    <?php 

      while(mysqli_stmt_fetch($stmt)) { 

    ?>

<select class="form-control input-sm">
      <option value="ABLE SEAMAN" <?php if($boiler_size == 'ABLE SEAMAN') { echo "selected"; } ?>>ABLE SEAMAN</option>
      <option value="AKO ITO" <?php if($boiler_size == 'AKO ITO') { echo "selected"; } ?>>AKO ITO</option>
      <option value="APPRENTICE" <?php if($boiler_size == 'APPRENTICE') { echo "selected"; } ?>>APPRENTICE</option>
</select>

【问题讨论】:

  • 我为您提供了一个简单的代码来检索输出,您可以使用此代码并分享实现的想法。

标签: php mysql select mysqli


【解决方案1】:

简单写函数:

 function populate_options($table_name, array $fields,  $selected_option = "") {
            $options = "<option></option>";
 $st = $pdo->prepare("SELECT distinct `$fields[0]`, `$fields[1]` FROM $table_name WHERE 1  GROUP BY `$fields[1]` ");
        $st->execute();
        $rowes = $st->fetchAll(PDO::FETCH_ASSOC);
                if ($selected_option=="") {
        foreach ($rowes as $row) {
                        $options.= "<option value = '{$row->$fields[0]}'";
                        $options.= ">" . ucwords( $row->$fields[1] ) . "</option>";
                    }
                } else {
                    foreach ($rowes as $row) {
                        $options.= "<option value = '{$row->$fields[0]}'";
                        $options.= ((($selected_option == $row->$fields[0])) ? ' selected="selected"' : '') . ">" . ucwords($row->$fields[1] ). "</option>";
                    }
                }
            }

            return $options;
        }

并调用你的代码

<select class="form-control input-sm">
       <?php echo $populate_options("tbl_name", array('id', 'name'),$boiler_size); ?> 
</select>

【讨论】:

    【解决方案2】:

    您必须获取已从数据库中选择的行数,因为如果计数为零,则会在 while loopforeach 中抛出错误,作为显示动态选择选项的首选用法.

    因此,为了显示动态选择选项,我们需要执行以下过程。

    <?php
    $query="SELECT * FROM `TABLENAME` ORDER BY `id` DESC";
    $stmt = mysqli_query($conn,$query);
    $count = $stmt->num_rows;
    ?>
    <select class="form-control input-sm">
    <?php
    if($count==0)
    {
        echo '<option value="">No Datas have been created Yet</option>';
    }
    else
    {
        while($fetch = $stmt->fetch_assoc())
        {
        ?>
        <option value="<?php echo $fetch['id']; ?>"><?php echo $fetch['name']; ?></option>
        <?php   
        }
    }
    ?>
    </select>
    

    使用上述代码,您可以从数据库中获取 n 个选项值,并且可以非常轻松地显示它而不会造成任何混淆。选项值将重复直到循环结束,然后 select 将结束。因此,如果数据库有 n-number,while 循环将重复 n 次,然后结束。

    【讨论】:

    • 投反对票的人可以提及我的答案为-1的原因是什么,以便将来更正。我单独使用了mysqli.* 语句,这个循环可以正常工作。
    • 原因很简单-您在回答中所做的陈述不正确。 while 语句和不返回行的查询没有任何问题。
    • 我必须更改函数以获取 row_count 而不是我使用过的函数,或者我必须提供关于 @YourCommonSense 的明确解释..
    • @YourCommonSense。我已经更新了代码和查询以从数据库中获取数据。请分享想法。
    • 请记住,Stack Overflow 既不是论坛也不是免费的辅导门户。如果您有问题,您必须以常规方式提出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2018-08-18
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多