• User Newbie

    Consiglio per evitare if

    Ho uno script strutturato in questo modo:
    un case che in base ad un parametro $_GET richiama diverse funzionalità, il risultato verrà poi stampato nella parte destra della pagina HTML, mentre nella parte a sinistra ho una serie di link tramite i quali scegliere le varie funzionalità.

    
    <?php
    switch ($_GET["function"]) {
    case "abc":
    ... $content=...;
    break;
    case "def":
    ... $content=...;
    break;
    }
    ?>
    <html>
    ...
    <body>
    <div id="col1">
    <ul>
    <li><a href="...">...</a></li>
    <li><a href="...">...</a></li>
    <li><a href="...">...</a></li>
    </ul>
    </div>
    <div id="col2"><?php echo $content?></div>
    </body>
    
    ```Ora tramite css vorrei differenziare le voci del menu', in modo da identificare quella attiva. 
    Solo che l'unico modo per farlo che mi e' venuto in mente è questo:
    

    <?php
    echo '<a ';
    if ($_GET["function"] == "abc")
    echo 'id="active"';
    echo 'href="...">...</a>';
    echo '<a ';
    if ($_GET["function"] == "def")
    echo 'id="active"';
    echo 'href="...">...</a>';
    ...

    C'e' un modo per evitare di spezzare così il codice ed evitare quella fila di if?:wink3:
    Anticipatamente grazie.

  • Moderatore

    nel ciclo case no? 😉


  • User Newbie

    Il fatto è che il case modifica la parte dei contenuti che compaiono a destra, mentre la colonna a sinistra si occupa dei menu'.

    Potrei creare un array con le varia voci dei menu' generale:

    
    menu[0]='<li> <a href="abc">abc</a></li>';
    menu[1]='<li> <a href="abc">abc</a></li>';
    ...
    
    ```E nel case di cui sopra, modifico solo la voce attiva in quel momento:
    

    <?php
    switch ($_GET["function"]) {
    case "abc":
    ... $content=...;
    menu[x]='<li> <a href="abc">abc</a></li>';
    break;
    case "def":
    ... $content=...;
    menu[y]='<li> <a href="abc">def</a></li>';
    break;
    }
    ?>
    <html>
    ...
    <body>
    <div id="col1">
    <ul>
    <?php ... forach e stampo tutte le voci ...?>
    </ul>
    </div>
    <div id="col2"><?php echo $content?></div>
    </body>


  • Moderatore

    nessun arrocchio;

    I cicli servono proprio per eventuali situazioni che si vengono a creare il case più di tutti è utile per le multiscelte e le operazioni legate ad esse 😉