• User

    If case, come si usa?

    Salve,
    premetto che, di programmazione PHP, so veramente pochissimo (non so neanche se è la sezione giusta.. in caso prego i mod di spostare), ma ho deciso di cimentarmi ugualmente nella gestione di un sito web.

    Dunque, ecco il mio problema: voglio fare in modo che alcune voci dei menu del sito cambino in base alla pagina in cui mi trovo (o in base al fatto se nell'url è presente o meno una certa parola.. è possibile?). Suppongo serva un If Case con impostati i parametri di $currentpage, o cose del genere, ma non ho la minima idea di come si faccia.

    Spero possiate aiutarmi,
    grazie a tutti.


  • ModSenior

    Potresti fare una cosa del genere...

    Proprio nel punto in cui devi inserire il codice html del menu...

    [php]switch ($currentpage) {
    case "home":
    ?>
    .......... CODICE MENU HTML PER HOME
    <?php
    break;
    case "contatti":
    ?>
    .......... CODICE MENU HTML PER CONTATTI
    <?php
    break;
    }[/php]


  • User

    E se hai bisogno ecco il link alla documentazione ufficiale di php per il costrutto switch(): php.net/manual/en/control-structures.switch.php


  • ModSenior

    Ciao OniLink,

    non sò di preciso cosa devi fare, ma generalmente è più facile venga usato l'if in questi casi, tutto dipende da cosa devi fare di preciso.
    php.net/manual/en/control-structures.if.php


  • User

    Uhm grazie a tutti per le risposte ragazzi. Ho letto un po' della guida ma, non conoscendo nulla di linguaggio php, mi risulta difficile adeguare l'operazione alle mie esigenze.

    Mi spiego bene: voglio fare in modo che, se, ad esempio, nell'indirizzo corrente è presente la parola "mela", non importa dove o in che posizione, allora appaia un certo tipo di menu.
    Se, invece, è presente la parola "cane", ne appaia un altro, e così via.

    È possibile?


  • User

    Si, possibile è possibile. Diciamo che, personalmente, il fatto che non si curi di dove debba essere la parola che cerca non mi piace...

    Il codice dovrebbe essere così:
    [php]

    // se la posizione della stringa "mela" nell'URL della pagina è diverso
    // ( sia per valore che per tipo ) da false
    if ( strpos($_SERVER["REQUEST_URI"], "mela") !== false ) {
    // stampa menu "mela"
    }
    // altrimenti se la posizione della stringa "cane" ...
    else if strpos($_SERVER["REQUEST_URI"], "cane") !== false ) {
    // stampa menu "cane"
    }
    // altrimenti se ...
    // altrimenti se ...
    [/php]Il codice usa la variabile predefinita di PHP $_SERVER, con il parametro "REQUEST_URI" per ottenere l'URL usata per raggiungere la pagina.
    Poi controlla che al suo interno in qualsiasi posizione ci sia la stringa che si vuole ( funzione strpos() php.net/manual/en/function.strpos.php ).
    Fai attenzione solo al
    [php]strpos(...) !== false[/php]Questo perchè, da documentazione di PHP, se la posizione della stringa che cerchi fosse 0 ( ossia all'inizio della stringa ) PHP lo interpreterebbe come false. In questo modo lui controlla che oltre ad essere un valore uguale, lo sia anche nel tipo ( strpos ritorna un int, false è invece un booleano php.net/manual/en/language.operators.comparison.php ).

    Ti ripeto però che il fatto che la stringa possa essere in qualsiasi posizione nell'URL potrebbe crearti qualche problema.

    Altra cosa su cui fare attenzione: se le condizioni sono esclusive tra loro ( ossia se una volta che hai trovato una stringa le altre non ti interessano più ) è importante usare il costrutto
    [php]if ()
    else if ()
    else if ()
    ...[/php]perchè altrimenti fai fare al server un sacco di lavoro inutile. Ossia se hai trovato mela, non cerchi più le altre stringhe.
    Se invece usi
    [php]if()
    if ()
    if()
    ...[/php]Non importa che tu abbia trovato una stringa, lui cerca nell'URL tutte le stringhe.