Newsgroup: it.comp.www.php
Titolo: [struttura sito web] menu, form e post

Salve a tutti,
sto riorganizzando la struttura del mio sito web puntando molto sulla 
dinamicità e sulla pulizia del codice. Ho un problema con la costruzione 
del classico menu dei link ai contenuti del sito.
Dunque, il file index.php include al suo interno:
	- header.php (contiene la parte superiore delle pagine che si
                       ripete, compreso il menu)
         - costrutto switch che esamina la variabile $_POST['scelta'] (
	  settata in funzione della voce del menu cliccata) e che
           include la pagina desiderata
	  esempio:
		switch($_POST['scelta']) {
     			case "home":
				include("content/home.php");
				break;
			case "hobby":
				include("content/hobby.php");
				break;
			default:
				include("content/home.php");
		}
	- footer.php (contiene la parte inferiore delle pagine che si
                       ripete)
La domanda è: come dovrà essere strutturato il codice del menu?
Posto che voglio usare xhtml ed effettuare il passaggio di parametri 
tramite POST, immagino che debba porre il menu all'interno di un 
form..ma non riesco a capire come eseguire il submit (se possibile) 
senza affidarsi a javascript (vedi onClick="this.form.submit()"), e come 
effettuare il passaggio di "scelta": cioè ogni voce del menu contiene un 
  hidden field, oppure ogni voce è essa stessa un submit field, o ancora 
faccio nuovamente uso degli anchor?
Spero di essere stato abbastanza chiaro. Grazie per l'attenzione

 tramite POST, 
Perche' proprio POST?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 
perchè mi piace l'idea che l'url rimanga sempre "pulito"

 perchè mi piace l'idea che l'url rimanga sempre "pulito"
IMHO ti stai solo complicando la vita.
Se vuoi che resti pulito utilizza mod_rewrite ed url tipo
http://www.example.com/contacts
 etc.


 
