web-dev-qa-db-fra.com

HTML peut-il être intégré à l'intérieur? PHP "si" déclaration?

J'aimerais incorporer le code HTML dans une instruction PHP si, si cela est même possible, car je pense que le code HTML apparaîtrait avant l'instruction PHP si l'instruction est exécutée. 

J'essaie 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 cliqué sur le bouton Soumettre. 

J'utilise la fonction isset pour voir si le bouton d'envoi a été enfoncé et exécuter une boucle dans PHP pour afficher le contenu de la table dans la base de données. Donc, à ce stade, j'ai la table complète mais je veux lancer quelques requêtes supplémentaires sur cette table. D'où la raison pour laquelle j'essaye 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 est de créer une autre liste déroulante qui correspond à une colonne dans un tableau pour faciliter la recherche dans le tableau et des boutons radio qui correspondent à la question de savoir si je souhaite mettre à jour ou supprimer le contenu du tableau. 

101
donalg d
<?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 les docs )

<?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 code HTML ne sera affiché que si la condition est remplie.

323
Frank Farmer

Oui, 

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

Oui.

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

Utiliser les balises close/open PHP n’est pas une très bonne solution pour deux raisons: vous ne pouvez pas imprimer les variables PHP en HTML simplifié et rendre le code très difficile à lire (le prochain bloc de code commence par un crochet de fin }, mais le lecteur n’a aucune idée de ce qui était auparavant).

Mieux vaut utiliser heredoc syntax. C'est le même concept que dans d'autres langages (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_TEXT est votre délimiteur (il peut s'agir de n'importe quel texte comme EOF, EOT). Tout ce qui est entre les deux est considéré comme une chaîne par PHP comme s'il s'agissait de guillemets. Vous pouvez donc imprimer des variables, sans avoir à échapper de guillemets, ce qui est très pratique pour imprimer des attributs HTML.

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

Heredoc avec un comportement de chaîne entre guillemets simples (') est appelé nowdoc. Aucune analyse n'est effectuée dans 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'.

2
Marki555

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

`

1
Fast Login

Je sais que ceci est un ancien post, mais je déteste vraiment qu’il n’y ait qu’une réponse qui suggère de ne pas mélanger HTML et PHP. Au lieu de mélanger du contenu, il convient d'utiliser des systèmes de modèles ou de 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.
0
Bruce
<?php if ($my_name == 'aboutme') { ?>
    HTML_GOES_HERE
<?php } ?>
0
govindak