2013-04-22 21 views
1

我有一個HTML表單,當它被提交到一個php頁面,該頁面寫入一個新的HTML,其中新的HTML具有寫入它的第一個HTML頁面的值。已完成表格保存到新頁面

Ex。在輸入:文本我把「嗨」,並提交。然後進入一個PHP頁面,它創建了新的HTML,其中輸入:文本的值=「嗨」

我在下面發佈的代碼工作,但我必須把「dummy」name =「x」取而代之的是價值=「myvalue」。有沒有辦法只是將其添加到元素而不是替換某個元素。

還有一種方法可以使用它將值放入textarea?

使用幫助,從這個問題: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; 
+0

通常的做法是通過使用腳本首先創建表單,當它們提供時從'$ _POST'填充值,而不是使用靜態HTML文件。 – Barmar 2013-04-22 20:46:34

回答

1

這可以簡單地通過傳遞表單的值來實現,以somepage.php使用或者POSTGET - 我在下面所使用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>'; 
} 
+0

與這個例子我沒有得到任何事情發生 – Brad 2013-04-23 17:21:31

+0

@Brad你是什麼意思「我什麼都沒有發生」 – 2013-04-23 17:22:08

+0

當我提交表單時,它應該去somepage.php打印一個表單與我的輸入正確?如果是這樣,我得到的只是一個空白的屏幕。 – Brad 2013-04-23 17:49:53

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。

+0

我明白你的意思,但爲了達到我的目的,我希望整個以前的HTML都可以通過輸入值進行復制。 – Brad 2013-04-23 17:11:01

+0

這就完成了這個目標。使用一個PHP頁面來渲染表單。當你第一次運行表單時,它將是空白的,因爲$ _POST ['on']沒有被設置,所以$ on變量被分配一個空字符串。當您提交表單(自身)時,$ on變量將被POST的內容填充,因此HTML保持不變,但值會更改。 – 2013-04-23 17:17:53

+0

我做錯了什麼?當我使用你的代碼並提交時,它只刷新頁面並且輸入不被保存。 – Brad 2013-04-23 17:54:42

相關問題