没有ajax的预填充字段

时间:2017-09-03 08:17:58

标签: javascript php jquery mysql oop

这是我的第一个项目。我想,当我在表单中更新我的记录时,所有字段都预先填充了以前的数据。它们存储在表格中。

这是我的功能代码: -

    public function getData($query)
      {        
    $result = $this->connection->query($query);
    if ($result == false) {
        return false;
    } 

    $rows = array();

    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }

    return $rows;
}

这是我的html文件代码:

      <?php
      $result = $crud->getData("SELECT * FROM creative_workshop ");
      foreach ($result as $res) {
      $id = $res['id'];
      $title = $res['title'];
      $message = $res['message'];
      $title1 = $res['title1'];
      $message1= $res['message1'];
      $image1= $path .$res['image1'];
      $title2 = $res['title2'];
      $message2= $res['message2'];
      $image2= $path .$res['image2'];
       }
       ?>
<form name="form" method="post" action="" enctype="multipart/form-data">
<textarea rows="4" cols="50" name="title" value="<?php echo $title;?>">
<textarea rows="4" cols="50" name="message" value="<?php echo $message;?>">
 </form>

3 个答案:

答案 0 :(得分:2)

问题在于这一句话

$result = $crud->getData("SELECT * FROM creative_workshop ");

确保成员函数$crud->getData正常工作,getData未返回获取的结果

答案 1 :(得分:0)

Textarea没有值属性。 您可以使用。喜欢

<form name="form" method="post" action="" enctype="multipart/form-data">
 <textarea rows="4" cols="50" name="title" ><?php echo $title;?></textarea>
 <textarea rows="4" cols="50" name="message" ><?php echo $message;?></textarea>
</form>

答案 2 :(得分:0)

首先:

您目前在表单上执行的操作是从表中获取所有行并循环遍历它们,最终返回最后一行并在表单中显示。

很遗憾,您的数据库无法保证您的数据会以certain order的形式返回。

这意味着循环显示SELECT的结果可能会返回输入的最后一行但不保证。

相反,您想要使用ORDER BY或者选择行,这样会更有效,添加一个特定行的位置。

如果您有自动递增ID字段,可以查看this

<强>第二

要在textarea字段中显示数据,您需要将其回显到标记内容,而不是属性,即:

<textarea><?php echo $text ?></textarea>

<强>第三

直接从您的数据源(在您的情况下是您的数据库表)回显文本到页面是不安全的。

您应该考虑转义它以避免不良行为 - 特别是在呈现的数据中使用HTML。

想象一下$text是这样的:

</textarea><script>alert('uh-oh');</script>

将其解析为表单会使得页面上生成的HTML看起来像这样,从而导致在页面上执行JS。

<textarea></textarea><script>alert('uh-oh');</script></textarea>

使用htmlentities避免此行为:

<textarea><?php echo htmlentities($text) ?></textarea>

输出变为:

<textarea>&lt;/textarea&gt;&lt;script&gt;alert('uh-oh');&lt;/script&gt;</textarea>

看起来很糟糕,但阻止浏览器将内容呈现为HTML,从而保护您的表单: - )