Kann HTML in die PHP-if-Anweisung eingebettet werden?

120

Ich möchte HTML in eine PHP-if-Anweisung einbetten, wenn dies überhaupt möglich ist, da ich denke, dass der HTML-Code vor der PHP-if-Anweisung angezeigt wird.

Ich versuche, auf eine Tabelle in einer Datenbank zuzugreifen. Ich habe ein Pulldown-Menü in HTML erstellt, in dem alle Tabellen in der Datenbank aufgelistet sind. Sobald ich die Tabelle aus dem Pulldown ausgewählt habe, drücke ich auf die Schaltfläche "Senden".

Ich benutze die isset-Funktion, um zu sehen, ob die Senden-Schaltfläche gedrückt wurde, und führe eine Schleife in PHP aus, um den Inhalt der Tabelle in der Datenbank anzuzeigen. An diesem Punkt habe ich also die vollständige Tabelle, aber ich möchte noch einige Abfragen für diese Tabelle ausführen. Daher versuche ich, mehr HTML in der if-Anweisung auszuführen. Letztendlich versuche ich, Inhalte in der Tabelle entweder zu aktualisieren (1 oder mehr Inhalte in einer Zeile oder mehrere Zeilen) oder zu löschen (1 oder mehrere Zeilen). Ich versuche, ein weiteres Pulldown-Menü zu erstellen, das einer Spalte in einer Tabelle entspricht, um die Tabellensuche zu vereinfachen, und Optionsfelder, die der Frage entsprechen, ob ich Inhalte in der Tabelle aktualisieren oder löschen möchte.

IMSoP
quelle

Antworten:

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

Auf Anfrage finden Sie hier elseif und else (die Sie auch in den Dokumenten finden können ).

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

Der HTML-Code wird nur angezeigt, wenn die Bedingung erfüllt ist.

Frank Farmer
quelle
"... (die Sie auch in [den Dokumenten] [1] finden können)" Wo genau sind diese Dokumente, von denen Sie sprechen?
Gmeben
39

Ja,

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

Ja.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>
Chaos
quelle
6
Auf einigen Servern ist libxml oder pdo_mysql nicht installiert, wir können jedoch weiterhin Lösungen empfehlen, die diese verwenden.
Chaos
2
Ich denke, das hätte nur ein Kommentar für Jons Antwort sein sollen.
Rimas Kudelis
3
Mmmkay. Sie möchten mir sagen, wie genau ich formatierten Code in einen Kommentar einbette?
Chaos
3

Die Verwendung von PHP-Tags zum Schließen / Öffnen ist aus zwei Gründen keine sehr gute Lösung: Sie können PHP-Variablen nicht in einfachem HTML drucken und Ihr Code ist sehr schwer zu lesen (der nächste Codeblock beginnt mit einer Endklammer } , der Reader jedoch keine Ahnung was vorher war).

Besser ist es, die Heredoc- Syntax zu verwenden. 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_TEXTist Ihr Trennzeichen (es kann grundsätzlich jeder Text wie EOF, EOT sein). Alles dazwischen wird von PHP als Zeichenfolge betrachtet, als ob es in doppelten Anführungszeichen wäre, sodass Sie Variablen drucken können, aber keine Anführungszeichen vermeiden müssen, was für das Drucken von HTML-Attributen sehr praktisch ist.

Beachten Sie, dass das schließende Trennzeichen am Zeilenanfang beginnen muss und das Semikolon direkt danach ohne weitere Zeichen platziert werden muss (END_OF_TEXT; ) platziert werden muss.

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

Marki555
quelle
Vielen Dank, dass Sie mich daran erinnert haben. Heredoc ist äußerst hilfreich für komplexeres HTML mit mehreren Bedingungen und viel einfacher als das Entkommen von Attributen und Anführungszeichen!
UTCWebDev
2

Wenn also die Bedingung dem gewünschten Wert entspricht, führt das PHP-Dokument "include" aus 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')}
?>

`

Schnelle Anmeldung
quelle
0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>
Govindak
quelle
1
Bitte fügen Sie Ihrer Antwort eine Beschreibung hinzu.
Parixit
10
Beschreibung könnte "Kopieren-Einfügen von 5 Jahre alten Antworten" sein: P
Erenor Paz
0

Ich weiß, dass dies ein alter Beitrag ist, aber ich hasse es wirklich, dass es hier nur eine Antwort gibt, die vorschlägt, HTML und PHP nicht zu mischen. Anstatt Inhalte zu mischen, sollten Sie Vorlagensysteme verwenden oder selbst ein grundlegendes Vorlagensystem 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 (/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.
Bruce
quelle