-1

我在 php 中制作了一个表格,并希望通过为 php.ini 制作一个单独的文件来在下拉选择菜单中显示 ID。所以主文件中的代码是:

<?php include "functions.php";?>
<form action="login_update.php" method="post">
            <div class="form-group">
            <label for="username">username</label>
            <input type="text" name="username" class="form-control">
            </div>

            <div class="form-group">
            <label for="password">password</label>
            <input type="password" name="password" class="form-control">
            </div>

           <div class="form-group">
               <select name="id" id="">
                   <?php  

                        showAllData();
                   echo "<br>"."askfkldfjl;adfafladfdf";
                    ?>
               </select>
           </div>

            <input class="btn btn-primary" type="submit" name="submit" value="update">
       </form>

functions.php 的代码是:

<?php 

function showAllData(){


    $connection = mysqli_connect('localhost','root','****','loginapp');
    if($connection){
        echo "We are connected. a=".$a."<br>";
    }else{
        die("Database connection failed");
    }
    $query = "SELECT * FROM users";
    $result = mysqli_query($connection,$query);
    if($result){
        echo("<br>"." <b><h6>We are successful</h6></b>");
    }
    else {        
        die("Query FAILED" . mysqli_error());
    }
    while($row = mysqli_fetch_assoc($result))  {
      $id = $row["id"];

      echo"<option value='$id'>$id</option>";


    }


}
?>

预期的输出是: 在此处输入图像描述

但输出是: 在此处输入图像描述

所以上面截图中的前两行没有打印。

这些行显示在 chrome 中的 INSPECT ELEMENT 中。

在此处输入图像描述

我忘了提到 echo 命令:

echo "<br>"."askfkldfjl;adfafladfdf";

下面显示所有数据也不起作用。

4

4 回答 4

0

你犯了一个错误。实际上你在选择框中写了一个代码并且你没有添加选项,所以这就是为什么它没有显示在 html 中所以写一个像下面的代码这样的代码,所以它作为选项显示在选择框中。

<div class="form-group">
               <select name="id" id="">
                  <option> <?php  

                        showAllData();
                   echo "<br>"."askfkldfjl;adfafladfdf";
                    ?></option>
               </select>
           </div>

如果你想从showAllData();函数中显示选项,你必须返回 html。

为此,请showAllData();使用以下代码更新您的函数:

function showAllData(){
     $options="";

    $connection = mysqli_connect('localhost','root','****','loginapp');
    if($connection){
        echo "We are connected. a=".$a."<br>";
    }else{
        die("Database connection failed");
    }
    $query = "SELECT * FROM users";
    $result = mysqli_query($connection,$query);
    if($result){
        echo("<br>"." <b><h6>We are successful</h6></b>");
    }
    else {        
        die("Query FAILED" . mysqli_error());
    }
    while($row = mysqli_fetch_assoc($result))  {
      $id = $row["id"];

      $options.="<option value='$id'>$id</option>";


    }
    return $options;

}
于 2019-03-12T06:59:09.970 回答
0

PHP函数移到元素showAllData()之前。HTML <select>因为该<select>元素等待一个<option>元素,但所有其他文本将在页面上不可见。

例如:

   <div class="form-group">
       <?php showAllData(); ?>
   </div>

<?php 

function showAllData(){


    $connection = mysqli_connect('localhost','root','****','loginapp');
    if($connection){
        echo "We are connected. a=".$a."<br>";
    }else{
        die("Database connection failed");
    }
    $query = "SELECT * FROM users";
    $result = mysqli_query($connection,$query);
    if($result){
        echo("<br>"." <b><h6>We are successful</h6></b>");
    }
    else {        
        die("Query FAILED" . mysqli_error());
    }

    echo '<select name="id" id="">';
    while($row = mysqli_fetch_assoc($result))  {
      $id = $row["id"];

      echo"<option value='$id'>$id</option>";


    }
    echo "</select>";
}
?>
于 2019-03-12T07:05:50.093 回答
0

您的代码混淆了。您可以使用以下代码。创建一个数组,为您提供需要在选择中显示的值。

<?php 

function showAllData(){
    $idArr = array('msg'=>'','data'=>'','status'=>0);    
    $connection = mysqli_connect('localhost','root','****','loginapp');
    if($connection){
        $idArr['msg'] = "We are connected";
        $idArr['status'] = 1;
    }else{
        $idArr['msg'] = "Database connection failed"; 
        $idArr['status'] = 0;
    }
    if($idArr['status'] == 1){
        $query = "SELECT * FROM users";
        $result = mysqli_query($connection,$query);
        if($result){
            $idArr['msg'] = "We are successful";
            $idArr['status'] = 1;               
        }else {        
            $idArr['msg'] = "Query FAILED" . mysqli_error(); 
            $idArr['status'] = 0;  
        }
        if($idArr['status'] == 1){
            while($row = mysqli_fetch_assoc($result))  {
                 $idArr['data'][] = $row["section_id"];
            }
        }        
    }   
    return $idArr;
}
$idArr = showAllData();
?>

<?php 
if(!empty($idArr['data'])){
    echo "We are connected<br>";
    echo("<br>"." <b><h6>We are successful</h6></b>");
    ?>
    <form action="login_update.php" method="post">
            <div class="form-group">
            <label for="username">username</label>
            <input type="text" name="username" class="form-control">
            </div>

            <div class="form-group">
            <label for="password">password</label>
            <input type="password" name="password" class="form-control">
            </div>

           <div class="form-group">
               <select name="id" id="">
                   <option value="0">--Select--</option>
                   <?php 
                       foreach ($idArr['data'] as $key => $value) {
                           echo"<option value='$value'>$value</option>";
                       }
                   ?>
               </select>
           </div>

            <input class="btn btn-primary" type="submit" name="submit" value="update">
       </form>

<?php }else{
    echo $idArr['msg'];
}

?>
于 2019-03-12T07:09:42.483 回答
0

为什么要放在<br>select 标签内?select标签只接受它下面的options标签,所以请去掉br标签和select标签内所有多余的字符串。如果您想向用户展示,您应该在选择标签上方回显消息。

谢谢

于 2019-03-12T07:07:00.747 回答