Cambiare contenuto senza modificare il layout

  • Creatore Discussione Creatore Discussione lume70
  • Data di inizio Data di inizio

lume70

Nuovo Utente
20 Feb 2013
5
0
0
Salve a tutti sono nuovo del forum e anche novello di php.
Sto cercando di modificare il corpo dela pagina in base al link che si clicca senza modificare il layout attorno (menù e quant'altro)
Ho creato la index.php inserendo nel body:
HTML:
        <li><b><a href="index.php" title="Home">HOME</a></b></li>
	<li><b><a href="?id=1" title="uffici">uffici'</a></b></li>
	<li><b><a href="?id=2" title="prodotti">prodotti</a></b></li>

<?
			switch ($_GET['id']) 
			{ 
		case 1: 
		$scp1 = include_once('script1.html'); 
		echo $scp1; 
		break;
		case 2:
		$scp2 = include_once('script2.html');
		echo $scp2; 
		break;
		default:
		$scp3 = include_once('index.php');
		echo $scp3;
        break; 
		}
		?>

Quando carico l'index.php al centro della pagina mi compare l'errore che id non è definito e c'è l'errore alla linea 135 che corrisponde alla riga switch:
Notice: Undefined index: id in C:\xampp\htdocs\test\index.php on line 135

Quando clicco sui link il caricamento delle pagine viene bene apparte che non mi riconosce le lettere accentate.
Dove sto sbagliando?
 
ciao, puoi risolvere verificando se esiste il parametro prima di usarlo nello switch
PHP:
if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = 0;
}

switch ($id) { 
   ..........
 
ok ho modificato in:
PHP:
if (isset($_GET['id'])) {
    $p = $_GET['id'];
} else {
    $p = 0;
} 
			switch ($id) 
			{ 
		case 1: 
		$scp1 = include_once ('4.html'); 
		echo $scp1; 
		break;
		case 2:
		$scp2 = include_once('3.html');
		echo $scp2; 
		break;
		default:
		$scp3 = include_once('1.html');
		echo $scp3;
        break; 
		}
e ora funziona.
Solo che mi compare un "1" nel corpo di tutte le pagine e nn riesco a capire il perchè. Pure se faccio caricare una pagina bianca.
Se commento tutto lo script php quel 1 non compare. Può essere una variabile che stampa con un echo?

Ho fatto dei controlli e sono proprio gli echo che mi generano quel 1 al centro della pagina.
se non inserisco niente nel default dello switch di fatti non mi carica neppure quel 1.
Però in tutti gli altri casi si. Come posso evitare questo noioso 1?
PHP:
switch ($p) 
			{ 
		case 1: 
		$scp1 = include_once ('4.html'); 
		echo $scp1; 
		break;
		case 2:
		$scp2 = include_once('script2.html');
		echo $scp2;
		break;
		default:
		
        break; 
		}
 
Ultima modifica:
devi armarti di pazienza e cercarlo: di sicuro da qualche parte c'è un 1 dove non dovrebbe
 
In questi casi, di solito, io procedo commentando pezzi di codice via via sempre più piccoli fino ad individuare da dove esce fuori quello che non vorresti per poi capire il motivo. Prova anche tu così.
 
Credo di aver capito dov'è il problema:
PHP:
switch ($p) {
    case 1:
        $scp1 = include_once ('4.html');
        echo $scp1;
        break;

    case 2:
        $scp2 = include_once('script2.html');
        echo $scp2;
        break;
}
Qui includi i file e stampi il risultato dell'inclusione, che è true se i file esistono.
Basta eliminare gli echo, insomma.
 

Discussioni simili