2014-10-06 78 views
0

我是新來的PHP,HTML和Web服務。 我想要做的是發送一個名稱變量與HTML表單到一個web服務,並呼應它的迴應回我的表單的同一頁。現在我的問題是,在發佈firstname變量之前,Web服務的調用發生了。是否有一種方法來執行我的PHP代碼的其餘部分後,我點擊提交按鈕?所以我可以在firstname變量設置後調用Web服務。是否可以在html表單後執行一些php代碼?

這是我的代碼我嘗試了一些東西,但他們並沒有真正幫助我。 謝謝。

<?php 
$path = 'c:\\wamp\\www\\nusoap.php'; 
require_once $path; 
$client = new nusoap_client("http://localhost/nusoap/productlist.php?wsdl", TRUE); 

?> 
<html> 
<head> 
<title>Personal INFO</title> 
</head> 
<body> 
<?php 
echo '<form method="post" action="">'; 
echo 'First Name:'; echo '<input type="text" size="12" maxlength="12" name="Fname">'; echo '<br  />'; 
'<input type="submit" value="Submit" class="button"> 
</form>' 
?> 
<?php 
if (isset($_POST['Fname'])) 
{ 
$Fname = $_POST["Fname"]; 
$result = $client->call("getName", array($Fname)); 
} 
//echo $Fname; 

$error = $client->getError(); 
if ($error) { 
    echo "<h2>Constructor error</h2><pre>" . $error . "</pre>"; 
} 
if ($Fname != NULL or ""){ 
//$result = $client->call("getName", array($Fname)); 
} 
if ($client->fault) { 
    echo "<h2>Fault</h2><pre>"; 
    echo ($result); 
    echo "</pre>"; 
} 
else { 
    $error = $client->getError(); 
    if ($error) { 
     echo "<h2>Error</h2><pre>" . $error . "</pre>"; 
    } 
    else if (isset($Fname)){ 
     echo "<h2>Respond</h2><pre>"; 
     echo $result; 
     echo "</pre>"; 
    } 
} 
?> 
</body> 
</html> 
+1

這應該是這樣做的:'if(isset($ _ POST ['Fname']))'。如果在'if'語句中應該包含更多邏輯,請將其移到那裏。 (這聽起來像*大多數*如果不是*所有*的邏輯屬於那裏)。另一種方法可能是有兩個單獨的頁面,一個用於渲染表單,另一個用於在提交後處理它。 – David 2014-10-06 13:50:02

回答

1

要檢查表單被提交或沒有,你可以使用下面的代碼:

<form action="#" method="POST"> 
    <button type="submit">Submit</button> 
</form> 
<?php 
    if($_SERVER['REQUEST_METHOD'] == "POST"){ 
      // Do something with posted data 
      // For example: if(isset($_POST['Fname'])) { echo $_POST['Fname']; } 
    } 
?> 

$_SERVER是包含有有關服務器如何被調用多個信息數組鍵一個全球性的陣列中,訪客等等。在這裏,我們用它來檢查請求方法,在這種情況下,在提交表單時是POST。

isset()函數檢查指定的字符串或數組是否確實存在。因此,在這種情況下,我們使用IF語句說,如果變量$_POST['Fname']事實上確實存在,我們應該做一些事情。您也可以在其前面添加一個!來做相反的事情。這會說如果值沒有設置:

if (!isset($_POST['Fname'])) { echo "Did you forget your name?"; } 
+0

這會強制首先提交表單,然後在if($ _SERVER ['REQUEST_METHOD'] ==「POST」){}條件內執行php代碼? – Tal 2014-10-06 14:22:09

+0

不可以。這隻會檢查表單是否已過帳。用php強制發佈表單似乎是一種不好的方式來做某事。你不想在用戶輸入值之前強制發佈任何帖子 – 2014-10-06 15:11:20

+0

好的,我添加了你的條件並改變了一些其他的東西,現在一切正常:D謝謝! – Tal 2014-10-06 15:20:54

相關問題