Condizione per il require

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
Fabrizio88
membro Senior
membro Senior
Messaggi: 488
Iscritto il: 11/10/2005, 21:49
Contatta:

Condizione per il require

Messaggio 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?
dynamo
membro Master
membro Master
Messaggi: 1976
Iscritto il: 13/11/2007, 17:47
Contatta:

Re: Condizione per il require

Messaggio 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
www.vinidimo.it

visitate e criticate se è il caso... solo con le critiche posso migliorarlo ^_^
Fabrizio88
membro Senior
membro Senior
Messaggi: 488
Iscritto il: 11/10/2005, 21:49
Contatta:

Re: Condizione per il require

Messaggio 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'è?
dynamo
membro Master
membro Master
Messaggi: 1976
Iscritto il: 13/11/2007, 17:47
Contatta:

Re: Condizione per il require

Messaggio 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:
www.vinidimo.it

visitate e criticate se è il caso... solo con le critiche posso migliorarlo ^_^
Fabrizio88
membro Senior
membro Senior
Messaggi: 488
Iscritto il: 11/10/2005, 21:49
Contatta:

Re: Condizione per il require

Messaggio 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?
dynamo
membro Master
membro Master
Messaggi: 1976
Iscritto il: 13/11/2007, 17:47
Contatta:

Re: Condizione per il require

Messaggio 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?
www.vinidimo.it

visitate e criticate se è il caso... solo con le critiche posso migliorarlo ^_^
Fabrizio88
membro Senior
membro Senior
Messaggi: 488
Iscritto il: 11/10/2005, 21:49
Contatta:

Re: Condizione per il require

Messaggio 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.
dynamo
membro Master
membro Master
Messaggi: 1976
Iscritto il: 13/11/2007, 17:47
Contatta:

Re: Condizione per il require

Messaggio da dynamo »

mmm... non saprei... sono sono così "esperto" :mrgreen:

aspettiamo qualche Programmatore serio :P

marcus vampire... rispondete voi :P
www.vinidimo.it

visitate e criticate se è il caso... solo con le critiche posso migliorarlo ^_^
vampire
membro Veteran
membro Veteran
Messaggi: 810
Iscritto il: 24/04/2008, 11:48
Località: Italia
Contatta:

Re: Condizione per il require

Messaggio 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
VHosting Solution
Web Hosting Da 26 Euro Annuo
OsCommerce Hosting 144 Euro Annuo
15% di sconto con il codice: OSC-Member su WebHosting - OSC Hosting
http://www.vhosting-it.com
info@vhosting-it.com
Avatar utente
lavoriamopervoi
membro Senior
membro Senior
Messaggi: 405
Iscritto il: 14/12/2007, 18:32
Contatta:

Re: Condizione per il require

Messaggio 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
Fabrizio88
membro Senior
membro Senior
Messaggi: 488
Iscritto il: 11/10/2005, 21:49
Contatta:

Re: Condizione per il require

Messaggio 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.
Rispondi