Problema con ciclo If..

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
Salve a tutti, sto lavorando ad un sito in PHP e per gestire al meglio i contenuti ho deciso di realizzare tutti i link delle pagine sfruttando il ciclo if e linkando tutte le varie pagine. Ora il problema è questo: si tratta di un sacco di pagine davvero, almeno una quarantina, cinquantina di pagine, che andranno a crescere.. Per evitare di appesantire incredibilmente la homepage nella quale vi è l'include a cui fa riferimento il ciclo if, come posso fare?
 
ciao, if non è un ciclo ma un'istruzione basata su condizioni, posta il codice che hai creato e vediamo cosa si può fare
 
ciao, if non è un ciclo ma un'istruzione basata su condizioni, posta il codice che hai creato e vediamo cosa si può fare

Allora nella pagina principale "main.php" ho inserito un include con questo codice

Codice:
if (trim($id) == "homepage") 
include("homepage.html"); 
else
if (trim($id) == "appuntamenti") 
include("appuntamenti.html"); 
else
if (trim($id) == "articoli") 
include("articoli.html");  
else
if (trim($id) == "foto") 
include("foto.html");
else
if (trim($id) == "video") 
include("video.html");  
else
if (trim($id) == "eventi") 
include("eventi.html");
else
if (trim($id) == "palestra") 
include("palestra.html");
else
if (trim($id) == "maestri") 
include("maestri.html");
else
if (trim($id) == "discipline") 
include("discipline.html");          
else
if (trim($id) == "wadoryu") 
include("wadoryu.html");          
else
if (trim($id) == "wushu") 
include("wushu.html");          
else
include ("homepage.html");

Ed i link sono del tipo
Codice:
main.php?id=articoli

In modo che le pagine (più leggere) si inseriscano all'interno del layout principale che a questo punto, una volta modificato nella prima pagina mantiene anche le modifiche nelle altre (e questo mi tornerà utile). Volevo evitare di inserire altri "if trim include else" per non appesantire la pagina...
 
hai la possibilità di utilizzare un database?

Ho già scartato questa ipotesi in quanto il sito non è il mio... Lo gestisco soltanto e preferirei non aggiungere una spesa per un MySQL che probabilmente non basterà a lungo per i contenuti che devo mettere... E quindi poi si dovrebbe fare un ulteriore spesa...
 
Allora fai così, ti crei un array con tutti i nomi delle pagine senza estensione, se $id è in array fai l'inclusione.
Non è molto elegante ma dovrebbe funzionare e dovrebbe farti risparmiare un pò di codice.
 
Allora fai così, ti crei un array con tutti i nomi delle pagine senza estensione, se $id è in array fai l'inclusione.
Non è molto elegante ma dovrebbe funzionare e dovrebbe farti risparmiare un pò di codice.

Faccio il Grafico e di programmazione web ne so davvero poco... Mi spiegheresti in soldoni e con esempi pratici? =)
 
PHP:
$pagine = array("homepage", "appuntamenti", "articoli", "etc.");
if (in_array(trim($id), $pagine)) {
    include $id.".html";
}
 
Ultima modifica:
ciao
per non stare a scrivere tutto l'array perche non usi glob?
$file=glob("cartella/*.html");
nell'array file ti ritrovi tutti i file con estensione html

@alex forse intendeva vodaphon
 
ciao
scusa, ma mi era rimasto nella penna

PHP:
$pagine = glob("$cartella/*.html");//se nella root togli $cartella/ per cui =glob(*.html")
$pagine =str_replace(".html","",$pagine);
//e come detto da elio a parte il tim
if (in_array(trim($id), $pagine)) { 
    include $id.".html"; 
}
 
ciao
scusa, ma mi era rimasto nella penna

PHP:
$pagine = glob("$cartella/*.html");//se nella root togli $cartella/ per cui =glob(*.html")
$pagine =str_replace(".html","",$pagine);
//e come detto da elio a parte il tim
if (in_array(trim($id), $pagine)) { 
    include $id.".html"; 
}

Quindi praticamente dovrei mettere questo codice:

PHP:
$pagine = glob("$subfolder/*.html");
$pagine =str_replace(".html","",$pagine);
if (in_array(trim($id), $pagine)) { 
    include $id.".html"; 
}

Dovrei aggiungere questo dopo tutto l'if e inserire le pagine "extra" nella cartella "subfolder"? Poi dovrei linkare dando al posto dell'id il nome della pagina .html?
 
non dopo l'if, il codice di Borgo sostituisce completamente quello che hai scritto tu
 
Questo significa che devo spostare tutte le pagine all'interno della cartella "subfolder"? Ma l'id che devo dare ai link che fanno riferimento all'include è lo stesso nome del file senza .html o con l'estensione?
 
ciao
no non devi spostare nulla, basta che la pag in cui usi il glob, mi sembra che tu la chiami main.php, sia nella stessa cartella degli html che vuoi includere.
nell'id devi mettere solo il nome, non l'estensione, infatti (es.) glob legge pinco.html
la str_replace "rimpiazza" .html con uno spazio vuoto quindi diventa pinco.
in pratica nell'array $pagine ti ritroverai tutti i nomi sensa estensione
 
scusa dimenticavo una cosa
forse al posto di tim, pardon trim, come diceva eliox metterei htmlspecialchars($id) dato facendo l'inclusione col get il semplice trim mi sembra un po' pericoloso
 
PHP:
<? $pagine = glob("$main/*.html"); 
$pagine =str_replace(".html","",$pagine); 
if (in_array(trim($id), $pagine)) {  
    include $id.".html";  
}         
else
include ("homepage.html"); ?>

PHP:
main.php?id=appuntamenti

Ho messo link di questo tipo ma non funziona e immagino che il problema sia nella prima riga del codice in alto... Scusate la mia ignoranza ma potreste darmi ancora qualche dritta? :P
 
ciao
se il file main.php si trova nella stessa cartella degli altri file non devi dare il percorso
$pagine = glob("*.html");
se invece il file main.php si trova nella cartella principale e gli altri file nella cartella "pinco"
$percorso="pinco";
$pagine = glob("$percorso/*.html");

se il file main si trova nella cartella "pallino" e gli altri nella "pinco"
$percorso=".../pinco";
$pagine = glob("$percorso/*.html");

ecc.. non si tratta altro che dare il percorso per trovarei file

p.s.
!ahaa! se molti wm avessero conoscituo il vecchio (e rimpianto) DOS i problemi coi percorsi sarebbero cose da ridere:)
 
ciao
se il file main.php si trova nella stessa cartella degli altri file non devi dare il percorso
$pagine = glob("*.html");
se invece il file main.php si trova nella cartella principale e gli altri file nella cartella "pinco"
$percorso="pinco";
$pagine = glob("$percorso/*.html");

se il file main si trova nella cartella "pallino" e gli altri nella "pinco"
$percorso=".../pinco";
$pagine = glob("$percorso/*.html");

ecc.. non si tratta altro che dare il percorso per trovarei file

p.s.
!ahaa! se molti wm avessero conoscituo il vecchio (e rimpianto) DOS i problemi coi percorsi sarebbero cose da ridere:)

Contando che qualche cosa minima di DOS la facevo e che usavo anche il Commodore con tutte le sue istruzioni allora è un problema? :D
 

Discussioni simili