2014-10-06 4 views
0

Я новичок в php, html и веб-сервисах. , что я пытаюсь сделать, это отправить переменную первого имени с формой HTML в веб-службу и повторить ее обратно на той же странице моей формы. теперь моя проблема заключается в том, что вызов веб-службы происходит до того, как я напишу переменную firstname. есть ли способ выполнить остальную часть моего PHP-кода после нажатия кнопки отправки? поэтому я могу вызвать веб-службу после того, как будет задана переменная firstname.Возможно ли выполнить некоторый php-код после сообщения html-формы?

это мой код, я попробовал кое-что, но мне это не помогло. спасибо.

<?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', переместите его туда. (Это звучит как * most * if not * all * логики принадлежит там.) Другой подход может состоять в том, чтобы иметь две отдельные страницы: одну для рендеринга формы и одну для обработки ее после ее отправки. – David

ответ

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

приведет к форматированию первой формы и последующему выполнению php-кода в условии if ($ _SERVER ['REQUEST_METHOD'] == "POST") {}? – Tal

+0

Нет. Это проверяет, была ли форма размещена. Принуждение формы сообщения с php кажется плохим способом сделать что-то. U dont хотите заставить любую запись до того, как пользователь ввел значения –

+0

ok Я добавил ваше состояние и изменил некоторые другие вещи, и теперь все работает: D спасибо! – Tal

Смежные вопросы