Можно ли встроить HTML в оператор «if» PHP?


120

Я хотел бы встроить HTML в оператор if PHP, если это вообще возможно, потому что я думаю, что HTML появится перед оператором if 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 будет отображаться только в том случае, если условие выполнено.


«... (которые вы также можете найти в [документах] [1])» Где именно эти документы вы говорите?
gmeben


15

Да.

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

6
На некоторых серверах не установлены libxml или pdo_mysql, но мы все же можем рекомендовать решения, использующие их.
хаос

2
Я думаю, это должно было быть просто комментарием к ответу Джона.
Римас Куделис

3
Mmmkay. Вы хотите рассказать мне, как именно я вставляю форматированный код в комментарий?
хаос

3

Использование тегов закрытия / открытия PHP не очень хорошее решение по двум причинам: вы не можете печатать переменные 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;).

Heredoc с поведением строки в одинарных кавычках ( ') называется nowdoc . Внутри nowdoc анализ не производится. Вы используете его так же, как и heredoc, только вы помещаете открывающий разделитель в одинарные кавычки - echo <<< 'END_OF_TEXT'.


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

2

Итак, если условие равно желаемому значению, тогда php-документ будет запускать "include", а include добавит этот документ в текущее окно, например:

`

<?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
Erenor Paz

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.