Как передать переменную PHP в HTML и обратно?

Дата публикации: 17.07.2016

kak-peredat-peremennuyu-php-v-html-i-obratnoВсем привет! 🙂

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

Идея этой статьи у меня появилась после поиска мною соответствующего материала в сети, после которого ничего путного найти не удалось.

Дело в том, что сегодня люди начинают своё знакомство с веб-программированием изучая разнообразные платформы: CMS, фрэймворки и т.д., в которых механизм передачи переменных реализован своим уникальным образом.

Где-то переменные бэкэнда записываются в глобальный массив, а в html-шаблонах вызываются оттуда. В других случаях используются шаблонизаторы, типа Smarty, со своими механизмами передачи данных. В данной ситуации всё зависит от фантазии разработчика.

Таким образом, перед людьми, начавшими своё знакомство с языками написания сайтов благодаря готовым движкам, иcчезла необходимость изучения механизмов передачи данных для «чистых» PHP и HTML.

Но всё же, иногда такая необходимость появляется, причём не только у начинающих, но и у опытных юзеров.

Кому может быть полезно понимание механизма передачи данных из PHP в HTML и обратно?

Представьте, что вы захотели написать собственный движок 🙂 Тем более, что рано или поздно, в учебных целях или коммерческих за такую работу принимается больше половины программистов Земного шара.

А до этого вы работали только с готовым продуктом, в котором свой механизм передачи данных, т.е. необходимости вникать в тонкости «стандартной» передачи у вас не было.

Или, к примеру, вас не устраивает используемый в вашем проекте шаблонизатор (программная надстройка, позволяющая минимизировать содержание бизнес-логики в графических шаблонах, т.е. убирать из html php-конструкции, ограничиваясь только вызовом переменных, функций и файлов), и вы решили написать собственный.

Или же совсем жизненный пример — вы ищете работу, а в предлагаемом тестовом задании без использования в html php-данных никуда. Причём, тестовое нужно сделать на «чистых» языках, а не с использованием горячо любимых вами и используемых фреймворков.

Ну, про новичков, которые только начинают работать с PHP и HTML, о ценности рассматриваемого сегодня вопроса я вообще умолчу.

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content.jpg

В результате вы идёте в Интернет — и вместо конкретного ответа на вопрос вы находите только обсуждения на форумах, где ничего толкового нет.

Но ничего — сегодня мы исправим эту ситуацию 😉

Как передать переменные PHP в HTML?

Для примера создадим простенький тестовый скрипт index.php:

<?php
    $hello = 'Привет, мир!';
    require_once('index.html');
?>

Как видите, в нём всего 2 строчки: в первой объявляется переменная $hello со значением «Привет, мир!», а во второй мы подключаем наш html-шаблон, в котором будет выводить нашу переменную следующим образом:

<html>
    <head>
    </head>
    <body>
        <div>Переменная из php:
            <span><?php echo $hello; ?></span>
        </div>
    </body>
</html>

Здесь, как видите, тоже всё очень незамысловато: для вызова необходимой конструкции её нужно заключить между скобками <?php … ?> (при соответствующих настройках сервера возможен сокращённый вариант записи <? … ?>) и вывести с помощью оператора echo.

В результате, при запуске скрипта в вашем веб-браузере вы увидите следующий результат:

peredacha-peremennoj-php-v-html

Надеюсь, вы не забыли скопировать скрипт и html-файл в каталог, соответствующий новому сайту, на локальный веб-сервер и запустить сервер? Если желаемая надпись в браузере не появилась — проверьте порядок выполняемых действий ещё раз.

Как передать массив PHP в HTML?

Передачу простых переменных мы рассмотрели. А как насчёт массивов, можете спросить вы? Действительно, передача массивов также весьма востребована в случаях, когда необходимо в HTML вывести списки объектов из PHP.

В качестве примера, видоизменим наш PHP-скрипт, сделав из переменной $hello массив:


<?php
    $hello = array('Привет!', "Мир!");
    require_once('index.html');
?>

В данном случае описанный нами способ вызова переменной PHP в HTML выдаст следующий результат:

peredacha-massiva-php-v-html

Библиотека курсов

И это вполне логично, т.к. распечатать содержимое PHP-массива с помощью echo не получится — на экран выводится «Array», что всего лишь указывает на то, что выводимая на экран структура данных — это массив.

Содержимое массива можно просмотреть, выводя его элементы в цикле. Для этого немного видоизменим наш HTML-шаблон:

<html>
    <head>
    </head>
    <body>
        <div>Переменная из php:
            <ul>
                <?php foreach ($hello as $str) { ?>
                    <li><?php echo $str; ?></li>
                <?php } ?>
            </ul>
        </div>
    </body>
</html>

В результате, после повторного запуска скрипта в веб-браузере, на экране мы увидим следующее:

vyvod-dannyh-massiva-php-v-html

Приведённый выше html-код вы можете найти на странице категории абсолютно любого Интернет-магазина, т.к. отображаемые там товары — это содержимое передаваемого PHP-массива.

