Le HTML peut-il être intégré dans l'instruction PHP «if»?

120

Je voudrais intégrer du HTML dans une instruction PHP if, si c'est même possible, car je pense que le HTML apparaîtrait avant l'instruction PHP if est exécutée.

J'essaye d'accéder à une table dans une base de données. J'ai créé un menu déroulant en HTML qui répertorie toutes les tables de la base de données et une fois que j'ai sélectionné la table dans le menu déroulant, j'ai appuyé sur le bouton Soumettre.

J'utilise la fonction isset pour voir si le bouton de soumission a été enfoncé et lance une boucle en PHP pour afficher le contenu de la table dans la base de données. Donc, à ce stade, j'ai le tableau complet mais je veux exécuter quelques requêtes supplémentaires sur ce tableau. D'où la raison pour laquelle j'essaie d'exécuter plus de HTML dans l'instruction if. En fin de compte, j'essaie de mettre à jour (1 ou plusieurs contenus dans une ligne ou plusieurs lignes) ou de supprimer (1 ou plusieurs lignes) le contenu de la table. Ce que j'essaie de faire, c'est de créer un autre menu déroulant qui correspond à une colonne dans un tableau pour faciliter la recherche dans le tableau et des boutons radio qui correspondent au fait que je souhaite mettre à jour ou supprimer le contenu du tableau.

IMSoP
la source

Réponses:

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

Sur demande, voici elseif et else (que vous pouvez également trouver dans la documentation )

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

C'est si simple.

Le HTML ne sera affiché que si la condition est remplie.

Frank Farmer
la source
"... (que vous pouvez également trouver dans [les documents] [1])" Où sont exactement ces documents dont vous parlez?
gmeben
39

Oui,

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

Oui.

<?  if($my_name == 'someguy') { ?>
        HTML_GOES_HERE
<?  } ?>
le chaos
la source
6
Certains serveurs n'ont pas installé libxml ou pdo_mysql, mais nous pouvons toujours recommander des solutions pour les utiliser.
chaos
2
Je pense que cela aurait dû être juste un commentaire pour la réponse de Jon.
Rimas Kudelis
3
Mmmkay. Vous voulez me dire comment j'intègre exactement du code formaté dans un commentaire?
chaos
3

L'utilisation de balises PHP close / open n'est pas une très bonne solution pour 2 raisons: vous ne pouvez pas imprimer les variables PHP en HTML brut et cela rend votre code très difficile à lire (le bloc de code suivant commence par un crochet de fin }, mais le lecteur a aucune idée de ce qui était avant).

Mieux vaut utiliser la syntaxe heredoc . C'est le même concept que dans d'autres langues (comme 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_TEXTest votre délimiteur (il peut s'agir essentiellement de n'importe quel texte comme EOF, EOT). Tout ce qui se trouve entre est considéré comme une chaîne par PHP comme s'il était entre guillemets, vous pouvez donc imprimer des variables, mais vous n'avez pas à échapper de guillemets, c'est donc très pratique pour imprimer les attributs html.

Notez que le délimiteur de fermeture doit commencer au début de la ligne et le point-virgule doit être placé juste après elle sans aucun autre caractère ( END_OF_TEXT;).

Heredoc avec le comportement de la chaîne entre guillemets simples ( ') est appelé nowdoc . Aucune analyse n'est effectuée à l'intérieur de nowdoc. Vous l'utilisez de la même manière que heredoc, il vous suffit de mettre le séparateur d'ouverture entre guillemets simples - echo <<< 'END_OF_TEXT'.

Marki555
la source
Merci beaucoup de me l'avoir rappelé. Heredoc est extrêmement utile pour les HTML plus complexes avec plusieurs conditions, et beaucoup plus facile que d'échapper des attributs et des guillemets!
UTCWebDev
2

Donc, si la condition est égale à la valeur souhaitée, le document php exécutera "include" et include ajoutera ce document à la fenêtre actuelle par exemple:

»

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

»

Connexion rapide
la source
0
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>
govindak
la source
1
Veuillez ajouter une description à votre réponse.
Parixit
10
La description pourrait être "copier-coller des réponses de 5 ans": P
Erenor Paz
0

Je sais que c'est un ancien message, mais je déteste vraiment qu'il n'y ait qu'une seule réponse ici qui suggère de ne pas mélanger html et php. Au lieu de mélanger le contenu, il faut utiliser des systèmes de modèles ou créer eux-mêmes un système de modèles de base.

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

Dans le html (/path/to/file.html)

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

Le résultat de ceci serait:

Alice ate apples for lunch with Bob.
Bruce
la source