Вызов функции PHP в HTML


Я новичок в Php. Я уверен, что это простая проблема. Я пытаюсь вызвать функцию getDateExpected в тегах моего html-файла. Я хотел бы, чтобы он вернул номер в виде текста, как показано ниже. Как это делается? Я вижу, что php-скрипт будет запущен с использованием какого-либо события, такого как нажатие кнопки, но в этом случае ничего не нажимается. Страница только загружается. Я знаю, что javascript использует {}, но возможно ли это для php или он предназначен только для обработки запросов из формы?

<?php
    //include "landing.php";
    function getDateExpected($desired){
      $date = date ("d");
      if($date << $desired){
        echo $desired - $date;
      }else{
        echo $date-$desired;
      }
    }

?>

<!DOCTYPE html>
<html>
<title>Coming Soon</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<style>
body,h1 {font-family: "Raleway", sans-serif}
body, html {height: 100%}
.bgimg {
    background-image: url('obg.png');
    min-height: 100%;
    background-position: center;
    background-size: cover;
}
</style>
<body>

<div class="bgimg w3-display-container w3-animate-opacity w3-text-white">
  <div class="w3-display-topleft w3-padding-large w3-xlarge">
    Potion
  </div>
  <div class="w3-display-middle">
    <h1 class="w3-jumbo w3-animate-top">COMING SOON</h1>
    <hr class="w3-border-grey" style="margin:auto;width:40%">
    <p class="w3-large w3-center">getDateExpected(21) days left</p>
  </div>
  <div class="w3-display-bottomleft w3-padding-large">
    <a href="http://www.twitter.com/" target="_blank">Adrian</a>
  </div>
</div>

</body>
</html>
Author: Funk Forty Niner, 2016-11-20

3 answers

" Спасибо тебе за помощь, Фред! Вы полностью ответили и рассмотрели все вопросы, но, к сожалению, я не смог выбрать ваш ответ, так как это был всего лишь комментарий): Если вы дадите правильный ответ, я выберу ваш как правильный для будущих посетителей, которые захотят лучшего понимания – AdrianDevera"

(Это поздний ответ, чтобы полностью описать сбой кода, и в соответствии с просьбой OP опубликовать его):

Есть несколько проблемы с кодом, который вы опубликовали.

Давайте рассмотрим их один за другим:

if($date << $desired)

Символы << (в PHP, видя в комментариях, что вы из фона C) являются побитовым оператором и не будут делать то, что вы от них ожидаете, как в "проверьте, если дата меньше x"
(< меньше, чем):

if($date < $desired)

Тогда у нас есть это:

<p class="w3-large w3-center">getDateExpected(21) days left</p>

Функция getDateExpected() для нее не завернута в теги php <?php ?>, поэтому он никогда не вызывается/не выполняется, сейчас это просто строка; посмотрев на свой HTML-источник, вы бы увидели именно это, вместе с непроверенным PHP-кодом.

Поэтому измените его на следующее:

<p class="w3-large w3-center"><?php getDateExpected(21) ;?> days left</p>

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

" также убедитесь, что вы используете это в среде php с установленным веб-сервером и используете соответствующее расширение для анализа директив php."

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

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

Чтобы запустить это в среде php и на реальном (локальном) сервере, синтаксис:

  • http://localhost/file.php в отличие от file:///file.xxx
 4
Author: Funk Forty Niner, 2017-05-23 12:09:07

Как прокомментировал Фред-ii, вам нужно изменить теги PHP

<p class="w3-large w3-center">getDateExpected(21) days left</p>

К этому

<p class="w3-large w3-center"><?php getDateExpected(21);?> days left</p>

И измените это

  if($date << $desired)

К этому

if($date < $desired)
 2
Author: Davit Gabrielyan, 2016-11-20 19:18:27

Ваш веб-сервер пытается выполнить .html как статическую страницу, потому что это расширение не связано с языком PHP и, следовательно, не анализируется с помощью движка PHP. Для этого вам нужно будет убедиться, что страница имеет расширение .php (связанное с движком PHP).
Поскольку вы хотите выполнить страницу .html вместо этого, вы можете активировать перезапись мода на своем веб-сервере.
Если вы используете Apache, вы можете сделать это, следуя инструкциям здесь.
Тогда ты хотите дать указание Apache перенаправлять все запросы *.html в соответствующий файл *.php, не показывая браузеру реальное расширение (.php). Для этого вы можете следовать инструкциям в здесь. Таким образом, пользователь введет в свой браузер URL-адрес http://www.example.com/foo.html и веб-сервер, как только получит запрос GET для файла foo.html, будет соответствовать соответствующему скрипту .php (с тем же именем, другим расширением) и автоматически выполнит страницу foo.php с помощью PHP, не показывая браузеру пользователя изменение URL-адреса.

 1
Author: itwebdeveloper, 2016-11-20 20:38:38