Ещё один факт, на который следует обратить внимание в предыдущем примере — это возможность использования PHP-операторов и конструкций в HTML (в данном случае используется функция перебора массива foreach), которые также необходимо прописывать между открывающим и закрывающим тэгами <?php?>.

Т.е., подводя краткое резюме под написанным ранее, для передачи переменной из PHP в HTML, HTML-документ должен быть подключён в PHP с помощью директив include или require, после чего объявленные в скрипте переменные будут доступны в шаблоне.

Как вы могли заметить, язык PHP прекрасно взаимодействует с HTML — это его базовая фича, которая у него «в крови», т.е. реализуется без каких-либо дополнительных манипуляций 🙂

Следующим этапом мы рассмотрим обратную сторону данного взаимодействия двух языков — а именно, передачу данных из HTML в PHP.

Передача данных из HTML в PHP

Для данного действия нам потребуется разместить данные в HTML внутри формы, т.е. внутри открывающего и закрывающего тэгов <form></form>. Для этого используем другой тестовый пример, файл index.html которого будет выглядеть так:

<html>
    <head>
    </head>
    <body>
        <form method="POST">
            Имя: <input type="text" name="login">
            Пароль: <input type="password" name="password">
            <input type="submit" value="OK">
        </form>
    </body>
</html>

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

Немного комментариев по поводу передачи в PHP данных HTML-форм (если вдруг кто не в курсе). HTML-формы, как уже было сказано, представляют из себя пару тэгов <form></form>, между которыми располагаются элементы формы, представляющие собой тэги <input> (закрывающий тэг не требуется) со следующими атрибутами:

  • name — будет использоваться как идентификатор элемента для получаения его значений в PHP;
  • type — тип элемента. В зависимости от вводимых в элемент данных может быть «text», «password», «button» и т.д.
  • value — значение элемента по умолчанию (текст в поле до ввода данных, надпись на кнопке и т.д.).

Конечно, это далеко не полный список атрибутов. Я привёл только самые необходимые. Если хотите, чтобы я рассказал обо всех возможных — отпишитесь в комментариях. Жду ваших ответов 🙂

Тэги <input> также могут быть заменены и дополнены специализированными тэгами <button>, <textarea> и т.д., у которых будут присутствовать те же атрибуты, что и у <input>.

Обязательным для каждой формы является наличие элемента с типом «submit», который представляет собой кнопку для отправки данных HTML-формы с помощью HTTP-запроса к серверу, на котором расположены скрипты PHP, обрабатывающие его.

Благодаря возможностям JavaScript и его библиотек элемента с типом «submit» может и не быть — имейте это ввиду при внесении правок в код своего сайта.

У отправляемого HTML-формой HTTP-запроса также есть несколько параметров, которые задаются в качестве атрибутов тэга <form>:

  • method — содержит одно из двух значений GET/POST, основным различием между которыми является метод передачи данных. При передаче методом GET они будут добавляться в url сайта в виде «http://siteurl.com/index.php?login=UserName&password=qwerty», что, соответственно, небезопасно. А при POST данные будут скрыты, поэтому в данном примере он и применяется. К тому же методом POST можно передать данные бОльшего размера, чем GET;
  • action — будет содержать адрес скрипта, который будет обрабатывать оправленные формой данные. По умолчанию данные передаются в тот же скрипт, через который был вызван HTML-шаблон. В моём примере данный вариант меня вполне устраивает, поэтому я не указывал значение для данного атрибута;

Напомню, что структура данного тестового сайта такая же: каталог с HTML-документом, содержащим интерфейс для взаимодействия пользователя с сайтом и PHP-скрипт, который его вызывает. Последний будет иметь следующий вид:

<?php
    if(!empty($_POST))
    {
        echo '<pre>';
        print_r($_POST);
        die();
    }
    require_once('index.html');
?>

Как видите, данные, отправляемые HTML-формой, будут содержаться в массиве POST, который доступен в PHP в виде конструкции $_POST. В нашем случае, после нажатия на кнопку «ОК» в HTML-форме, скрипт выведет на экран следующее:

peredacha-dannykh-v-php-s-pomoschyu-html-formy

Как видите, в случае удачного HTTP-запроса массив POST будет содержать введённые в форме данные в формате «значение атрибута name элемента формы» => «введённое в элемент значение».

Далее в PHP можете обрабатывать данные так как вам захочется 🙂

К слову, данные переданные из HTML-формы в PHP, могут быть доступны в массиве, соответствующему названию метода, с помощью которого они передавались. Если данные передавались методом POST, то искать их нужно в массиве $_POST, если GET — то, соответственно, в $_GET.

Данные, переданные любым из указанных способов также могут быть доступны через массив $_REQUEST, который помимо помимо содержимого массивов $_GET и $_POST также может содержать данные суперглобального массива $_COOKIE, который содержит данные, сохранённые в cookie-файлах (известные в Рунете куки) вашего браузера.

