2016-10-12 2 views
1

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

У меня есть следующий HTML-часть формы:

<form name="form1" method="post" action="script.php"> 
     <fieldset> 
      <legend>Tell me your name</legend> 

      First Name: <input type="text" name="name"><br> 

      Submit:  <input type="submit" value="send"> 

     </fieldset> 
    </form> 

И файл script.php содержит следующее:

<?php 
    $name = "empty"; 
    if(!empty($_POST["name"])) 
    { 
    $name = $_POST["name"]; 
    } 
    echo $name; 
?> 

Очень простые/начинающие вещей. Когда я отправляю форму, меня отправляют на новую страницу, которая печатает либо «пустой», либо все, что я ввел в поле формы имени.

Мой вопрос: как я могу выполнить этот скрипт с любой html-страницы, содержащей форму, не переведя браузер на новую страницу, содержащую вывод скрипта? Я хочу запустить сценарий в фоновом режиме/не покидать текущую страницу (не обязательно для печати сообщения, но, возможно, для хранения любого типа, который я ввешу в поля формы, в базу данных, например). Я пытался вводить это в «действие» части формы (в HTML файле):

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

И он перенаправляет меня на другую страницу и показывает ошибку:

Not Found The requested URL /< was not found on this server. Apache/2.4.18 (Ubuntu) Server at localhost Port 80

Любая помощь был бы весьма признателен. Заранее спасибо.

+3

пожалуйста, не кричите, мне больно – nogad

+3

ajax, друг мой. ajax – Phiter

+0

Я согласен с ajax, но вы можете отправлять сообщения на страницу, а затем перенаправлять назад (это будет почти мгновенно), большинство людей не заметят (или позаботятся) – nogad

ответ

0

Либо объединить код в одной странице:

<?php 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $name = .... 
    etc... 
} 
?> 

<html> 
<body> 
... form ... 
</body> 
</html> 

так, что код вызывает только тогда, когда форма фактически подчинялся (а не тогда, когда форма изначально загружена).

Или вы используете AJAX для выполнения подачи фона, оставляя исходную страницу неповрежденной и отображаемой пользователю.

+0

Если я объединю код в одну страницу ... что я должен поместить как значение в часть действия формы html? – Ariel