- Home
- Categorie
- Coding e Sistemistica
- Coding
- 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.