1

私は HTML フォームを持っています。送信すると、新しい HTML を書き込む php ページに移動し、新しい HTML には最初の HTML ページの値が書き込まれます。

元。input:text に "hi" を入力して送信します。これは、input:text が value="hi" を持つ新しい HTML を作成する php ページに移動します。

以下に投稿したコードは機能しますが、「ダミー」の name="x" を入れて、value="myvalue" に置き換える必要があります。何かを置き換える代わりに、これを要素に追加する方法はありますか?

また、これを使用して値をテキストエリアに入れる方法はありますか?

この質問の助けを借りて: wkhtmltopdfを使用して現在のページを pdf に印刷する 私はこのコードを使用しています:

$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;
4

2 に答える 2

1

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 (または require_once) メソッドを使用してバリデーターの最後に表示します。

ロジックと表示を分離するために使用される一般的なパターンがいくつかあります。Google MVC.

于 2013-04-22T20:53:19.650 に答える
1

これは、以下の例で使用したorをsomepage.php使用して、フォームの値を渡すだけで簡単に実行できます。次に、値が渡されたことを確認し、実際に値が渡された場合は、投稿データを含む入力フィールドを含むフォームが生成されます。POSTGETPOSTsomepage.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>';
}
于 2013-04-22T20:46:55.747 に答える