web-dev-qa-db-fra.com

Si d'autre intégrer dans html

Quelle est la bonne façon d'intégrer les conditions if and elseif dans le langage HTML?

58
user550265

Je recommande la syntaxe suivante pour la lisibilité.

<? if ($condition): ?>
  <p>Content</p>
<? elseif ($other_condition): ?>
  <p>Other Content</p>
<? else: ?>
  <p>Default Content</p>
<? endif; ?>

Remarque: omettre php sur les balises ouvertes nécessite que short_open_tags soit activé dans votre configuration, qui est la valeur par défaut . La syntaxe conditionnelle appropriée sans accolade est toujours activée et peut être utilisée indépendamment de cette directive. 

140
coreyward
<?php if ($foo) { ?>
    <div class="mydiv">Condition is true</div>
<?php } else { ?>
    <div class="myotherdiv">Condition is false</div>
<?php } ?>
33
Tyler Treat

EDIT: Je cherche à noter la réponse de @ Patrick, mais apparemment, StackOverflow pense que ma réputation n'est pas assez bonne. Je pense que c'est une note importante, car les personnes qui débarquent ici veulent apprendre. Si ceci est supprimé car il ne répond pas à la question, qu’il en soit ainsi. Si Patrick peut corriger sa réponse, sa suppression n’est pas préjudiciable.} _

Je vois que c'est une vieille question/réponse, mais elle occupe une place de choix dans la recherche sur Bing. Je suis donc obligée d'ajouter ce commentaire pour les âmes confuses liées à PHP qui atterrissent ici.

Dans la réponse de @Patrick McMahon, le deuxième commentaire ici ($ first_condition est false et $ second_condition est true} _) n'est pas tout à fait exact:

<?php if($first_condition): ?>
  /*$first_condition is true*/
