Pagina 1 di 1

Condizione per il require

Inviato: 21/01/2009, 20:41
da Fabrizio88
Ciao

Sto facendo piccole modifiche al negozio.

Vorrei sapere se esiste o se è possibile aggiungere una condizione che se mancasse un file o comunque c'è un errore nel codice di quel file mi rimandasse ad un file default.

In pratica nel file Index.php dove richiama l'header, ho aggiunto giorno e mese, in modo che ad ogni giorno mi richiama un file diverso;
Poi ho creato una cartella con un file per ogni giorno.

in questo ultimo file ho semplicemente aggiunto:

<?php
require('includes/themes/header/headerAUTUNNO.php');
?>

in modo che mi richiami un solo file che posso modificare a piacere senza modificare 1000file.

Ma ora mi è venuto in mente il problema, che se ho sbagliato a scrivere il codice o mandasse un file in pratica non vedo l'header sul sito.

Posso aggiungere una condizione sul file index?

Re: Condizione per il require

Inviato: 21/01/2009, 23:05
da dynamo
io ho fatto così...

nei file delle pagine ho messo questo codice

Codice: Seleziona tutto

  include ('date_header.php');
e dove c'è il richiamo per l'header ho sostituito con questo codice

Codice: Seleziona tutto

<?php require(DIR_WS_INCLUDES . 'header'.$data.'.php'); ?> 
poi ho fatto la pagina date_header.php così

Codice: Seleziona tutto

<?php
$prendidata = getdate();
$giorno = $prendidata['mday'];
$mese = $prendidata['mon'];
$dataattuale = "$giorno-$mese";
switch ($dataattuale)
{
//case "1-1": $data = "CAPODANNO";
//break;
case "21-3": $data = "PRIMAVERA";
break;
case "12-3": $data = "PASQUA";
break;
case "2-6": $data = "FESTAREPUBBLICA";
break;
case "21-6": $data = "ESTATE";
break;
case "23-9": $data = "AUTUNNO";
break;
case "31-10": $data = "HALLOWEEN";
break;
case "22-12": $data = "INVERNO";
break;
case "25-12": $data = "NATALE";
break;
case "31-12": $data = "ULTIMO";
break;

default: $data = "";
}
?>

poi in catalog/includes ho fatto tutti i file header[festa].php



praticamente se non c'è la data corrispondente prende l'header.php di default

Re: Condizione per il require

Inviato: 22/01/2009, 0:31
da Fabrizio88
Esatto!

hai scovato proprio il codice che avevo messo io!

Tutto bene per le feste come capodanno o la festa d'italia che mi richiama la pagina per quella festività di un giorno;
Ma per l'inverno come hai fatto a lasciare sempre lo stesso header per 3 mesi?

Io infatti ho fatto una cosa simile a quella postata da te ma ho fatto richiamare un file per ogni giorno.

Volevo sapere come aggiungere una condizione if else per la pagina index.

Ora c'è questo:

<!-- AUTO CHANGE THEME START //-->
<?php
$prendidata = getdate();
$giorno = $prendidata['mday'];
$mese = $prendidata['mon'];
$dataattuale = "$giorno-$mese";
switch ($dataattuale)
{
case "1-1": $data = "CAPODANNO";
break;
case "21-3": $data = "PRIMAVERA";
break;
case "23-3": $data = "PASQUA";
break;
case "2-6": $data = "FESTAREPUBBLICA";
break;
case "21-6": $data = "ESTATE";
break;
case "23-9": $data = "AUTUNNO";
break;
case "22-12": $data = "INVERNO";
break;
case "25-12": $data = "NATALE";
break;
default: $data = "";
}
?>
<!-- AUTO CHANGE THEME END //-->


<!-- Header START //-->
<?php require(DIR_WS_INCLUDES . 'themes/header/' .$mese. '/' .$giorno. '.php'); ?>
<!-- Header END //-->

In pratica il pezzo in mezzo non viene usato, quindi vorrei eliminarlo ma non saprei come procedere.

Potrei fare una cosa del genere:

<?php
require(DIR_WS_INCLUDES . 'themes/header/' .$mese. '/' .$giorno. '.php');
IF {(DIR_WS_INCLUDES . 'themes/header/' .$mese. '/' .$giorno. '.php');==NULL} ELSE {require(DIR_WS_INCLUDES . 'themes/header/header.php');}
?>

