Newsgroup: it.comp.www.php
Titolo: Banale ma... non va!

Salve a tutti,
    è solo da qualche giorno che ho cominciato ad imparare qualcosa su php
ed ecco le prime difficoltà su cose apparentemente semplici :-) come del
resto accade spesso quando si inizia...
vengo al dunque:
la sintassi seguente in una pagina di esempio index.php dovrebbe restituirmi
al suo interno il contenuto dei singoli include a seconda che la carichi con
il relativo riferimento "index.php?page=x" con x uguale a main, navbar o
top, giusto?
if ($page==main) {
include("main.inc");
} else if ($page=="navbar") {
include("navbar.inc");
} else if ($page=="top") {
include("top.inc");
} else {
include("home.inc");
}
Ebbene ciò non accade, ma bensì vedo sempre e comunque la condizione finale
include("home.inc") come se tutte le altre fossero false o come se caricassi
sempre index.php
I files sono tutti nella stesa cartella e per le prove ho usato Apache 2.028
su win 2000 pro, php 4.1.1
Provando un comando include normale senza condizioni tutto funziona
tranquillamente.
    Un grazie anticipato a chi mi saprà dare qualche indicazione.
Saluti, Mauro.

 if ($page==main) {
quindi va fatto cosi':
if ($page == "main")
bye

non ci sono virgolette nel primo if, e si scrive elseif tutto attaccato, ma
forse sono errori di digitazione, perchč avresti ottenuto altri errori.
innanzitutto 2 consigli: in questo caso potresti usare uno Switch, che č un
po' piů snello:
Switch ($page) {
Case "main":
include("main.inc");
break;
Case "navbar":
include("navbar.inc")
break;
....
default:
include (home.inc");
break;
}
poi, se passi anche page=home potresti scrivere:
include ("$page.inc");
oppure, se vuoi che home.inc venga incluso se non passi nessun valore:
If ($page) {
include ("$page.inc");
} else {
include ("home.inc");
}
per la sintassi che hai scritto tu, penso di sapere qual č l'errore, ma
adesso non riesco a ragionarci su :)) a quest'ora riesco solo a produrre
output, e parso poco :))
ciao

mi correggo... si può scrivere anche else if (pardon)
dal manuale:
<In PHP è possibile scrivere 'else if' (due parole) e il significato sarà lo
stesso di 'elseif' (una sola parola). Il significato sintattico è
leggermente differente (se si ha familiarità con il linguaggio C, esso ha lo
stesso comportamento) però al lato pratico l'effetto è il medesimo. >
che possa essere questo? nahhh...

 wrote in message
news:8P_58.11145$ue2.2...@twister1.libero.it...


Non c'è bisogno di dichiarare le variabili.
Sinceramente non saprei, non ho mai provato php sotto win... magari potrebbe
essere qualche parametro nel php.ini.
Sicuramente se ti da un errore su costanti è perchè hai dimenticato le
virgolette a una stringa o la $ a una variabile.
Controlla i parametri di configurazione  register_globals e track_vars
Prova a scrivere $HTTP_POST_VARS[page] al posto di $page

 include("page.inc");
Meglio:
	if (!isset($page))
		$page = 'welcome';
	switch($page)
	{
		case 'welcome':
			include 'welcome.inc';
			break;
		case 'first':
			include 'page.inc';
			break;
		case 'second':
			include 'page2.inc';
			break;
		...
	}
Oppure, quello che preferisco:
	$pages = array(
		'default'	=> 'welcome',// Se la pagina non è data
		'first'		=> 'page',
		'second'	=> 'page2',
		'navbar'	=> 'nav_bar3',
		'badpage'	=> 'badpage' // Se la pagina non esiste
	);
	if (isset($HTTP_GET_VARS['page']))
		$page = $HTTP_GET_VARS['page'];
	else
		$page = 'default';
	if (!isset($pages[$page]))
		$page = 'badpage';
	$file = './' . $pages[$page] . '.inc';
	if (file_exists($file))
	{
		include $file;
	}
	else
		print "File $page.inc non esiste.\n";
...eviti parecchie parentesi graffe, aggiungere pagine e' molto facile,
e ogni pagina sta in una sola riga (piu' leggibile). E inoltre, elabora
in tempo costante (2*tempo di hash), anziche' in tempo lineare, e viene
comodo se un file richiesto non esiste.
Dato che si possono richiedere solo i files esistenti in $pages - e non
si puo' passare $pages da URL: viene sovrascritto - la sicurezza non e'
male. E se la pagina manca, viene segnalato in modo univoco, senza dire
qual e' la VERA pagina che manca.
Leonardo

 wrote in message
news:rtnj5uk3ir9vfihgg...@4ax.com...


 
Attenzione, sono solo Warning, (non errori).
Servono solo per tua utilità, e per farti sapere che potresti aver 
dimenticato di valorizzare una variabile.
Se vuoi abbassare il livello di reportistica di errori di PHP,
prova inserendo: 
	error_reporting(1);
come primo comando del programma.
L'impostazione di default e': error_reporting(15);
Nella tabella sottostante puoi vedere l'associazione BIT -> COSTANTE
cons 	value 
1 	E_ERROR  
2 	E_WARNING  
4 	E_PARSE  
8 	E_NOTICE  
16 	E_CORE_ERROR  
32 	E_CORE_WARNING  
64 	E_COMPILE_ERROR  
128 	E_COMPILE_WARNING  
256 	E_USER_ERROR  
512 	E_USER_WARNING  
1024 	E_USER_NOTICE  
seguono un paio di esempi prelevati direttamente dall'help del PHP
-----------------------------------
error_reporting(0);
/* Turn off all reporting */
error_reporting (7); // Old syntax, PHP 2/3
error_reporting  (E_ERROR | E_WARNING | E_PARSE); // New syntax for PHP 
3/4
/* Good to use for simple running errors  */
error_reporting  (15); // Old syntax, PHP 2/3
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // New 
syntax for PHP 3/4
/*  good for code authoring to report uninitialized or (possibly mis-
spelled) variables */
error_reporting (63); // Old syntax, PHP 2/3
error_reporting (E_ALL); // New syntax for PHP 3/4
/* report all PHP errors */
-----------------------------------
Spero di esser stato utile.  :)
ByeZ,
Luke650.

 wrote in message
news:MPG.16c533321...@news.cis.dfn.de...
