Test

Вызов функции PHP из HTML-формы в том же файле?

Я пытаюсь выполнить функцию PHP на той же странице после того, как пользователь вводит текст и нажимает кнопку «Отправить».

первое, о чем я думаю, это использование форм. Когда пользователь отправляет форму, функция PHP будет выполнена на той же странице. Пользователь не будет перенаправлен на другую страницу. Обработка будет выполнена и отображена на той же странице (без перезагрузки)

10 ответов

это не может быть сделано так, как вы говорите. PHP является серверной стороной, в то время как форма существует на стороне клиента. Вам нужно будет изучить использование Javascript и / или AJAX, если вы не хотите обновлять страницу.

у вас есть большое непонимание того, как работает web.

в основном, все происходит таким образом:

  • пользователь (ну, браузер) запрашивает test.php с сервера
  • на сервере test.php запускается, все внутри выполняется, и результирующая HTML-страница (которая включает вашу форму) будет отправлена обратно в браузер
  • браузер отображает форму, пользователь может взаимодействовать с ним.
  • пользователь отправляет форму URL, определенный в action , который в данном случае является одним и тем же файлом), поэтому все начинается с самого начала (кроме данных в форме также будет отправлено). Новый запрос на сервер, запуск PHP и т. д. Это означает, что страница будет обновляться.

вы пытались вызвать test() из своего . Этот метод используется для запуска на стороне клиента скрипт, который в большинстве случаев в JavaScript (код будет выполнен в браузере пользователя). Что ничего общего с PHP, которая составляет на стороне сервера, находится на вашем сервере и будет работать только если запрос приходит. Пожалуйста, прочитайте клиентское и серверное кодирование например.

если вы хотите что-то сделать, не вызывая обновления страницы, Вы должны использовать Javascript для отправки запроса в фоновом режиме на сервер, позволить PHP делать то, что ему нужно, и получить от него ответ. Этот метод в основном называется AJAX, и вы можете найти множество ресурсов с помощью Google (например,удивительный учебник Mozilla).

без перезагрузки, используя только html y php, это не возможно, но это может быть очень похоже на то, что вы хотите, но вам нужно перезагрузить:

вот PHP-скрипт, чтобы сделать то, что вы описываете, хотя и бессмысленно. Вам нужно прочитать на стороне сервера и на стороне клиента. PHP не может работать на стороне клиента, вы должны использовать javascript для взаимодействия с сервером или мириться с обновлением страницы. Если вы не можете этого понять, вы не сможете использовать мой код (или чей-либо еще) в своих интересах.

следующий код выполняет вызов AJAX без jQuery и вызывает тот же скрипт для потоковой передачи XML в AJAX. Он затем вставляет имя пользователя и
в div под окно пользователя.

Читайте также:  Html for table borders

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

".$_GET["user"].""; //output an xml document. > if(isset($_GET["user"])) < test(); >else < ?>      
?>

использовать SAJAX или переключиться на JavaScript

Sajax-это инструмент с открытым исходным кодом, чтобы сделать Программирование сайтов с помощью Ajax рамки — также известный как XMLHttpRequest или удаленные сценарии — как можно проще. Sajax делает его легко вызвать PHP, Perl или Python функции с ваших веб-страниц через JavaScript без выполнения обновление браузера.

вот как работает PHP. test() будет выполняться при загрузке страницы, а не при нажатии кнопки Submit.

чтобы делать такие вещи, вы должны иметь onclick атрибут выполните вызов AJAX для файла PHP.

Если вы не хотите использовать Ajax и хотите перезагрузить свою страницу .

вы можете отправить форму без обновления страницы, но, насколько мне известно, это невозможно без использования JavaScript/AJAX вызова PHP-скрипта на вашем сервере. В следующем примере используется библиотека JavaScript jQuery.

Java Script

после отправки будет вызвана анонимная функция Javascript, которая просто отправляет запрос в ваш PHP-файл (который нужно будет быть в отдельные, кстати). The data выше должна быть строка запроса в кодировке URL, которую вы хотите отправить в файл PHP (в основном все текущие значения полей формы). Они появятся на вашем серверном PHP-скрипте в $_GET супер глобальный. Пример ниже.

если это ваша строка данных, то php-скрипт увидит это как:

echo($_GET['a']); // 5 echo($_GET['b']); // 6 echo($_GET['c']); // 7 

однако вам нужно будет построить данные из формы поля, как они существуют для вашей формы, такие как:

(вам нужно будет пометить каждое поле формы «id», вышеуказанный идентификатор — «пользователь».)

после запуска скрипта PHP, success вызывается функция, и все выходные данные, созданные PHP-скриптом, будут сохранены в переменной html .

    function test_input($data) < $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; >?> 

PHP Form Validation Example

"> Name:

E-mail:

Website:

Comment:

Gender: Female Male

Your Input:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>

Это лучший способ, который я использую для создания отправки без загрузки в форме.

вы можете использовать CSS для стилизации iframe так, как вы хотите.

результат php будет загружен в iframe.

Источник

Вызов функции PHP из HTML-формы в том же файле?

Я пытаюсь выполнить функцию PHP на одной странице после того, как пользователь вводит текст и нажимает кнопку отправки.

Первое, о чем я думаю, это использование форм. Когда пользователь отправляет форму, на той же странице будет выполняться функция PHP. Пользователь не будет перенаправлен на другую страницу. Обработка будет выполнена и отображена на той же странице (без перезагрузки)

Читайте также:  overflow-x

В файле test.php :

