- Home
- Categorie
- Coding e Sistemistica
- PHP
- If case, come si usa?
-
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.
-
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]
-
E se hai bisogno ecco il link alla documentazione ufficiale di php per il costrutto switch(): php.net/manual/en/control-structures.switch.php
-
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
-
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?
-
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.