Также, до версии PHP 4.3, в данном массиве содержались ещё и данные о передаваемых через HTML-форму файлах из массива $_FILES, но они были выделены в отдельный массив.

Таким образом, сегодня мы рассмотрели механизм взаимодействия путём передачи данных между HTML и PHP, бэкэндом и фронтэндом ваших сайтов.

Надеюсь, что информация была для вас полезной 🙂 Жду ваши отзывы в комментариях под статьёй и подписки на обновления сайта, чтобы вы были в курсе новых статей.

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

Милости просим 🙂

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться 😉

Понравилась статья? Поделись с друзьями:
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
23 голоса, в среднем: 4.7 из 5

Похожие темы

56 комментариев к статье "Как передать переменную PHP в HTML и обратно?"

  1. Владимир

    Огромное спасибо за информацию!
    Только начинаю разбираться с PHP.
    У меня сайт на чистом html с использованием ssi.
    И я задумал сделать для него микроразметку для рейтинга google и поисковых сайтов.
    Как раз понадобилось чтение базы данных.

    Попробовал подключить сайт через index.php
    Данные появились
    Но:
    — перестал работать ssi
    — кодировка страницы изменилась

    Если с кодировкой наверное найду способ разобраться, то с ssi — пока не знаю что делать.

    1. Pashaster Автор

      Здравствуйте! У меня к Вам два вопроса:

      1. Что такое ssi?
      2. Попробовал подключить сайт через index.php — то Вы конкретно делали? Опишите весь порядок действий, пожалуйста.

  2. Владимир

    Здравствуйте, Павел!
    я сделал сайт давно на чистом html
    У меня главная страница — index.shtml сайт avon.kharkov.ua
    Пробовал сделать подключение через index.php:

    ————————————-
    ssi — server side include
    на всем сайте меню подключается этой технологией — очень много страниц (вручную исправлять на php нереально).
    ————————————-
    ssi не заработала, пришлось отказаться от index.php
    ————————————-
    в итоге сейчас php пишет значение рейтинга в файл
    а на странице я это значение считываю javascript

    Сейчас пока у меня проблеммка — микроразметка google не понимает мою переменную javascript

    1. Pashaster Автор

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

      1. Укажите, что за переменная и попробуйте её сами найти в коде страницы в браузере — Ctrl+U.
      2. Попробуйте изменить алгоритм вывода значений рейтинга

  3. Александр

    Пытаюсь понять web-программирование. Пока не очень.
    Есть задача: периодически, раз в 5 минут запрашивать из клиентского Js-скрипта несколько переменных у серверного скрипта на PHP и разместить их в нужные текстовые поля. Данные PHP-скрипт должен взять из БД Access.
    Как это можно сделать?

    1. Pashaster Автор

      Добрый день!

      В вашем случае вам понадобится технология AJAX, с помощью которой вы будете без перезагрузки страницы отправлять запросы из JS кода в PHP скрипт и обрабатывать ответ от него. Конкретно в вашем случае нужно будет создать html документ с формой и полями, в котором будет подключаться js файл, например, так:

      <html>
          <head></head>
          <body>
              <form action="script2.php" method="POST">
           	    <input name="field1" id="field1">
      	    <input name="field2" id="field2">
      	    <input type="submit" value="Send">
      	</form>
      	<script type="text/javascript" src="javascript.js"></script>
          </body>
      </html>
      

      В JS файле будет производиться AJAX запрос по таймауту в 5 минут (5*60*1000 милисекунд) с помощью функции setInterval следующим образом:

      setInterval(function(){
          var xhr = new XMLHttpRequest();
          xhr.open('POST', 'script.php', false);
          xhr.send();
          if (xhr.status != 200) {
      	alert('Got the error ' + xhr.status + ': ' + xhr.statusText);
          } else {
      	var result = JSON.parse(xhr.responseText);
      		
      	var a = result[0];
      	var b = result[1];
      				
      	document.getElementById('field1').value = a;
      	document.getElementById('field2').value = b;	
          }		
      }, 5*60*1000);
      

      В моём примере отправляется запрос типа POST к скрипту script.php, который лежит на одном уровне с js файлом. В нём-то у вас и будет производиться выборка данных из БД. Сам скрипт будет выглядеть примерно следующим образом:

      <?php
      
      $var1 = rand(0, 5);
      $var2 = rand(0, 5);
      
      $result = [$var1, $var2];
      
      echo json_encode($result);
      

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

      Если будут вопросы — обращайтесь.

  4. Александр

    Спасибо за ответ.
    У меня не работают 2 последних строки в php:

    $result = [$var1, $var2];
    echo json_encode($result);
    

    Как я понимаю, в первой строке должно производиться присвоение переменной $result строки, а что делает вторая, не понимаю. По идее, формат json_encode должен что-то преобразовать во что-то, понятное браузеру.

    1. Pashaster Автор

      Первая строка — это запись массива из переменных $var1, $var2 в переменную $result. Последняя — вывод на экран массива, представленного в JSON формате (для корректной передачи и обработке в JavaScript).

      Как именно вы поняли, что строки не работают?

  5. Александр

    Мои познания где-то на так себе уровне VB 6.0. Я просто создал в блокноте файлы, добавив в конце, приведённого вами php скрипта: «?>», заменил в ytml в строке:

    script2.php на script.php,
    скопировал их в папку «www» Small http server, на котором установлен php version 3.0 и запустил. Вижу два текстовых поля ввода и кнопку «send». Если ничего не вводить, ничего не происходит, если ввести числовые значение в ода поля и нажать кнопку, получаю ответ:
    Parse error: parse error, unexpected ‘[‘ in C:\shttps\www\script.php on line 6
    Если оправлять данные:

    echo ($var1);
    echo ($var2);
    

    получаю два числа вверху окна без занесения в поля.
    Саму идею увидел на страничке:
    http://www.coolwebmasters.com/codes-and-scripts/2545-pushing-updates-to-the-web-page-with-html5-server-sent-events.html

    В моём случае кнопка отправки данных на сервер не нужна. Нужны просто поля, в которые сервер будете пересылать данные.
    Как видите, мне очень сложно понять даже простые вещи.

    1. Pashaster Автор

      Не переживайте вы так сильно 🙂 Ничего страшного же не произошло 🙂

      Ошибка PHP связана, скорее всего, с тем, что вы используете невероятно устаревшую версию PHP на вашем веб-сервере: php version 3.0.

      Не знаю, по каким мануалам вы устанавливали и настраивали локальный веб-сервер, но сейчас актуальная рабочая версия PHP 7.1, поэтому некоторые синтаксические конструкции и вызывают ошибки в вашем случае. Я лично рекомендую использовать для локальной разработки OpenServer, если вы работаете под Windows, т.к. сам им пользуюсь и не нарадуюсь 🙂

      И да, script2.php не нужно было менять на script.php, т.к. таким образом я хотел как раз сделать акцент, что для обработки запроса, отправленного с помощью формы, нужен другой скрипт, отличный от того, что получает данные из БД в вашем случае и генерирует случайные числа в моём.

      По поводу чисел, которые у вас поверх полей отображаются — тут, скорее всего, виноват браузер или кэш браузера. Воспользуйтесь современными версиями Firefox или Chrome и очистите у них кэш предварительно.

      1. Александр

        Скачал версию PHP 7.1.10. Почитал об установке. Что-то сложно. Старую версию просто распаковал в директорию «php» сервера и прописал путь к папке в настройках сервера.
        Поищу более подробное описание по установке PHP и попробую запустить.
        Small http server выбрал из-за простоты настроек. Мне нужно организовать работу в локальной сети предприятия. Этот наносайт из одной страницы нужен, максимум, для четырёх потребителей, чтобы они не звонили по телефону, а смотрели в браузере. Мне предлагали сделать программки 5-ти минутного удалённого опроса БД, находящейся на моём компьютере на VB и установить у потребителей. Но у двух оказались «Дебиан» и «федора». Вот и пытаюсь что-то простенькое сделать. И, судя по реакции руководства, это надо только мне, чтобы не дёргали звонками.
        При отправке со станички, текстовые поля исчезают вместе с кнопкой. Чтобы написать ещё один скрипт, поищу как работать с БД на PHP. К сожалению, в книгах описывают только два случая: базу сотрудников и интернет магазин.
        Не могли бы вы посоветовать, что почитать, применительно к моему случаю?

  6. Pashaster Автор

    По поводу исчезания полей при нажатии на кнопку «отправить» — просто уберите следующий элемент из HTML:

    <input type="submit" ... >
    

    Да и вообще, если вам просто нужно будет мониторить данные без их изменения, то сверстайте простую страничку с текстовыми блоками без форм, как в моём примере. Тогда никто никого не будет сбивать с толку.

    Если сайт будет крутиться в локальной сети — установите себе на ПК OpenServer, как я вам сказал, и не мучайтесь с настройками PHP. Работать с ним просто — пару кликов мышки. Почитайте на моём сайте о работе с ним, я упоминал отдельные моменты в статьях. Просто пройдитесь поиском по сайту с запросом «OpenServer».

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

    Я, кстати, предоставленный пример делал и тестировал исключительно на OpenServer. Сайт состоял из 3 файлов, содержимое которых я вам и скинул. Только HTML засуньте в файл с названием index.html — OpenServer тогда будет воспринимать его как точку входа.

    Для работы с БД пишите свой код в файле, где генерируются сейчас случайные числа. Для работы с Microsoft Access из PHP — сам таким на практике не занимался. Из литературы могу порекомендовать следующее:

    http://php.net/manual/ru/faq.databases.php#faq.databases.access — общие положения, сильно не углубляйтесь, т.к. это просто теория.
    https://stackoverflow.com/questions/19807081/how-to-connect-php-with-microsoft-access-database — примеры кода
    https://www.sitepoint.com/using-an-access-database-with-php/ — ещё примеры кода

    В последних инфа на английском, но, зато более полезная с практической точки зрения 🙂

    Будут сложности с запуском сайта на OpenServer — пишите на cccpblogcom@gmail.com, вышлю исходники. Только не злоупотребляйте моей добротой, попробуйте сначала сами 🙂

  7. Александр

    Спасибо за ответ. Буду читать.
    «Дело новое, не освоенное. Народ хочет разобраться :-)».
    Конечно, интересно самому понять.

    1. Pashaster Автор

      Это да 🙂 В этом деле главное не торопиться, а то можно таких дров наломать, что потом неделю разбираться можно в причине…

  8. Александр

    Проблемка:(
    У меня Windows XP и максимум, что может поддерживаться — PHP 5.4. Как я понимаю, из-за этого возникает ошибка — Got the Error 0:
    Качаю книгу по PHP 5.4

    1. Pashaster Автор

      Эм… кто вам сказал о таких ограничениях?…

      И если вы до сих пор пытаетесь использовать чистый PHP, то зря. Поставьте уже OpenServer или, если не нравится, XAMPP. Готовую WAMP сборку, одним словом.

      У меня у самого старый комп больше Windows XP не тянул, так благодаря OpenServer спокойно себе работал с PHP 7.

      А с динозаврами (я про старые версии) даже и не думайте связываться — неблагодарное дело 🙂

  9. Александр

    Я скачал последнюю версию OpenServer Premium 5.2.7.
    При первой установке согласился на установку Runtime C+. Запустил и получил сообщение о том, что PHP 5.6 и Apache 2.4 работает только начиная с Windows 7. Установил галочки против PHP 5.4 и Apache 2.2. положил файлы в папку c:\OSPanel\domains\test и при обращение по адресу http://127.0.0.1/test/Index.hml получаю:
    Object not found!

    The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

    If you think this is a server error, please contact the webmaster.
    Error 404
    127.0.0.1
    11/30/17 23:21:30
    Apache
    Если не создавать папку, а просто положить файлы в папку c:\OSPanel\domains\, ошибка та же.
    Установил PHP 5.4 на Small http server и тоже ошибка: Got the error 0:
    Что-то в последнее время мне не везёт «на старте».

    1. Pashaster Автор

      Да, напутал я что-то с версиями…

      Можно, конечно, поставить виртуалку с Windows 7+ и OpenServer с последней версией PHP или же вообще остановиться на установке чистых компонентов (PHP, MySQL, Apache)… Но слишком много мороки…

      По поводу запуска сайта в Вашем случае, он должен был открыться по адресу http://test/Index.html

      Если снова будут проблемы, то назовите каталог с файлами сайта в формате типа test.site или test.local, чтобы это было похоже на доменное имя.

      Всё, что лежит в domains, открывается как отдельные сайты. Примером является http://localhost/, при переходе на который отображаются в браузере файлы из каталога openserver/domains/localhost

  10. Александр

    Совсем дилетантский вопросы:
    1. Если JavaScript интегрирован в html файл, то он вместе со страницей передаётся клиенту. А что происходит в случае, приведённом вами?
    2. Возможно ли «убедить» JavaScript исполниться на сервере?

    1. Pashaster Автор

      1. Честно говоря, я не знаю точно, как именно браузеры обрабатывают JS код в данной ситуации, никогда не копался в данном вопросе. Могу только высказать своё предположение, что при обработке HTML кода браузер переходит по всем ссылкам, указанным в нём и скачивает файлы, помещая себе их в кэш, подключая их потом на страницу виртуально.

      2. Серверный JS сейчас — очень популярная сегодня тема. Я также стараюсь её постоянно избегать, т.к. считаю её ересью 🙂 Сегодня на JavaScript пишут серверную часть не только для сайтов, но и программируют на нём железо благодаря Node.js. Также знаю, что новомодные библиотеки типа ReactJS и Vue.js выполняют JS код на сервере, отдавая браузеру уже собранный HTML. Если будет интересно — почитайте об этом на специализированных сайтах, здесь я вас вряд ли проконсультирую.

  11. Андрей

    Доброго времени суток всем посетителям сайта. У меня такой вопрос я только начинаю изучать РНР и пытаюсь ставить себе какие-то задачи, вот решил написать простой конвектор но столкнулся с вопросом как вернуть данные в туже самую html форму с которой получил значения.

    1. Pashaster Автор

      Приветствую 🙂

      В вашем случае поможет Javascript и AJAX запрос. С его помощью будете отправлять данные на сервер при подтверждении формы (нажатие на кнопку с типом submit) из JavaScript кода, а когда сервер вернёт ответ, вставите результаты обратно в форму.

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

      PS: В следующий раз делайте поменьше ошибок в комментариях — устал исправлять 🙂

  12. Александр

    «Со скрипом» установил PHP5.3.13.
    Firefox в «интсрументах разработки» пишет:
    элемент не найден script.php:1:1
    SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
    javascript.js:8:14
    Chrome пишет тоже самое.
    Непонятно, что такого не находит PHP5.3.13 из того, что есть, как вы писали, в PHP7.1?

    1. Pashaster Автор

      У Вас проблема не с версией PHP, а с путём к файлу script.php. Пропишите его правильно. Если сложно написать правильно относительный url, воспользуйтесь для начала абсолютным, а потом подберите относительный вариант.

      1. Александр

        Проблема все-таки в Small HTTP server-е. Он работает только с PHP4.4 максимум.
        Немного разобрался с OpenServer Premium 5.2.7. Ваш пример прекрасно заработал. Спасибо за помощь. Осталось разобраться с базами.:)

        1. Pashaster Автор

          Пожалуйста 🙂 Рад был помочь 🙂

          Принимаю «благодарности» через форму под статьёй, которые пойдут на развитие проекта.

  13. Александр

    Сказать, что с деньгами сейчас плохо — сильно приукрасить действительность.
    В качестве компенсации предлагаю материал для статьи.

    Файл javascript.js

    setInterval(function(){
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'script.php', false);
        xhr.send();
        if (xhr.status != 200) {
        alert('Got the error ' + xhr.status + ': ' + xhr.statusText);
        } else {
        var result = JSON.parse(xhr.responseText);
             
        var a = result[0];
        var b = result[1];
        var с = result[2];
                  
        document.getElementById('wb_Text1').textContent = a;
        document.getElementById('Text2').textContent = b;
        document.getElementById('wb_Text3').textContent = с;    
        }       
    }, 10*1000);
    

    В HTML файле тремя способами записаны текстовые поля. Из него вызывается файл javascript.js, который вызывает серверный скрипт: script.php, который, в свою очередь, запускает генераторы случайных чисел………….
    Из примера видно, что переменные из PHP-скрипта, полученные……JavaScript-ом выводятся по-разному.
    Мне, как начинающему, пришлось помучиться, чтобы с посторонней помощью дойти до этого. Думаю, начинающим будет полезно.

  14. Александр

    Да. «Мир не без добрых людей».
    К сожалению, нет ни одной книги, где бы последовательно рассказывалось о чём-либо. Приходится много «копать».
    Не понятно, почему не отобразились тексты HTML и PHP файлы. Почта отказывается пересылать архивы. Это что-то новое.

    1. Pashaster Автор

      Чтобы HTML и PHP код вставить в комментарии — заключите их в шорткоды [ code ][ /code ]. Только пробелы уберите от названия до скобок.

  15. Александр

    Опять не отобразилось.
    Вспомнил про резервную почту. Кажется, вложение отправилось.

  16. Максим

    Текст из div в переменную php, как сделать?

    <?php
    $CFT = '';
    ?>
    <input type='text'; name='in_CFT' value="">
    Тут динамический текст
    
    1. Pashaster Автор

      Честно говоря, не понял сути вопроса. Напишите подробнее, что вы хотите сделать?

  17. DianaLex

    Приветик! Оговорюсь сразу, может я, опубликовала тему не совсем не по теме сайта, но тем неменее, разбирающиеся пользователи должны быть.
    На днях был спор с близкой подругой, что смогу сделать ресурс и за полгода я смогу вывести его в топ 10 поисковиков и получать трафик не ниже 500 уникальных посетителей. Но, проблема в том, что я не понимаю в этом деле, а спор проигрывать нельзя. Отсюда к вам просьба, для тех, кто понимает, сколько может стоить такой сайт под ключ, который выше.
    А главное, за какую цену вы могли взяться и сделать такой сайт? Много денег у меня к сожалению нет, но, какую-то сумму за работу заплатить смогу.
    Если вы можете взяться за это дело, напишите в ЛС, оповещения читаю
    Если я вам не ответила, то, цена меня не устраивает.
    Модераторы, если не в тот раздел написала, перенесите по тематике или в раздел свободного общения, заранее спасибо.

    1. Pashaster Автор

      День добрый 🙂 По поводу разработки сайта — пишите на email cccpblogcom@gmail.com

      По поводу 500 уников в сутки — для этого Вам потребуется SEO-специалист и солидный бюджет, т.к. для данной посещаемости есть конкретные сроки. А дальше всё будет зависеть от умений SEO-шника и удачи, что поисковики поставят Ваш сайт в топ.

      Можете и сами всё сделать, в принципе, если с бюджетом беда: выберите низкоконкурентную тематику, составьте семантическое ядро, наполните сайт контентом, закупите ссылок на авторитетных ресурсах и рекламная компания через контекстку не помешает.

      Если вы, конечно, не испугаетесь 🙂

  18. Олег

    Добрый день!
    Как мне вытянуть из тега текст и отправить его формой?
    Есть магазин, в котором много продукции. При отправке формы мне нужно, дабы название товара отправлялось вместе с введёнными данными..
    Подскажите, как это сделать?

    1. Pashaster Автор

      Здравствуйте! Если название товара вводится в текстовый input — просто укажите ему name, чтобы увидеть введённое значение в итоговом массиве $_REQUEST в PHP. Если тэг с названием товара не является частью формы, то у вас 2 варианта отправить данные в PHP из HTML:

      1. Добавить внутрь тэгов form следующий элемент:

      <input type="hidden" name="product_name" value="название_продукта">
      

      Он будет скрытым, т.е. визуально на странице пользователь его не увидит, но текст, содержащийся в value, будет присутствовать в массиве $_REQUEST в PHP в скрипте обработчика формы.

      2. Сделать отправку формы с помощью JavaScript и AJAX запроса, прочитав значение нужного тэга там же и передав его PHP скрипту.

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

  19. Максим

    Извините. Я новичок и много не понимаю. Если не тяжело, объясните все в том коде о вызове значений массива post. Зарание спасибо)

    1. Pashaster Автор

      Добрый вечер 🙂 Отвечу вам на примере, который я написал в ответ одному из подписчиков в ВК паблике. Пользуясь случаем, хочу Вас также пригласить в сообщество, где вы всегда сможете получить ответ на все интересующие вопросы, связанные с разработкой сайтов.

      Итак, пример.

      Допустим, Вам нужно добавить поле для отправки email на контактную форму. Для этого Вы в HTML код формы (между тэгами form) вставляете следующее:

      <input class="form-control text" type="email" data-placeholder="true" name="email" value="Электронная почта *">
      

      Открывающий тэг form расширяете этими атрибутами (или дополняете этими атрибутами, если их не было):

      <form method="POST" action="/email_send.php" ... >
      

      Добавляете в корень сайта файл email_send.php и в нём уже сможете получить email, введённый с HTML формы, в массиве $_POST или $_REQUEST внутри переменной email. Для проверки можете вывести его содержимое на экран следующей конструкцией:

      echo '<pre>'; print_r($_REQUEST); die();
      

      Значение переменной сможете использовать следующим образом в коде:

      $_REQUEST['email']
      

      Надеюсь, понятно объяснил. Если остались вопросы — не стесняйтесь спрашивать 🙂

  20. Игорь

    Здравствуйте. Прочитал статью, очень увлекательно. Хоть ничего и не понял. А попал к вам случайно, ищу в инете как перенести плагин для вордпресс на сайт html. Может здесь подскажете. Есть плагин калькулятор wpcc на его основе сделал калькулятор с большим количеством полей. На сайте с вордпресс все отлично работает, а как мне установить (добавить) этот калькулятор на сайт чистый html. Только здесь вижу что понимаете, на других сайтах или тупая перепечатка или для продвинутых. Мне бы понять с чего начать, если моя идея осуществила.
    Спасибо.

    1. Pashaster Автор

      Добрый день. То, что Вы хотите реализовать, естественно выполнимо 🙂 По сути Вам нужно будет заменить все WordPress-функции (как правило, их имена начинаются с wp_) на аналогичные, написанные на чистом PHP, либо вообще отказаться от их использования.

      Также можете просто найти объявления данных функций в ядре самого WordPress (пройдитесь поиском по файлам вашего ВП сайта) и скопировать их к себе на чистый html-сайт.

      И, да, чуть не забыл. Сайт исключительно на html, естественно, вообще не будет поддерживать никакие WP-функции. На сервере нужен будет установленный PHP. Для максимальной совместимости лучше брать ту версию, с которой совместим ВордПресс плагин (информацию об этом можно найти на странице плагина в официальном каталоге wordpress.org), но если будете переписывать функции заново и хорошо владеете PHP, то лучше брать самую последнюю.

      1. Игорь

        Спасибо за быстрый ответ. Подписался на рассылку, надеюсь узнать много полезного. Сервер бегет, думаю там поддерживается php. Я пробую на опен сервере.
        Плагин заброшен разработчиком, а мне понравился. Он пока работает на последних версиях вордпресс. А вот столкнулся впервые с переносом на html, вернее сам захотел, а инфы кот наплакал. Я как китаец, хорошо умею копировать, было бы с чего и понимание как))) А я, как вы уже догадались, не очень разбираюсь в этом. Я больше по дизайну))) Попробую реализовать это, впереди бессонная ночь. Можно пояснить это — найти объявления данных функций в ядре самого WordPress (пройдитесь поиском по файлам вашего ВП сайта) и скопировать их к себе на чистый html-сайт. Не совсем понятно.

  21. Pashaster Автор

    Смотрите. Цитируя Википедию, функция в программировании — это фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. У функции есть название, тело функции и аргументы.

    Функции описываются в одном месте, а в другом вызываются.

    Вот пример описания функции:

    function wp_comment($args) {
        return implode('and ', $args);
    }
    

    Здесь wp_comment — это название функции, args — название переменной, в которую будут записываться передаваемые при вызове функции аргументы (проще говоря, данные, которые будут обрабатываться функцией). А всё, что находится между фигурными скобками — это тело функции, которое представляет собой код, выполняемый при вызове функции.

    Функции вызываются по имени с указанием аргументов, необходимых для её работы. Вот пример вызов функции в PHP:

    wp_comment([1, 2, 3]);
    

    Данная демо функция в месте её вызова вернёт строку 1 and 2 and 3.

    Возвращаясь к Вашему примеру, вам нужно будет найти в коде модуля вызовы стандартным ВП функций, а затем в коде поиском найти их объявления. И найденные объявления функций Вам нужно будет перенести на свой PHP+HTML сайт в отдельный PHP-файл (для начала можно в index.php, который OpenServer вызывается по умолчанию при вызове доменного имени сайта в браузере).

    Внизу этого файла вставьте скопированное описание функции из WordPress, а затем в коде выше вызовите её, выводя полученные с её помощью данные в HTML, который в обработанном виде будет отображаться браузером.

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

    Надеюсь, Вам ответил.

    1. Игорь

      Понял, что ничего не понял. Уяснил себе, чтобы вести разговор нужно знать хотя бы основы предмета))) Начинаю изучать их. Пока сделал следующее: установил плагин из репозитория на последнюю версию вордпресс, стал (не конфликтует). Скачал себе на комп его, посмотрел внутрь, там 1 файл php (как понимаю основной)+css+js (как встроенные, так и со сторонних библиотек). Я могу писать не языком программиста, прошу прощения. Пройдусь по файлу php и по кодексу вордпресс. Если интересно, что будет дальше, могу оставлять отчеты здесь)))
      Хорошего дня.

  22. Ruslan

    Здравствуйте, я сразу оговорюсь, что я не программист. Так иногда для себя или знакомых стряпаю сайты на пару страничек. В основном без использования php, java так простейшие варианты… Но вот появилось пара вопросов по html и php, java.

    Видел код с одного сайта, там в поле величина value= для «start_time» всегда стоит сегодняшнее время и дата и каждый раз при загрузке странички обновляется. Как это достигается? Полагаю нужен скрипт на js.

    1. Pashaster Автор

      Приветствую 🙂 Если время обновляется в режиме realtime, то то реализуется с помощью JavaScript. Если дата просто присваивается при загрузке страницы, то её получение происходит на бэкенде (PHP например) и это значение вставляется в HTML код, который на бэкенде и рендерится.

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

  23. Ruslan

    Благодарю за быстрый ответ. Если делать рефреш-релод странички то дата обновляется соответственно, тоесть наверное значение вставляется в код, значит скорее всего PHP… Придется к вам обращаться по поводу помощи с програмированием… Это в личку писать cccpblogcom@gmail.com ?

  24. Евгений

    Добрый день! Благодарю Вас за данную информацию! Вы не подскажите, как можно передать из обработчика формы, находящегося в файле с расширением «php», тегу «input», находящемуся в форме обратной связи в файле «index.html», в качестве значения «value» переменную $_SESSION содержащую информацию введенную пользователем в поле»input», находящиеся в форме обратной связи выше упомянутого файла «index.html»? Блин, еле выговорил!)) Надеюсь, что не запутал Вас! Чтобы при перезагрузке страницы введенная пользователем информация (имя, телефон) сохранялась в поле ввода.

    Заранее благодарю.
    С уважением.

    1. Pashaster Автор

      Здравствуйте. Спасибо за отзыв 🙂 Боюсь, что для Вашего случая лучше использовать JavaScript и localstorage вместо PHP и $_SESSION. Повесьте на событие onClick запись данных в localstorage средствами JavaScript, а у инпута в значении атрибута value укажите значение переменной localstorage. Либо, если такового не будет — пустую строку (для самой ервой загрузки, когда данных в хранилище ещё нет).

  25. Visitor

    Здравствуйте! Подскажите а как передать данные через форму кнопки а не через текст. Пример задачи: Тестирование где есть вопрос и несколько вариантов ответа

    1. Pashaster Автор

      Добрый день. Не совсем понял, что значит «передать данные через текст»? В разделе «Как передать массив PHP в HTML?» описан ка раз пример передачи данных через форму кнопки, как Вы выразились 🙂

  26. Евгений

    Здраствуйте!
    Я новичок, масса информации, трудно разобраться.
    Какой инструментарий должен быть применен, чтобы:
    функция пшп include затягивала в место, где она стоит в коде html, тексты из n-ного количества внешних файлов (которые в папке, а не в БД) динамически, т.е. не по загрузке сайта, а по нажатию на соответствующую кнопку или эллемент меню.
    Еще то же, но по другому: страница загружается, посетитель сайта видит ниспадающее меню, кликает по выбранному элементу меню и на этой же странице без перезагрузки в небольшом окошке (как в случае с фреймом) появляется нужный текст. Как это сделать?
    Сессия нужна или нет?
    Запросы Get/Post уместны или не по теме?
    Формы html обязательны или достаточно кнопок?
    Без ajax только js посредством функции document.write можно обойтись?

    1. Pashaster Автор

      Добрый день. По Вашему вопросу — если Вам нужно сделать действие на странице без её перезагрузки, то Вам всего-навсего нужен AJAX 🙂 Не нужно придумывать сложности 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *