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?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ciao, if non è un ciclo ma un'istruzione basata su condizioni, posta il codice che hai creato e vediamo cosa si può fare
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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...
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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...
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
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.
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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? =)
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
PHP:
$pagine = array("homepage", "appuntamenti", "articoli", "etc.");
if (in_array(trim($id), $pagine)) {
    include $id.".html";
}
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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"; 
}
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non dopo l'if, il codice di Borgo sostituisce completamente quello che hai scritto tu
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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:)
 

Winter_Soldier

Nuovo Utente
27 Set 2010
14
0
0
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
Autore Titolo Forum Risposte Data
Monital Problema con un ciclo for. PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
K Problema con update di un database in un ciclo Classic ASP 1
O Problema con ciclo FOR PHP 1
M problema con ciclo foreach per estrarre dati da un database PHP 22
M Problema con ciclo for e while PHP 2
neo996sps PHP: problema con ciclo for PHP 1
M Problema ciclo while con mysql_fetch_assoc PHP 6
D problema con ciclo if else query PHP 3
P Problema con ciclo for PHP 3
D problema con il ciclo while PHP 2
M Problema con join e ciclo while PHP 0
P Problema Con Il Ciclo Di Un Menu' Flash 6
B [HELP] Problema con ciclo if PHP 1
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1
S Problema con infrarossi videocamera IP Cam e Videosorveglianza 1
V Problema con librerie allegro5 c++ C/C++ 1
M Problema con php per calcolo costo percentuale PHP 7
S Problema con mysqli_num_rows PHP 18
grgfede Problema javascript con aruba Javascript 1

Discussioni simili