Se mi dici che in questo caso non c'è altro vantaggio nell'usare post al 
posto di get, io sono solo che contento :)
Grazie

         - costrutto switch che esamina la variabile $_POST['scelta'] (
Addirittura scomodare il post per fare una cosa simile? Na.
Io la questione del menù l'ho sbrigata in maniera diversa, che qui ti 
illustro.
In ogni pagina del mio sito ho un riferimento ad un file esterno 
(menu_laterale.inc.php) dal quale viene richiamata la funzione 
scrivi_menu_laterale, che ha un solo parametro: il contenuto della 
variabile $_SERVER['REQUEST_URI'], ovvero il percorso comprensivo del 
nome del file della pagina PHP di provenienza.
In questo modo nel codice della funzione scrivi_menu_laterale basta che 
faccia un confronto tra il parametro passato alla funzione ed una lista 
di files inserita nel codice.
Inoltre, nel mio caso ho fatto in modo di estenderlo anche a sottomenù 
di qualsiasi livello (visto che c'ero).
Puoi provare il sistema andando su 
www.deangitravel.it
, il sito che sto 
portando avanti per un mio amico; se vai direttamente su 
www.deangitravel.it
 vedi la pagina principale.
Se ad esempio digiti 
http://www.deangitravel.it/strutture/egitto/motonave_ninfea_2.php
 il 
menù si posiziona automaticamente sulla pagina che hai richiesto, 
seguendo il ragionamento che ti ho scritto prima.
Se hai bisogno di qualche sorgente per fare delle prove, fammelo sapere.
-- 
Ciao,
	Fabrizio
===  
http://www.negusweb.it
  ===

Negus ha scritto:
 > In ogni pagina del mio sito ho un riferimento ad un file esterno
 > (menu_laterale.inc.php) dal quale viene richiamata la funzione
 > scrivi_menu_laterale,
faccio un passo indietro: come hai organizzato le pagine del tuo sito? 
Un file index.php che "assembla" le parti comuni a tutte le pagine?
Il mio scopo era di eliminare ogni tipo di "ridondanza": il menu vorrei 
includerlo magari in index.php oppure direttamente in header.php, in 
modo da non mettere un include in ogni pagina che creo.
Il mio scopo è quello di avere le pagine solamente con il "succo" della 
pagina stessa..non mi sono spiegato bene, spero che si sia capito 
comunque :)
che ha un solo parametro: il contenuto della
 > variabile $_SERVER['REQUEST_URI'], ovvero il percorso comprensivo del
 > nome del file della pagina PHP di provenienza.
 >
 > In questo modo nel codice della funzione scrivi_menu_laterale basta che
 > faccia un confronto tra il parametro passato alla funzione ed una lista
 > di files inserita nel codice.
 >
 > Inoltre, nel mio caso ho fatto in modo di estenderlo anche a sottomenù
 > di qualsiasi livello (visto che c'ero).
Come hai fatto?
 > Puoi provare il sistema andando su 
www.deangitravel.it
, il sito che sto
 > portando avanti per un mio amico; se vai direttamente su
 > 
www.deangitravel.it
 vedi la pagina principale.
 >
 > Se ad esempio digiti
 > 
http://www.deangitravel.it/strutture/egitto/motonave_ninfea_2.php
 il
 > menù si posiziona automaticamente sulla pagina che hai richiesto,
 > seguendo il ragionamento che ti ho scritto prima.
 >
 > Se hai bisogno di qualche sorgente per fare delle prove, fammelo sapere.
 >
Grazie mille per l'aiuto!

 Come hai fatto?
Ti posto parte dei sorgenti di una pagina (index.php) e del file di 
include menu_laterale.inc.php.
Se questi non ti fossero sufficienti, ti invio in privato i sorgenti 
completi, cosi' puoi dare un'occhiata anche allo scorrimento nel menù.
-------------------------- index.php --------------------------------
<?php 
include($_SERVER['DOCUMENT_ROOT']."/script_php/menu_laterale_sx.inc.php"); 
inserisci_menu_laterale_sx($_SERVER['REQUEST_URI']); ?>
---------------------------------------------------------------------
Come vedi, alla funzione inserisci_menu_laterale passo il parametro che 
contiene il percorso del nome del file php che ha chiamato la funzione.
------------------------ menu_laterale_sx.inc.php ----------------------
<?php
function inserisci_menu_laterale_sx($path_link_input)
{
	global $path_link_click;
	$path_link_click=$path_link_input;
 
	class def_cls_menu
	{
		var $link;
		var $nome_link;
		var $arr_sotto_menu;
		var $path_icona;
 
		function 
def_cls_menu($nome_link,$link,$arr_sotto_menu=array(),$path_icona="/images/menu_laterale_sx/freccia_rossa.gif")
		{
			$this->nome_link=$nome_link;
			$this->link=$link;
			$this->arr_sotto_menu=$arr_sotto_menu;
			$this->path_icona=$path_icona;
		}
	}
 
 
	// Array che definisce ogni link del menu. Unica parte da modificare, 
eventualmente	
	$arr_menu=array(
					new def_cls_menu("ASSICURAZIONI 
VIAGGIO","/assicurazioni_viaggio/assicurazioni.php",$arr_menu_assicurazioni_viaggio,"/images/menu_laterale_sx/news_3.gif"),
					new def_cls_menu("LE NOSTRE 
STRUTTURE","/strutture/index.php",$arr_menu_strutture,"/images/menu_laterale_sx/news_3.gif"),
					new def_cls_menu("OFFERTISSIME","/offertissime/index.php")
	);
 
	echo "<table width=\"180\">";
 
	$arr_colori=array("blue","black");
	for ($k=0;$k<sizeof($arr_menu);$k++)
	{
		......
		// scorre il menù evidenziando e snodando quello che contiene la voce 
correntemente selezionata
	}
}
?>
-------------------------------------------------------------
In particolare, per le voci ho creato una classe per contenere i vari 
parametri di ogni voce del menù ed al tempo stesso garantirmi un grado 
di scalabilità per aggiungere velocemente altre voci e sottovoci al menù.
Comunque posso anche mandarti i sorgenti completi delle due pagine.


Io utilizzo questo metodo
Costruisco una pagina con la struttura che voglio realizzare tramite i
css.
All'inizio includo
- file di configurazione che a sua volta include altri file via via
necessari come il file della lingua, file costanti ecc.
- File di controllo flusso.
Nel corpo della pagina per ogni <div id=..> inserisco un bel print
$dir.$variabile_di_sezione  dove $dir individua la directory e
$variabile_di_sezione il nome del file di inclusione.
Nel file di controllo flusso elaboro un bello switch dove per ogni case
definisco il valore di tutte le variabili inserite nei vari DIV.
Il default dello switch mi consente di intercettare eventuali errori o
input dell'utente direttamente sulla barra degli indirizzi.
Ora io non so se sto usando un buon metodo (anzi i vs. commenti saranno
cmq apprezzati) però ci sono arrivato dopo un bel po' di prove e i
sembra che funzioni abbastanza bene.
Ciao
giangian
JohnCope ha scritto:


 tramite POST [...]
I motori di ricerca non fanno POST, quindi il tuo sito non verra' indicizzato.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it