Функция PHP [ test() ] также находится в том же файле :

Однако у меня все еще проблема! У кого-нибудь есть идея?

Это невозможно сделать в моде, о котором вы говорите. PHP является серверным, тогда как форма существует на стороне клиента. Вам нужно будет изучить Javascript и / или AJAX, если вы не хотите обновлять страницу.

 

Он вызовет getResult.php и передаст ему сериализованную форму, чтобы PHP мог прочитать эти значения. Anything getResult.php будет возвращен функции JS в переменной result обратно на test.php и (в этом случае), показанном в поле предупреждения.

getResult.php

ПРИМЕЧАНИЕ. В этом примере используется jQuery, сторонний Javascript Wrapper. Я предлагаю вам сначала лучше понять, как эти веб-технологии работают вместе, прежде чем усложнять для себя дальнейшие действия.

У вас есть большое непонимание того, как работает сеть.

В принципе, все происходит так:

  • Пользователь (ну, браузер) запрашивает test.php с вашего сервера
  • На сервере выполняется test.php выполняется все внутри, а результирующая страница HTML (которая включает вашу форму) будет отправлена ​​обратно в браузер
  • Браузер отображает форму, пользователь может взаимодействовать с ней.
  • Пользователь отправляет форму (в URL-адрес, определенный в action , который является тем же самым файлом в этом случае), поэтому все начинается с начала (за исключением того, что данные в форме также будут отправлены). Новый запрос на сервер, запуск PHP и т. Д. Это означает, что страница будет обновлена.

Вы пытались вызвать test() из вашего атрибута onclick . Этот метод используется для запуска клиентского скрипта, который в большинстве случаев Javascript (код будет запущен в браузере пользователя). Это не имеет никакого отношения к PHP , который является серверным , находится на вашем сервере и будет работать только в том случае, если запрос приходит. Пожалуйста, прочитайте, например, код на стороне клиента на стороне сервера .

Если вы хотите что-то сделать, не вызывая обновление страницы, вам нужно использовать Javascript для отправки запроса в фоновом режиме на сервер, пусть PHP сделает то, что ему нужно, и получите от него ответ. Этот метод в основном называется AJAX , и вы можете найти множество полезных ресурсов на нем с помощью Google (например , потрясающий учебник Mozilla ).

Без перезагрузки, использование html y php только не представляется возможным, но это может быть очень похоже на то, что вы хотите, но вам нужно перезагрузить:

Вот полный сценарий php, чтобы делать то, что вы описываете, хотя и бессмысленно. Вы должны читать на стороне сервера или на стороне клиента. PHP не может работать на стороне клиента, вам нужно использовать javascript для взаимодействия с сервером или установки обновления страницы. Если вы не можете этого понять, вы не сможете использовать мой код (или кому-либо еще) в свою пользу.

Читайте также:  Python replace all elements in list

Следующий код выполняет вызов AJAX без jQuery и вызывает тот же скрипт, чтобы передать XML в AJAX. Затем он вставляет ваше имя пользователя и
в div под полем пользователя.

Пожалуйста, вернитесь к изучению основ, прежде чем пытаться преследовать что-то продвинутое, как AJAX. Вы только сбиваете себя с толку в конце и потенциально тратите впустую чужие деньги.

".$_GET["user"].""; //output an xml document. > if(isset($_GET["user"])) < test(); >else < ?>      
?>

Используйте SAJAX или переключитесь на JavaScript

Sajax – это инструмент с открытым исходным кодом, позволяющий сделать сайты программирования с использованием инфраструктуры Ajax, также известной как XMLHTTPRequest или удаленный сценарий, как можно проще. Sajax упрощает вызов функций PHP, Perl или Python с веб-страниц с помощью JavaScript без обновления браузера.

Вот как работает PHP. test() будет выполняться при загрузке страницы, а не при нажатии кнопки отправки.

Чтобы сделать это, вам нужно, чтобы атрибут onclick выполнял вызов AJAX в файл PHP.

в случае, если вы не хотите использовать Ajax и хотите, чтобы ваша страница перезагружалась.

Вы можете отправить форму без обновления страницы, но, насколько мне известно, это невозможно без использования JavaScript / AJAX Call для скрипта PHP на вашем сервере. В следующем примере используется jQuery JavaScript Library .

Java Script

При представлении будет вызываться анонимная функция Javascript, которая просто отправляет запрос в ваш PHP-файл (который должен быть в отдельном файле, кстати). Приведенные выше data должны быть URL-кодированной строкой запроса, которую вы хотите отправить в файл PHP (в основном все текущие значения полей формы). Они появятся на вашем PHP-скрипте на стороне сервера в супер-глобальном $_GET . Ниже приведен пример.

Если это ваша строка данных, то скрипт PHP увидит это как:

echo($_GET['a']); // 5 echo($_GET['b']); // 6 echo($_GET['c']); // 7 

Однако вам нужно будет построить данные из полей формы, как они существуют для вашей формы, например:

(Вам нужно будет пометить каждое поле формы «id», указанный выше «user».)

После выполнения PHP Script Runs вызывается функция success , и любой вывод, созданный скриптом PHP, будет храниться в переменной html .

    function test_input($data) < $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; >?> 

PHP Form Validation Example

"> Name:

E-mail:

Website:

Comment:

Gender: Female Male

Your Input:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>

Это лучший способ, который я использую для создания submit без загрузки в форме.

Вы можете использовать некоторый CSS, чтобы стилизовать iframe так, как вы хотите.

Результат php будет загружен в iframe.

Источник

Оцените статью