【问题标题】:Completed form saves to new page完成的表格保存到新页面
【发布时间】:2013-04-22 20:43:43
【问题描述】:

我有一个 HTML 表单,提交后会转到一个 php 页面,该页面编写一个新 HTML,其中新 HTML 具有写入它的第一个 HTML 页面的值。

例如。在输入:文本中,我输入“hi”并点击提交。然后进入一个 php 页面,该页面创建新的 HTML,其中 input:text 具有 value="hi"

我在下面发布的代码有效,但我必须放置一个“虚拟”name="x" 才能被 value="myvalue" 替换。有没有办法将它添加到元素中而不是替换某些东西。

还有没有办法使用它来将值放入文本区域?

使用此问题的帮助:Printing the current page to pdf using wkhtmltopdf 我正在使用此代码:

$documentTemplate = file_get_contents ("form.html");

foreach ($_POST as $key => $postVar)
{
if($postVar == "on")
    $documentTemplate = preg_replace ("/name=\"$key\"/", "checked", $documentTemplate);

else
    $documentTemplate = preg_replace ("/name=\"$key\"/", "value=\"$postVar\"",         $documentTemplate);
}

file_put_contents ("form_complete.html", $documentTemplate);

$html = file_get_contents("form_complete.html");

echo $html;

【问题讨论】:

  • 执行此操作的常用方法是首先使用脚本创建表单,在提供时填写来自$_POST 的值,而不是使用静态 HTML 文件。

标签: php


【解决方案1】:

这可以通过使用POSTGET 将表单的值传递给somepage.php 来完成 - 我在下面的示例中使用了POST。然后somepage.php 将检查以确保向其传递了一个值,如果确实传递了一个值,则会生成一个包含帖子数据的输入字段的表单。

<form action="somepage.php" method="post">
    <input type="text" name="some_field" />
</form>

Somepage.php

if(isset($_POST['some_field'])){
echo '
    <form action="">
        <input type="text" value="' . $_POST['some_field'] . '" />
    </form>';
}
else
{
echo 'post data below: <br>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
}

【讨论】:

  • 在这个例子中我什么都没有发生
  • @Brad I don't get anything to happen是什么意思
  • 当我提交表单时,它应该转到 somepage.php,它会打印出我输入正确的表单?如果是这样,我得到的只是一个空白屏幕。
  • @Brad 表单是否至少将您带到 somepage.php?这段代码对我来说很好用...查看我对else 语句的更新,这样它至少应该输出 something
  • 它是去 somepage.php,你的 else 声明我没有找到数据。
【解决方案2】:

不要使用 file_get_contents 将所有 HTML 加载到变量中,只需将 PHP 文件用作 HTML 模板。无论你想在哪里使用 PHP 变量,添加:

<?php echo $somevar; ?>

确保在渲染之前验证您在模板中回显的变量是否存在。您可能希望在模板顶部放置一个 PHP 块,以验证和设置您要使用的所有变量:

<?php
if(isset($_POST['on'])){
  $on = $_POST['on'];
}
else
{
  $on = '';
}
?>

<html>
  <head>
  </head>
  <body>
    <form action="thispage.php" method="POST">
      <input type="text" name="on" value="<?php echo $on; ?>">
    </form>
  </body>
</html>

您会及时发现您希望将这些文件分成多个文件,在这种情况下,您可以将 HTML 放入 view.php 之类的文件中,并将验证代码放入 validate.php 中,然后您就可以使用要求(或 require_once)方法将视图包含在验证器的末尾。

有一些常用的模式用于分离逻辑和显示。谷歌MVC。

【讨论】:

  • 我理解您的意思,但出于我的目的,我确实希望使用输入值复制整个以前的 HTML。
  • 这实现了这个目标。使用单个 PHP 页面来呈现表单。当您第一次运行表单时,它将为空,因为 $_POST['on'] 未设置,因此 $on 变量被分配了一个空字符串。当您提交表单(给自己)时,$on 变量将由 POST 的内容填充,因此 HTML 保持不变,但值会发生变化。
  • 我做错了什么吗?当我使用你的代码并提交时,它只是刷新了页面并且没有保存输入。
  • 我在输入框中缺少名称。如果您将上面的代码保存为“thispage.php”,它应该可以满足您的需求。
  • 是的,就是这样。那么如何将值写入新页面,如果使用此方法,新页面会将其保留在 而不是输入的任何内容。我需要实际文件的原因是因为我正在使用一个 pdf 生成程序。
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 2011-04-06
  • 2013-02-23
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
相关资源
最近更新 更多