Afficher ou ordonner les éléments HTML avec PHP

Je raffole des petites fonctions ou des scripts PHP tout simples qui en ont sous la botte. Par exemple, à l’aide de deux tableaux Array PHP nous choisirons 1) les balises div à afficher dans notre page web et 2) dans quel ordre. Le but sera de modifier la structure de notre document sans toucher au code HTML. Pour ce faire, il suffira de remplir les string qui vont bien dans l’Array.

Les strings dans l’Array (oui, oui, je sais… ^__^v)

Tout commence par la déclaration des deux Array. Ces tableaux pourront se trouver dans un fichier distinct à inclure avec include_one() :

  • $displayDiv — contient les éléments (div) à afficher,
  • $orderDiv — permet d’ordonner les éléments en question.

    <?php
        $displayDiv = array(
            'sidebar',
            'content'
        );
        $orderDiv = array(
            '0'=>'sidebar',
            '1'=>'content'
        );
    ?>

Une boucle for et quelques if.

  1. Une boucle for englobe l’ensemble du document pour incrémenter la variable $i en fonction du nombre d’éléments contenu dans le tableau $orderDiv,
  2. Nous vérifions pour chaque élément div concerné : sa présence et son numéro d’ordre dans le tableau $orderDiv et sa présence dans le tableau $displayDiv.

    <?php for($i=0;$i<=count($orderDiv);$i++) { ?>
        <?php
            if($orderDiv[$i]=='sidebar' && in_array("sidebar",$displayDiv)) {
        ?>
            <div id="sidebar">
                    <p>Contenu de la sidebar</p>
            </div>
        <?php } ?>
        <?php
            if($orderDiv[$i]=='content' && in_array("content",$displayDiv)) {
        ?>
            <div id="content">
                <p>Contenu du contenu</p>
            </div>
        <?php } ?>
    <?php } ?>

Pour afficher un élément, mettez-le dans le tableau $displayDiv. Pour modifier l’ordre d’affichage des éléments (pour placer #sidebar après #content, par exemple), changez l’ordre des éléments dans le tableau $orderDiv.

Voici la proposition de Josselin qui permet d’optimiser le code présenté plus haut :


    $orderDiv = array(
        '0' => 'sidebar',
        '1' => 'content'
    );
   ksort( $orderDiv ); // Trie le tableau suivant les clefs,
   // la boucle suivante les affichera alors dans l'ordre
   foreach ( $orderDiv as $nameDiv ) {
        include( $nameDiv . '.php' );
    }

Cette méthode implique donc d’avoir une page HTML pour chaque div portant le même nom que cette div pour mieux séparer le code PHP de la structure HTML, soit sidebar.php et content.php dans notre cas.

Stay tuned and mind the gap!