【问题标题】:Unable to post a value selected from db in a drop down box无法在下拉框中发布从 db 中选择的值
【发布时间】:2017-02-05 03:35:10
【问题描述】:

我花了一些时间试图让下拉框正常工作,从数据库中获取部门和位置的值。这工作正常,我添加了额外的日期字段,以便客户可以选择特定时期、位置和部门的记录。当我操作运行 departmentReport.php 的表单时,即使尝试回显每个值,页面也会返回空白,如下所示。

   <form id="departmentReport" action="departmentReport.php" method="get" onsubmit="#">
        <fieldset id="departmentReport">
          <h3>Department Report</h3>
            <br>
          <?php
          include 'includes/DbCon.php';
        $sql = "select department_name from departments";

          echo"<select name = 'departments' value=''>Department Name</option>";

          foreach ($conn->query($sql) as $row){
              echo "<option value=$row[department_name]>$row[department_name]</option>";}
          echo "</select>";

          ?>
          <br></br>
    <?php
          include 'includes/DbCon.php';
        $sql = "select `location_name` from `location`";

          echo  "<select name = 'location' value=''>Location Name</option>";

          foreach ($conn->query($sql) as $row){
              echo "<option value=$row[location_name]>$row[location_name]</option>";}
          echo "</select>";

          ?>
            <br></br><br>
                <label for="date">Date From<br></label>
                <input id="date1" type="date" name="dateF"
                       autofocus="true"/>
            <br>
            <br>
                <label for="date">Date To<br></label>
                <input id="date2" type="date" name="date2"
                       autofocus="true"/>
            <br>
            <br>
            <input type="submit" class="button" value="Submit">

在提交departmentReport.php 时执行

<?php


include "../includes/dbCon.php";  //* CONNECTION TO DATABASE

$department = mysqli_real_escape_string($conn, $_POST['departments']);  //* CLEAN DATA, THIS DELETES ANY SPECIAL CHARACTERS THAT CAN BE USED FOR MALICIOUS CODE 
$location = mysqli_real_escape_string($conn, $_POST['location']);   //* CLEAN DATA, THIS DELETES ANY SPECIAL CHARACTERS THAT CAN BE USED FOR MALICIOUS CODE 
$date1 = mysqli_real_escape_string($conn, $_POST['date1']); //* CLEAN DATA, THIS DELETES ANY SPECIAL CHARACTERS THAT CAN BE USED FOR MALICIOUS CODE 
$date2 = mysqli_real_escape_string($conn, $_POST['date2']); //* CLEAN DATA, THIS DELETES ANY SPECIAL CHARACTERS THAT CAN BE USED FOR MALICIOUS CODE 

echo "$department";  
echo "$location";
echo "$date1";
echo "$date2";

这带来了以下结果..

但是,在调整帖子以获取时,我看到了我选择的值 http://localhost:8888/departmentReport.php?departments=Marketing&location=London&dateFrom=02%2F01%2F2017

我不确定为什么在回显它们时看不到这些值!

我们将不胜感激。

【问题讨论】:

    标签: php post get echo


    【解决方案1】:

    检索帖子数据时你的变量是错误的

    选择部门html代码:

    <select name = departments value=''>Department Name</option>
    

    在选择表单中,名称是“部门”,但是在PHP中检索它们时,它是:

    $_POST['departmant_name']
    

    输入变量名错误。应该是:

    $_POST['departments']
    

    另外,请在选择的名称上加上引号

    <select name = 'departments' value=''>Department Name</option>
    

    所有其他变量也错误。

    看起来您输入了数据库列名称,而不是表单输入名称。

    编辑: 我还注意到,在您的表单中,表单“方法”设置为“GET”,而您的 PHP 代码使用“POST”

    【讨论】:

    • 我不认为是这种情况我已经进行了修改,但是当我单击提交时,以下页面变为空白。但是,我可以将 echo "test";结果和预期的一样。只要我回显“$ location”;例如页面是空白的。
    • 这很奇怪。普通表单提交是否有效?尝试制作简单的表单,可能有 1 或 2 个输入文本框,然后尝试提交并显示它的值。此外,您可以尝试只使用 $_POST[] 而不使用 mysqli_real_escape_string(),看看它是否有效
    • 我现在可以玩一会了,谢谢 afif 似乎问题是我正在从 db 中为下拉框选择值。当我尝试提交所选值时,它不会发送任何值。
    • `。这可以正常工作,但是我们将一直添加新部门以从数据库中获取结果,以确保对代码的更改最少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多