【问题标题】:How can I populate form for editing existing data [duplicate]如何填充表单以编辑现有数据[重复]
【发布时间】:2018-12-12 14:18:16
【问题描述】:

更新代码以反映双引号和单引号。

我没有使用 mysql 表中的 date_requested 值填充,而是得到以下内容。

Date  <input type="text" id="datepicker" name="date_requested" value="$date_requested"> <br/><br/>

这一行将 $date_requested 放在文本框中。

我也试过了

Date  <input type="text" id="datepicker" name="date_requested" value="<?php echo "$date_requested" ?>"/> <br/><br/>

这一行将 php echo 放在文本框中。

赞赏任何方向。这是周围的代码部分:

if($_SERVER['REQUEST_METHOD'] == "POST")
{
    mysql_connect("localhost", "root","") or die(mysql_error()); //Connect to server
    mysql_select_db("first_db") or die("Cannot connect to database"); //Connect to database
    $query = mysql_query("Select * from time_off_requests Where time_off_key='$time_off_key'"); // SQL Query
    $date_requested = $_POST["date_requested"];
    $time_off_begin = $_POST["time_off_begin"];
    $time_off_end = $_POST["time_off_end"];//date
    $use_pto = $_POST["use_pto"];
    $user = $_SESSION["user"];
    $time_off_key = $_SESSION["time_off_key"];
    mysql_query("UPDATE time_off_requests SET date_requested='$date_requested', time_off_begin='$time_off_begin', time_off_end='$time_off_end', use_pto='$use_pto' WHERE time_off_key='$time_off_key'") ;
    header("location: home.php");
}
if($tok_exists)
    {
    Print '
    <form action="edit.php" method="POST">
        Date  <input type="text" id="datepicker" name="date_requested" value="<?php echo "$date_requested" ?>"/> <br/><br/>
        All Day  <input type="checkbox" name="all_day[]" value="no" /> <br/>
        Start Time  <input type="time"  id="timepicker" name="time_off_begin" /> <br/>
        End Time  <input type="time" id="timepicker2" name="time_off_end" /> <br/> <br/>
        Use PTO <Select name="use_pto">
        <option value="">Select</option>
        <option value="Yes">Yes</option>
        <option value="No">No</option>
        </select> <br/><br/>
       <input type ="submit" value="Edit Request">  
    </form>
    ';
    }
    else
    {
        Print '<h2 align="center">There is no data to be edited.</h2>';
    }
?>

【问题讨论】:

  • $tok_exists 分配在哪里?
  • 代码中较高的部分,对于 if 语句和生成表单显示为 true。表单还会根据需要更新表格,只是不会在表单框中显示现有信息。
  • 需要检查单引号和双引号中的字符串 - php.net/manual/en/language.types.string.php - 特别是变量解析。由于您的变量 ($date_requested) 在单引号内 -> Print ' ...,因此它永远不会解析。
  • 谢谢@Sean,我不知道单引号和双引号之间的区别。我已经相应地调整了它,但回报保持不变。我更新了问题以更好地显示退货问题。
  • 如果您有Print ' ...,则将... value="&lt;?php echo "$date_requested" ?&gt;"... 更改为...value=" '.$date_requested.' "...。基本字符串连接 - '.$date_requested.'

标签: php mysql forms session


【解决方案1】:

您错误地混合了单引号和双引号。将值从变量设置到字符串中的一种更简单的方法是使用变量插值,这需要双引号 ("")。

所以

Print "<form action='edit.php' method='POST'>
    Date  <input type='text' id='datepicker' name='date_requested' value='$date_requested'/> <br/><br/>
</form>";

确实会输出

<form action='edit.php' method='POST'>
    Date  <input type='text' id='datepicker' name='date_requested' value='2018-12-12'/> <br/><br/>
</form>

这是因为 PHP 在双引号内的普通字符串中看到变量 $date_requested 并将其替换为它的值。变量周围的单引号按字面意思解释并输出为包含 HTML 属性值的引号

【讨论】:

    猜你喜欢
    • 2021-01-29
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多