Чи можна вбудувати HTML у висловлювання PHP "якщо"?


120

Я хотів би вставити HTML всередині PHP, якщо заява, якщо це навіть можливо, тому що я думаю, що HTML з'явиться перед PHP, якщо оператор виконується.

Я намагаюся отримати доступ до таблиці в базі даних. Я створив спадне меню в HTML, яке перераховує всі таблиці в базі даних, і як тільки я вибираю таблицю зі спадного меню, натискаю кнопку подання.

Я використовую функцію isset, щоб перевірити, чи натиснута кнопка подання та запустіть цикл у PHP для відображення вмісту таблиці в базі даних. Тож у мене зараз є повна таблиця, але я хочу запустити ще кілька запитів у цій таблиці. Отже, я намагаюся виконати більше HTML всередині оператора if. Зрештою, я намагаюся або оновити (1 або більше вмісту в рядку або кілька рядків) або видалити (1 або більше рядків) вміст у таблиці. Що я намагаюся зробити, це створити ще одне спадне меню, яке відповідало стовпцю в таблиці, щоб спростити пошук таблиці та радіо кнопки, які відповідають тому, чи хотів би я оновити чи видалити вміст у таблиці.


3
Дивіться тут рішення php.net/manual/en/control-structures.alternative-syntax.php
puk

Відповіді:


371
<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php endif; ?>

За запитом, ось elseif та else (що ви також можете знайти в документах )

<?php if($condition) : ?>
    <a href="http://yahoo.com">This will only display if $condition is true</a>
<?php elseif($anotherCondition) : ?>
    more html
<?php else : ?>
    even more html
<?php endif; ?>

Це так просто.

HTML відображатиметься лише в тому випадку, якщо умова виконана.


"... (що ви також можете знайти в [docs] [1])" Де саме ці документи ви говорите?
gmeben


15

Так.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>

6
На деяких серверах не встановлено libxml або pdo_mysql, але ми все одно можемо рекомендувати рішення щодо їх використання.
хаос

2
Я думаю, що це повинен був бути лише коментарем для відповіді Джона.
Rimas Kudelis

3
Мммкай. Ви хочете сказати мені, як саме я вставив відформатований код у коментар?
хаос

3

Використання тегів PHP close / open - це не дуже вдале рішення з двох причин: ви не можете друкувати змінні PHP у простому HTML, і це робить ваш код дуже важким для читання (наступний блок коду починається з кінцевої дужки }, але читач має поняття не маю, що було раніше).

Краще використовувати синтаксис heredoc . Це те саме поняття, що і в інших мовах (як bash).

 <?php
 if ($condition) {
   echo <<< END_OF_TEXT
     <b>lots of html</b> <i>$variable</i>
     lots of text...
 many lines possible, with any indentation, until the closing delimiter...
 END_OF_TEXT;
 }
 ?>

END_OF_TEXTє вашим роздільником (це може бути в основному будь-який текст, наприклад EOF, EOT). PHP вважає, що між ними рядки є як би в подвійних лапках, тому ви можете друкувати змінні, але вам не потрібно уникати жодних лапок, тому це дуже зручно для друку HTML-атрибутів.

Зауважте, що розділювач, що закривається, повинен починатися на початку рядка, а крапка з комою повинна бути розміщена відразу після нього, без інших символів ( END_OF_TEXT;).

Гередок з поведінкою рядка в одинарних лапках ( ') називається nowdoc . Ніякий аналіз не робиться всередині nowdoc. Ви використовуєте його так само, як і heredoc, просто ви ставите початковий роздільник в одинарні лапки - echo <<< 'END_OF_TEXT'.


Дуже дякую, що нагадали про це. Heredoc надзвичайно корисний для складнішого HTML з кількома умовами та набагато простіше, ніж уникнути атрибутів та цитат!
UTCWebDev

2

Отже, якщо умова дорівнює значенню, яке ви хочете, тоді документ php запустить "включити", а включити додасть цей документ у поточне вікно, наприклад:

`

<?php
$isARequest = true;
if ($isARequest){include('request.html');}/*So because $isARequest is true then it will include request.html but if its not a request then it will insert isNotARequest;*/
else if (!$isARequest) {include('isNotARequest.html')}
?>

`


0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>

1
Будь ласка, додайте опис до своєї відповіді.
Parixit

10
Опис може бути "копіювати-вставляти відповіді на 5 років": P
Еренор Пас

0

Я знаю, що це стара публікація, але я дуже ненавиджу, що тут є лише одна відповідь, яка пропонує не змішувати html та php. Замість змішування вмісту слід використовувати шаблонні системи або створювати базову систему шаблонів самостійно.

У php

<?php 
  $var1 = 'Alice'; $var2 = 'apples'; $var3 = 'lunch'; $var4 = 'Bob';

  if ($var1 == 'Alice') {
    $html = file_get_contents('/path/to/file.html'); //get the html template
    $template_placeholders = array('##variable1##', '##variable2##', '##variable3##', '##variable4##'); // variable placeholders inside the template
    $template_replace_variables = array($var1, $var2, $var3, $var4); // the variables to pass to the template
    $html_output = str_replace($template_placeholders, $template_replace_variables, $html); // replace the placeholders with the actual variable values.
  }

  echo $html_output;
?>

У html (/path/to/file.html)

<p>##variable1## ate ##variable2## for ##variable3## with ##variable4##.</p>

Результатом цього буде:

Alice ate apples for lunch with Bob.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.