2012-10-03 35 views
0

我怎樣才能實現這一目標?GET表單內PHP POST形式

GET表單內

POST表單

我首先進入的3文本數據,然後按GET提交按鈕,然後當我按下提交後的按鈕,它只是就像一個GET和不顯示數據從我的if語句說什麼:

if(isset($_POST['post'])){ echo $_POST['data1']."<br/>".$_POST['data2']."<br/>".$_POST['data3']; }

請幫我在這。我真的需要這個

<!doctype html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
</head> 
<body> 
<?php 
if(isset($_POST['post'])){ 
    echo $_POST['data1']."<br/>".$_POST['data2']."<br/>".$_POST['data3']; 
} 
?> 
<form action="" method="get"> 
    <form action="" method="post"> 
     <input type="text" name="data1" value="<?php if(isset($_GET['data1'])) echo $_GET['data1']; ?>"/> 
     <input type="text" name="data2" value="<?php if(isset($_GET['data2'])) echo $_GET['data2']; ?>"/> 
     <input type="text" name="data3" value="<?php if(isset($_GET['data3'])) echo $_GET['data3']; ?>"/> 
     <input type="submit" name="get" value="GET"/> 
     <input type="submit" name="post" value="POST"/> 
    </form> 
</form> 
</body> 
</html> 

先謝謝你們!

+0

你爲什麼要這麼做? –

回答

1

<form>元件可以不具有其它<form>元素作爲後代,根據HTML規範。 (見this related question。)

因此,你必須在這裏什麼是無效的HTML。在這種情況下,瀏覽器可以做任何它認爲合理的事情,包括拒絕渲染頁面。瀏覽器之間的行爲可能不一致。

+0

我認爲第二個'form'在這裏被默默地忽略了。 – raina77ow

+0

@ raina77ow它可能是。但完全取決於瀏覽器。這個特定的HTML將調用所謂的「未定義行爲」。 – cdhowie

0

這不是正常的程序。這是不可能的。我想,你想同時具有GET和POST的效果。也許你可以用一些討厭的把戲做到這一點,將它們添加到使用JavaScript網址的結尾。

2

嗯,這裏的概念證明:

<form> 
    <input name="t" /> 
    <input type="submit" value="with GET" /> 
    <input type="submit" value="with POST" 
      onclick="this.parentNode.method='POST';"/> 
</form> 

當然,這是相當更好的移動JS掉HTML的,但是,正如我所說,這只是爲了顯示它如何能在原則上進行。

正如@cdhowie正確注意到的,你不能在另一個form元素內有form元素;瀏覽器將如何解釋這種結構,取決於他們(也許內部的form將被忽略爲一個無效元素),但它絕對不會允許您同時使您的輸入屬於兩種形式。

+0

這應該是正確的解決方案。試試這個@Kevin。 –

1

您不能在另一個窗體中有窗體。像按鈕這樣的Facebook就是一個很好的例子,你不能把它放在表單中,否則你可能會破壞某些東西。