<?php elseif ($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
<?php else: ?>
  /*$first_condition and $second_condition are false*/
<?php endif; ?>

Elseif indique si $ first_condition est vrai ou faux, comme le font les autres déclarations elseif, s'il en existe plusieurs. 

Je ne suis pas un PHP expert, donc je ne sais pas s'il s'agit de la correcte manière de dire SI ce OR que SAUF que ou s'il existe un autre/meilleur façon de le coder en PHP, mais ce serait une distinction importante pour ceux qui recherchent des conditions OR par rapport aux conditions ELSE.

La source est w3schools.com et ma propre expérience.

9
Sparkles
 <?php if (date("H") < "12" && date("H")>"6") { ?>
   src="<?php bloginfo('template_url'); ?>/images/img/morning.gif" 
 <?php } elseif (date("H") > "12" && date("H")<"17") { ?>
 src="<?php bloginfo('template_url'); ?>/images/img/noon.gif" 
  <?php } elseif (date("H") > "17" && date("H")<"21") { ?>
   src="<?php bloginfo('template_url'); ?>/images/img/evening.gif" 
  <?php } elseif (date("H") > "21" && date("H")<"24") { ?>
  src="<?php bloginfo('template_url'); ?>/images/img/night.gif" 
  <?php }else { ?>
  src="<?php bloginfo('template_url'); ?>/images/img/mid_night.gif" 
  <?php } ?>
1
Hitesh Sahu

Vous trouverez plusieurs méthodes différentes que les gens utilisent et ils ont chacun leur place. 

<?php if($first_condition): ?>
  /*$first_condition is true*/
<?php elseif ($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
<?php else: ?>
  /*$first_condition and $second_condition are false*/
<?php endif; ?>

Si dans l'attribut php.ini short_open_tag = true (normalement présent sur line 141 du fichier php.ini par défaut), vous pouvez remplacer votre balise php open de <?php à <?. Ceci n'est pas conseillé, car la plupart des environnements de serveur live ont cette option désactivée (y compris de nombreux CMS tels que Drupal, WordPress et Joomla). J'ai déjà testé des balises ouvertes dans Drupal et confirmé que votre site serait cassé, restez donc fidèle à <?php. short_open_tag n'est pas activé par défaut dans toutes les configurations de serveur et ne doit pas être considéré comme tel lors du développement pour des configurations de serveur inconnues. De nombreuses sociétés d'hébergement ont désactivé short_open_tag.

Une recherche rapide de short_open_tag dans stackExchange montre 830 résultats. https://stackoverflow.com/search?q=short_open_tag .__ C'est beaucoup de gens qui ont des problèmes avec quelque chose avec lequel ils ne devraient tout simplement pas jouer. 

avec certains environnements de serveur et applications, les balises ouvertes php de courte durée planteront toujours votre code, même si short_open_tag est défini sur true.

short_open_tag sera supprimé en PHP6, donc n'utilisez pas de balises main courte.

toutes les futures versions PHP seront abandonnées short_open_tag 

"Il est recommandé depuis plusieurs années de ne pas utiliser le" short cut " Tag plutôt que d'utiliser la combinaison complète . Avec l'utilisation répandue de XML et l'utilisation de ces balises par langues, le serveur peut facilement devenir confus et aboutir à analyser le code erroné dans un contexte erroné. Mais parce que cette version abrégée est une fonctionnalité depuis si longtemps, elle est encore disponible pour le moment compatibilité, mais nous vous recommandons de ne pas les utiliser. " - Jelmer 25 sept. 12 à 9h00 php: "short_open_tag = On" ne fonctionne pas

et

Normalement, vous écrivez PHP comme suit:. Toutefois, si La directive allow_short_tags est activée. Vous pouvez utiliser:. De plus, les balises de tri fournit une syntaxe supplémentaire: which est égal à .

Les balises courtes peuvent sembler cool mais elles ne le sont pas. Ils ne causent que plus problèmes. Oh ... et IIRC ils seront retirés de PHP6 . Crozin a répondu le 24 août 2010 à 22h12 problème php short_open_tag

et

Pour répondre à la question pourquoi, citons le guide de certification de Zend PHP 5: "Les balises courtes étaient, pendant un temps, la norme dans le monde PHP; cependant, Présentent l'inconvénient majeur d'être en conflit avec les en-têtes XML et, par conséquent, Sont quelque peu tombées à l'écart. " - Fluffy 13 avril '11 à 14h40 Les balises PHP courtes sont-elles acceptables?

Vous pouvez également voir des personnes utiliser l'exemple suivant:

<?php if($first_condition){ ?>
  /*$first_condition is true*/
<?php }else if ($second_condition){ ?>
  /*$first_condition is false and $second_condition is true*/
<?php }else{ ?>
  /*$first_condition and $second_condition are false*/
<?php } ?>

Cela fonctionnera mais il est très mal vu, car il n’est pas considéré comme lisible et n’est pas ce pour quoi vous utiliseriez ce format. Si vous aviez un fichier PHP dans lequel vous aviez un bloc de code PHP dans lequel il n'y avait pas de balises incorporées, vous utiliseriez le format de crochet. 

L'exemple suivant montre quand utiliser la méthode crochet

<?php
if($first_condition){
   /*$first_condition is true*/
}else if ($second_condition){
   /*$first_condition is false and $second_condition is true*/
}else{
   /*$first_condition and $second_condition are false*/
}
?>

Si vous faites ce code pour vous-même, vous pouvez faire ce que vous voulez, mais si vous travaillez avec une équipe dans un travail, il est conseillé d'utiliser le format correct pour les circonstances appropriées. Si vous utilisez des crochets dans les scripts html/php incorporés, c’est un bon moyen de se faire renvoyer, car personne ne voudra nettoyer votre code après vous. Les responsables informatiques se soucieront de la lisibilité du code et les professeurs des collèges évalueront la lisibilité.

METTRE &AGRAVE; JOUR

sur la base des commentaires de duskwuff, il n'est toujours pas clair si le raccourci est découragé (selon les normes php) ou non Je mettrai à jour cette réponse au fur et à mesure que j'aurai plus d'informations. Mais sur la base de nombreux documents trouvés sur le Web selon lesquels la sténographie est mauvaise pour la portabilité. Personnellement, je ne l'emploierais toujours pas, car cela ne procure aucun avantage et vous devez vous fier à un paramètre qui n'est pas activé pour tous les hébergeurs. 

0
Patrick W. McMahon