- Home
- Categorie
- Coding e Sistemistica
- PHP
- Variabile indefinita
-
Variabile indefinita
Ciao a tutti, spero che qualcuno mi faccia capire come va fatto questo che sto per descrivervi.
Ho un menu laterale e tramite uno switch vorrei includere delle pagine.
Per metà mi va bene, però quando entro la prima volta mi da un errore:**Notice**: Undefined variable: sezioni in **c:\programmi\easyphp1-8\www\template\gestione\first.php** on line **92** ```Questo è il codice che uso first.php [php] <table border="1" cellpadding="0" cellspacing="0" background="immagini/corpo.jpg" height="207"> <tr> <td height="205" valign="top"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="35" valign="top"> </td> <td width="139" valign="top"> </td> <td width="361" valign="top"> </td> <td width="32" valign="top"> </td> </tr> <tr> <td height="165" valign="top"> </td> <td valign="top"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="20" valign="top"> <img src="immagini/7.jpg" border="0" width="20" height="24"></td> <td width="106" valign="top"> <img src="immagini/8.jpg" border="0" width="106" height="24"></td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif"> <a href="?sezione=menu">Componi il menu</a></font> </td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif"> <a href="?sezione=articoli">inserisci articoli</a></font> </td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif">Offerta del mese</font> </td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif">Inserisci banner</font> </td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif">Cerca articolo</font> </td> </tr> <tr> <td valign="top"> <img src="immagini/12.jpg" border="0" width="20" height="21"></td> <td valign="bottom" background="immagini/13.jpg"> <font size="1" color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif">Modifica il menu</font> </td> </tr> <tr> <td valign="top"> <img src="immagini/17.jpg" border="0" width="20" height="15"></td> <td valign="top"> <img src="immagini/18.jpg" border="0" width="106" height="15"></td> </tr> </table> </td> <td valign="top"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <?php if(isset($_GET['sezione'])) { $sezioni=$_GET['sezione']; } switch($sezioni) { case'menu':include('menu.php'); break; case'articoli':include('articoli.php'); break; default:include('home.php'); } ?> </td> </tr> </table> </td> <td valign="top"> </td> </tr> <tr> <td height="19" valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> <td valign="top"> </td> </tr> </table> </td> </tr> </table> [/php]Grazie tante, ma perché quella notifica? Ciao ciao
-
Prova cosi:
<?php if(isset($_GET['sezione'])) { $sezioni=$_GET['sezione']; switch($sezioni) { case'menu':include('menu.php'); break; case'articoli':include('articoli.php'); break; default:include('home.php'); }
}
?>
-
[...]
Ciao, l'errore è scomparso, ma non visualizza il default dello switch.
Come mai?Ciao
-
Inserisci questo codice all'inizio del tuo script:
[php]$_GET['sezione'] = isset($_GET['sezione']) ? $_GET['sezione'] : '';[/php]
-
Ricorda, anche il default vuole il break...
default:
include('home.php');
break;
-
[...]
Non è che lo "voglia". Si può mettere come anche no, dipende da quello che si vuole ottenere. Nell'esempio specifico, essendo l'ultimo elemento dello switch, si può tranquillamente omettere.
-
Ciao e grazie, visto che va bene mi visualizza il default e non da errori.
Adesso gentilmente potresti spiegarmi cosa ha scritto?
Con l'ultimo pezzo di codice che mi hai dato mi sono perso.
[php]
$_GET['sezione'] = isset($_GET['sezione']) ? $_GET['sezione'] : '';
if(isset($_GET['sezione']))
{
$sezioni=$_GET['sezione'];
switch($sezioni)
{
case'menu':include('menu.php');
break;
case'articoli':include('articoli.php');
break;
default:include('home.php');
}
}
[/php]Grazie
-
$_GET['sezione'] = isset($_GET['sezione']) ? $_GET['sezione'] : '';
Si tratta dell'operatore ternario...
vuol dire:
$_GET['sezione'] = esiste $_GET['sezione'] ? se si, il suo valore sarà $_GET['sezione'] :altrimenti, il valore sarà '', vuoto;
In poche parole, in una riga ti risparmi questo codice:
if(isset($_GET['sezione'])){
}
else
{
$_GET['sezione'] = '';
}
-
[...]
Grazie per la spiegazione è tutto ok adesso.