web-dev-qa-db-de.com

Kann HTML eingebettet werden? PHP "Wenn" -Anweisung?

Ich möchte HTML in eine PHP if -Anweisung einbetten, wenn es überhaupt möglich ist, da ich denke, HTML würde vor der PHP erscheinen, wenn die Anweisung ausgeführt wird. 

Ich versuche, auf eine Tabelle in einer Datenbank zuzugreifen. Ich habe ein Pulldown-Menü in HTML erstellt, das alle Tabellen in der Datenbank auflistet. Sobald ich die Tabelle aus dem Pulldown-Menü auswähle, drücke ich auf die Schaltfläche zum Senden. 

Ich verwende die isset-Funktion, um zu sehen, ob der Submit-Button gedrückt wurde, und in PHP eine Schleife auszuführen, um den Inhalt der Tabelle in der Datenbank anzuzeigen. Zu diesem Zeitpunkt habe ich die vollständige Tabelle, möchte jedoch einige weitere Abfragen für diese Tabelle ausführen. Aus diesem Grund versuche ich, mehr HTML in der if-Anweisung auszuführen. Letztendlich versuche ich entweder (1 oder mehr Inhalte in einer Zeile oder in mehreren Zeilen) zu aktualisieren oder (1 oder mehr Zeilen) Inhalte in der Tabelle zu löschen. Ich versuche, ein weiteres Pulldown-Objekt zu erstellen, das einer Spalte in einer Tabelle entspricht, um die Tabellensuche zu vereinfachen und die entsprechenden Optionsfelder zu aktivieren, ob ich den Inhalt der Tabelle aktualisieren oder löschen möchte. 

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

Auf Wunsch hier die elseif und else (die Sie auch in the docs finden)

<?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; ?>

So einfach ist das.

Das HTML wird nur angezeigt, wenn die Bedingung erfüllt ist.

323
Frank Farmer

Ja, 

<?php
if ( $my_name == "someguy" ) {
    ?> HTML GOES HERE <?php;
}
?>
35
jgallant

Ja.

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

Die Verwendung der close/open-Tags von PHP ist aus zwei Gründen keine sehr gute Lösung: Sie können PHP -Variablen nicht in reinem HTML-Code drucken und machen den Code sehr schwer lesbar (der nächste Codeblock beginnt mit eine Endklammer }, aber der Leser hat keine Ahnung, was vorher war).

Besser ist die Verwendung von heredoc . Es ist das gleiche Konzept wie in anderen Sprachen (wie 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 ist Ihr Trennzeichen (es kann grundsätzlich jeder Text wie EOF, EOT sein). Alles dazwischen wird von PHP als Zeichenfolge betrachtet, als wäre es in doppelte Anführungszeichen gesetzt. Sie können also Variablen drucken. Sie müssen jedoch keine Anführungszeichen verwenden, um HTML-Attribute zu drucken.

Beachten Sie, dass das schließende Trennzeichen am Anfang der Zeile beginnen muss und das Semikolon direkt hinter dem Zeichen ohne weitere Zeichen (END_OF_TEXT;) stehen muss.

Heredoc mit dem Verhalten von Zeichenfolgen in einfachen Anführungszeichen (') heißt nowdoc. In nowdoc wird keine Analyse durchgeführt. Sie verwenden es genauso wie heredoc, Sie setzen nur den Anfangstrenner in einfache Anführungszeichen - echo <<< 'END_OF_TEXT'.

2
Marki555

Wenn die Bedingung dem gewünschten Wert entspricht, wird das PHP-Dokument "include" Ausgeführt, und include fügt dieses Dokument dem aktuellen Fenster .__ hinzu. Zum Beispiel:

`

<?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')}
?>

`

1
Fast Login

Ich weiß, dass dies ein alter Beitrag ist, aber ich hasse es wirklich, dass es hier nur eine Antwort gibt, die vorsieht, HTML und PHP nicht zu mischen. Anstatt Inhalte zu mischen, sollte man Schablonensysteme verwenden oder selbst ein einfaches Schablonensystem erstellen.

In der 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;
?>

In der HTML-Datei (/path/to/file.html)

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

Die Ausgabe davon wäre:

Alice ate apples for lunch with Bob.
0
Bruce
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>
0
govindak