Ma la definizione ERRORE o NON ESISTENTE per un file qual'è?

Re: Condizione per il require

Inviato: 22/01/2009, 2:19
da dynamo
eheh neppure a me rimane per 3 mesi l'header... non mi sono mai posto il problema :D


PS: il codice che ho postato forse lo avevi già postato sul forum, cmq si trova in giro :mrgreen:

Re: Condizione per il require

Inviato: 22/01/2009, 4:34
da Fabrizio88
Bella li!!!

Manco ricordo quello che ho fatto ieri! :mrgreen:

Comunque per il file inesistente esiste questa funzione: file_exists()
dovrebbe funzionare in qualche modo, ma mi dà come schermo 1, non dovrebbe essere true? boo..

Invece se ci dovesse essere qualche errore nel codice cosa posso usare?

Re: Condizione per il require

Inviato: 22/01/2009, 16:14
da dynamo
stavo pensando... (magari è una stupidata)

step_1: leggo la data
step_2: se la data è tra quelle indicate assegno un valore
step_3: carico questo valore nel db
step_4: leggo il valore dal db
step_5: carico l'header con valore associato

in questo modo per tutta la durata delle stagioni il valore nel db non viene cambiato... l'unica cosa dopo le festività devi inserire un giorno che risetti il valore della stagione ;)


secondo te com'è come soluzione?

Re: Condizione per il require

Inviato: 25/01/2009, 19:59
da Fabrizio88
Certo che funziona!
Ma alla fine anche la mia soluzione è molto simile:

- Legge la data attuale
- Carica il file con la data letta (/includes/themes/header/1/25.php)
- il file caricato con la data attuale rimanda al file "aggiornabile"; per le 4 stagioni e feste giornaliere o settimanali.

Il tutto già funziona...
Solo che vorrei aggiungere 2 controlli, ovvero se per esempio mi sono dimenticato di creare un file o il nome è sbagliato oppure semplicemente c'è un errore nel codice.
Se succede questo ORA non visualizzo l'header e basta, come faccio a far in modo di visualizzare un file DEFAULT se non caricasse il file specifico? :roll:

Sembrerebbe banale ma con i controlli su file non saprei come muovermi.

Re: Condizione per il require

Inviato: 25/01/2009, 20:50
da dynamo
mmm... non saprei... sono sono così "esperto" :mrgreen:

aspettiamo qualche Programmatore serio :P

marcus vampire... rispondete voi :P

Re: Condizione per il require

Inviato: 26/01/2009, 0:02
da vampire
per controllare se il file esiste usa questo

Codice: Seleziona tutto

$filename = 'percorsofile/nomefile.php';

if (file_exists($filename)) {
    header ("Location: nomefilefile.php"); // se esiste ti fa il redirect ad un file
} else {
    header ("Location: nomefilefile.php"); //se non esiste ti fa sempre il redirect
} 
modificalo come meglio credi perch eho letto solo la parte finale del post in linea molto sommaria

Re: Condizione per il require

Inviato: 26/01/2009, 3:01
da lavoriamopervoi
Ciao,
puoi fare così:

Codice: Seleziona tutto

<?php
if file_exists(DIR_WS_INCLUDES . 'themes/header/' .$mese. '/' .$giorno. '.php') {
  require(DIR_WS_INCLUDES . 'themes/header/' .$mese. '/' .$giorno. '.php');
} else {
  require(DIR_WS_INCLUDES . 'themes/header/header/default.php');
}
?>
Ciao
Antonello

Re: Condizione per il require

Inviato: 26/01/2009, 3:16
da Fabrizio88
Si raga, la funzione file_exist() lo usata, stavo cercando una funzione che mi dica se il file è corretto o no.

Ho trovato la funzione file_is(), fà al caso mio?

Comunque per la cronaca ho finito adesso di modificare il tutto usando il database come mi ha consigliato dynamo, non è male perchè evito di uppare più di 300file.

Solo un'altra info, come si potrebbe strutturare una tabella in modo da avere mesi e giorni?

Ora ho semplicemente creato una tabella con 3 campi (giorno,mese,file), ma ho duvuto fare 31x12 righe.