Вызов определенной функции PHP при отправке формы

Я пытался вызвать определенную функцию php при отправке формы, и скрипты формы и php находятся на одной странице. Мой код ниже (он не работает, поэтому мне нужна помощь)

<html>
    <body>
    <form method="post" action="display()">
        <input type="text" name="studentname">
        <input type="submit" value="click">
    </form>
    <?php
        function display()
        {
            echo "hello".$_POST["studentname"];
        }
    ?>
    </body>
</html>

person Piklu Guha    schedule 08.09.2012    source источник


Ответы (7)


В следующей строке

<form method="post" action="display()">

действие должно быть именем вашего скрипта, и вы должны вызвать функцию, что-то вроде этого

<form method="post" action="yourFileName.php">
    <input type="text" name="studentname">
    <input type="submit" value="click" name="submit"> <!-- assign a name for the button -->
</form>

<?php
function display()
{
    echo "hello ".$_POST["studentname"];
}
if(isset($_POST['submit']))
{
   display();
} 
?>
person The Alpha    schedule 08.09.2012
comment
Ошибка: запрошенный URL-адрес /path/to/update() не найден на этом сервере. - person Madan Bhandari; 02.11.2016
comment
@MadanBhandari Не пишите имя функции в методе формы. - person Siraj Alam; 03.06.2018
comment
Если вы напишете имя функции в действии, она будет искать this в корневом каталоге и не переходить к оператору if(isset). Пожалуйста, удалите имя функции. - person Salman Mushtaq; 25.02.2020
comment
@SalmanMushtaq, вы правильно прочитали ответ, имя функции не действует, <form method="post" action="yourFileName.php">. - person The Alpha; 25.02.2020

вам не нужен этот код

<?php
function display()
{
echo "hello".$_POST["studentname"];
}
?>

Вместо этого вы можете проверить, отправлена ​​ли форма, проверив переменные сообщения с помощью isset.

вот код

if(isset($_POST)){
echo "hello ".$_POST['studentname'];
}

щелкните здесь, чтобы получить руководство по php для isset

person kushalbhaktajoshi    schedule 08.09.2012
comment
Разве это не выполнит функцию при обновлении страницы? Не то, чтобы в данном случае это было опасно, но я выполняю функцию сохранения. - person Tyrannogina; 19.09.2016
comment
Это будет отображать нулевые значения при обновлении, лучше использовать isset($_POST['submit'] - person lisandro; 11.01.2020

Предполагая, что ваш скрипт называется x.php, попробуйте это

<?php 
   function display($s) {
      echo $s;
   }
?>
<html>
    <body>
        <form method="post" action="x.php">
            <input type="text" name="studentname">
            <input type="submit" value="click">
        </form>
        <?php
           if($_SERVER['REQUEST_METHOD']=='POST')
           {
               display();
           } 
        ?>
    </body>
</html>
person Hernan Velasquez    schedule 08.09.2012

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

Чтобы сделать еще один запрос без обновления страницы, вам придется заглянуть в ajax. Посмотрите на jQuery, так как он упрощает запросы ajax

person Kris    schedule 08.09.2012

Если вы хотите вызвать функцию при нажатии кнопки отправки, вам нужно
использовать ajax или jquery, если вы хотите вызвать свою функцию php после отправки формы, вы можете сделать это как:

<html>
<body>
<form method="post" action="display()">
<input type="text" name="studentname">
<input type="submit" value="click">
</form>
<?php
function display()
{
echo "hello".$_POST["studentname"];
}
if($_SERVER['REQUEST_METHOD']=='POST')
{
       display();
} 
?>
</body>
</html>
person Tarun    schedule 08.09.2012

Напишите этот код

<?php
    if(isset($_POST['submit'])){
        echo 'Hello World';
    } 
?>

<html>
     <body>
         <form method="post">
             <input type="text" name="studentname">
             <input type="submit" name="submit" value="click">
         </form>
     </body>
</html>
person GYaN    schedule 11.03.2017

Альтернативой, и, возможно, не очень хорошей процедурной процедурой кодирования, является отправка имени функции сценарию, который затем выполняет функцию. Например, в форме входа обычно есть действия входа, забыли имя пользователя, забыли пароль, вход в систему, которые представлены в форме в виде кнопок или якорей. Все это может быть направлено к/как, скажем,

weblogin.php?function=login
weblogin.php?function=forgotusername
weblogin.php?function=forgotpassword
weblogin.php?function=signin

А затем оператор switch на принимающей странице выполняет всю подготовительную работу, а затем отправляет или запускает (следующую) указанную функцию.

person Ralph Frost    schedule 05.12.2020