PHP - проблема с формой

Вчера я начал свой первый курс PHP. Сегодня возникла преграда в очевидно очень простой задаче, и я был бы признателен за вашу помощь.

У меня есть два файла: index.php и function.php

Index.php содержит следующий код:

    <form action = "functions.php" method='POST'>
        Insert name: <input type = "text" name = "name"><br>
        Insert age: <input type = "text" name = "age"><br>
        <input type=submit value = "GO!" onclick = "displayNameAndAge()">
    </form>

Через

require 'functions.php';

Я включаю functions.php, который содержит одну единственную функцию:

  function displayNameAndAge() {
      if (isset($_POST["name"])) {
        echo $_POST["name"];
      }
      if (isset($_POST["age"])) {
        echo $_POST["age"];
      }
  }

Следовательно, после заполнения полей, указанных в форме, я ожидаю, что нажатие кнопки приведет к получению данных через переменную $ _POST и отображению данных на странице. Где я ошибся, где я неправильно понял учебник? Заранее спасибо.

displayNameAndAge () - это функция php, и вы не можете использовать ее в атрибуте ypur input onclick, внутри этого ожидается функция JS.

Sfili_81 29.08.2018 12:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Фактически вы смешиваете код php с jQuery. Php не имеет функции / события onclick. Я внес некоторые изменения, попробуйте этот код.

<form action = "functions.php" method='POST'>
    Insert name: <input type = "text" name = "name"><br>
    Insert age: <input type = "text" name = "age"><br>
    <input type=submit value = "GO!" name = "submit">
</form>

в functions.php

 if (isset($_POST["submit"])) {
  if (isset($_POST["name"])) {
    echo $_POST["name"];
  }
  if (isset($_POST["age"])) {
    echo $_POST["age"];
     }
  }

Не знаю, зачем и где вы используете require 'functions.php';. Если вы делаете это на своей странице index.php, удалите это. Ваш form автоматически отправит данные и перенесет вас на страницу functions.php.

Ой, действительно, моя беда. Спасибо за разъяснения, очень признателен.

guitarfreak 29.08.2018 12:25

Рад, что помог тебе. :)

Zain Farooq 29.08.2018 12:29

Onclick - это атрибут события HTML. Он не может вызывать функцию PHP. Поскольку HTML работает в браузере, то есть на клиенте, а PHP работает на сервере.

Что вы можете сделать:

Добавьте еще один файл, скажем post.php, так как по имени functions.php этот файл должен хранить определения функций:

require 'functions.php';

displayNameAndAge();

HTML должен выглядеть так:

<form action = "post.php" method='POST'>
    Insert name: <input type = "text" name = "name"><br>
    Insert age: <input type = "text" name = "age"><br>
    <input type=submit value = "Go!" name = "submit">
</form>

Другие вопросы по теме