86 votes

Sinon, intégration dans le html

Quelle est la manière correcte d'intégrer des conditions if else et elseif dans un fichier html ?

0 votes

Tu es sûr que tu ne veux pas dire le contraire ?

181voto

coreyward Points 26109

Je recommande la syntaxe suivante pour plus de lisibilité.

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

Note, omettre php sur les étiquettes ouvertes exige que short_open_tags est activé dans votre configuration, qui est la valeur par défaut . La syntaxe conditionnelle sans accolades est toujours activée et peut être utilisée indépendamment de cette directive.

5 votes

Dans cet exemple, il manque le "PHP" dans les déclarations.

3 votes

@AdamYoungers Ces balises sont appelées short_open_tags, et bien que vous ne les connaissiez peut-être pas, elles sont parfaitement valables.

4 votes

Je ne les connaissais pas. J'ai essayé d'utiliser la méthode ci-dessus et ma page s'est cassée. Une recherche rapide et je vois que vous devez activer ceci dans votre fichier php.ini... stackoverflow.com/questions/2185320/

49voto

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

24voto

Sparkles Points 331

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

<?php if($first_condition): ?>
  /*$first_condition is true*/
  <div class="first-condition-true">First Condition is true</div>
<?php elseif($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
  <div class="second-condition-true">Second Condition is true</div>
<?php else: ?>
  /*$first_condition and $second_condition are false*/
  <div class="first-and-second-condition-false">Conditions are false</div>
<?php endif; ?>

Elseif brûle si $first_condition est vrai ou faux, tout comme les autres elseif s'il y en a plusieurs.

Je ne suis pas un expert en PHP, donc je ne sais pas si c'est le cas. correct manière de dire SI cela OU que ELSE que ou s'il existe une autre/meilleure façon de le coder en PHP, mais ce serait une distinction importante pour ceux qui recherchent des conditions OR par rapport à des conditions ELSE.

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

3voto

Vous trouverez de multiples méthodes différentes que les gens utilisent et elles ont chacune 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 votre attribut php.ini short_open_tag = true (on le trouve normalement sur line 141 du fichier php.ini par défaut) vous pouvez remplacer votre balise php open de <?php a <? . Ce n'est pas conseillé car cette fonction est désactivée dans la plupart des environnements de serveurs actifs (y compris de nombreux CMS comme Drupal, WordPress et Joomla). J'ai déjà testé les balises ouvertes à main courte dans Drupal et j'ai confirmé qu'elles détruiraient votre site. <?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 short_open_tag éteint.

Une recherche rapide sur short_open_tag dans stackExchange montre 830 résultats. https://stackoverflow.com/search?q=short_open_tag Ça fait beaucoup de gens qui ont des problèmes avec quelque chose avec lequel ils ne devraient pas jouer.

_avec certains environnements de serveur et certaines applications, les balises ouvertes php raccourcies planteront toujours votre code même avec short_open_tag réglé sur true ._

short_open_tag sera supprimée en PHP6, alors n'utilisez pas de balises courtes.

toutes les futures versions de PHP seront abandonnées short_open_tag

"Il est recommandé depuis plusieurs années de ne pas utiliser le raccourci l'étiquette courte "short cut" et d'utiliser plutôt l'étiquette complète complète. Avec la généralisation de l'utilisation de XML et l'utilisation de ces balises par d'autres et finir par analyser le mauvais code dans le mauvais contexte. Mais comme ce raccourci est une fonctionnalité depuis si longtemps, il est actuellement encore supporté pour des raisons de rétrocompatibilité, mais nous vous recommandons de ne pas l'utiliser. les utiliser". [ ] php : "short_open_tag = On" ne fonctionne pas

et

Normalement, vous écrivez PHP comme ceci : . [ ] allow_short_tags est activée, vous pouvez utiliser : . De plus, les balises de tri fournissent une syntaxe supplémentaire : qui est égal à .

Les balises courtes peuvent sembler cool mais elles ne le sont pas. Elles ne causent que plus de problèmes. Oh... et je crois qu'elles seront supprimées de PHP6. [...] php problème de short_open_tag

et

Pour répondre à la partie "pourquoi", je citerais Ze "Les balises courtes ont été, pendant un temps, le standard dans le monde PHP ; cependant, elles ont l'inconvénient majeur d'entrer en conflit avec les en-têtes XML et, par conséquent, elles sont quelque peu tombées en désuétude." - Fluffy 13 avr. '11 [ ] Les balises courtes PHP peuvent-elles être utilisées ?

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 peut fonctionner, mais c'est très mal vu, car ce n'est pas considéré comme lisible et ce n'est pas pour cela que vous utilisez ce format. Si vous avez un fichier PHP où vous avez un bloc de code PHP qui n'a pas de balises intégrées, vous utiliserez le format entre crochets.

L'exemple suivant montre quand utiliser la méthode des crochets.

<?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 à un poste, il est conseillé d'utiliser le format correct pour les circonstances correctes. Si vous utilisez des parenthèses dans des scripts html/php intégrés, c'est un bon moyen de se faire virer, car personne ne voudra nettoyer votre code après vous. Les patrons de l'informatique se soucieront de la lisibilité du code et les professeurs d'université notent sur la lisibilité.

UPDATE

d'après les commentaires de duskwuff, on ne sait toujours pas si la sténographie est déconseillée (par les normes php) ou non. Je mettrai à jour cette réponse dès que j'aurai plus d'informations. Mais sur la base de nombreux documents trouvés sur le web sur la sténographie étant mauvais pour la portabilité. Personnellement, je ne l'utiliserais toujours pas car elle ne donne aucun avantage et vous devez compter sur un paramètre qui n'est pas activé chez tous les hébergeurs.

3voto

Hitesh Sahu Points 12561
 <?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 } ?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X