Newsgroup: it.comp.www.php
Titolo: includere i files di una directory in una pagina php

Sono un completo principiante e cerco aiuto.
Con molti sforzi e qualche aiuto sono riuscito a scrivere uno scriptino
utile che allego:
-------------------------------
<?php
$today = date("y_m_d"); // YY_MM_DD
$filename = "a_baldini/$today.php";
if (file_exists($filename) && is_readable($filename)) {
include $filename;
}
else {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='3'
bgcolor='#CC0000'><tr><td align='center' class='menu2'><a
href='baldini.php'><font color=#990000>Vai al prossimo concerto alla sala
baldini</font></a></td></tr></table>";
}
?>
---------------------------------
lo script capisce che giorno e' e va a guardare in una cartella se esiste un
file yy_mm_dd.php corrispondente a today e se c'e' me lo include nella
pagina altrimenti mi crea un link a un'altra pagina.
Vorrei con il vostro aiuto svilupparlo in due direzioni:
La prima: se non c'e' un file corrispondente a today vorrei che mi
proponesse la prima data successiva ad oggi
La seconda: per un'altra pagina vorrei che mi includesse uno dopo l'altro i
file che trova a partire da $today in avanti in ordine crescente.
Arrivo a capire che e' possibile e che non deve essere nemmeno gran che
difficile, ma per quanto mi sia sforzato non sono riuscito ad indovinare
come procedere usando cio' che mi e' stato segnalato.
Spero che qualcuno abbia la voglia di darmi una mano o una indicazione su
come procedere con parole semplici.
Grazie per l'attenzione
--
grafite
webmaster(nientemonnezza)@
grafite.biz
www.grafite.biz

 crescente.
http://www.php.net/manual/en/control-structures.for.php
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1
Inviare email con allegati? 
http://url.repository.biz/go/x

Per scansionare una directory guarda:
http://it2.php.net/manual/it/function.readdir.php
Il tuo caso però è diverso perchè non vuoi scansionare una directory, ma
cercare file il cui nome soddisfi un determinato pattern (yy_mm_dd.php).
Se, come ho capito, tali file sono racchiusi in un'unica directory, la
soluzione che puoi usare è:
1 - ciclo while o for
2 - crei un nome di file in base ad una data (2004-01-20.php)
3 - vedi se esiste nella directory
4 - fai le operazioni che devi fare
5 - goto 1
Ciao
Marco


hummm, non necessariamente il giorno successivo c'e' un file cioe' se oggi
e' il 04_01_20 non necessariamente il primo file corrisponde al 04_01_21
magari il primo file e' il 04_02_01, la condizione dovrebbe essere "il primo
maggiore di 04_01_20"
grazie per l'attenzione

 essere "il primo maggiore di 04_01_20"
Secondo me hai scelto una via molto impervia per gestire le inclusioni.
Faresti sicuramente un migliore investimento studiando come funziona
PHP con MySQL ed il resto, piuttosto che accanirti con soluzioni su
file system etc.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1



Hai ragione, e sto studiando anche quelle soluzioni ma ho risolto con tre
righe di codice un problema che mi trascinavo dietro da un anno e speravo
che magari aggiungendo una stringhetta avrei tagliato la testa al toro e mi
sarei liberato del tempo proprio per finire di realizzare l'applicazione web
PHP-mySQL per gestire il sito in maniera dinamica.
Oltretutto non essendo io in realta' un informatico bensi' un grafico ti
assicuro che anche queste piccole esperienze mi sono servite per avere un
approccio di comprensione al linguaggio.
Quindi quello che pensavo di risolvere con un paio di istruzioni e' troppo
complicato?

 troppo complicato?
1^ Non sono un paio di istruzione, ma molte di piu'.
2^ Non puoi pretendere che qualcuno le scriva per te, non chiedere come
si fa ma posta del codice che non riescia a far funzionare.



3^ non ho preteso proprio nulla.
buon proseguimento e grazie per l'attenzione

 file che trova a partire da $today in avanti in ordine crescente.
Ho cercato una soluzione per questa la seconda domanda; credo che
risolto un problema del genere, il resto diventi semplice.
Allora, partiamo dal fatto che i file da includere (quelli nella
cartella "a_baldini") sono nel formato YY_MM_DD + il "." + suffisso
"php". Cioč:
04_01_20.php
04_01_21.php
04_01_22.php
etc.
e che hai da 0 a 1 file per ciascun giorno, non puoi averne di piů. Ho
capito bene? Se ho capito prova con questo script:
$today = date("ymd"); // non far caso al diverso formato, i tuoi file
                      //  rimangono 04_01_22.php
  $i=0;
  if ($handle = opendir('a_baldini')) {
  while (false !== ($file = readdir($handle)) ) { 
  $solodata= substr($file, 0, 8);
  $solodata= ereg_replace ("_", "", $solodata);
  if ($solodata >= $today) {
  include('a_baldini/'. $file);
  }
  $i++;
  }
  }
  closedir($handle);
 
Mi auguro che funzioni e che faccia al caso tuo. Ciao! :)
-- 
Nicoletta


All'anima della principiante!
Hai capito perfettamente il problema, grazie
Lo script legge effettivamente il contenuto della directory e questo per me
e' gia' un passo avanti.
in realta' legge e mi rende tutto il contenuto, anche di files che non hanno
il titolo YY_MM_DD.php (ad esempio un file .txt che era nella cartella e
alcuni files .htm)
inoltre i files vengono mischiati in modo sfuso cioe' non seguono l'ordine
04_01_20.php
04_01_21.php
04_01_22.php
mi sembra un ottimo punto di partenza
grazie

 inoltre i files vengono mischiati in modo sfuso  
Sembra davvero strano. Viene da pensare che tu abbia dei file
antecedenti all'anno 2000 (e in questo caso il motivo sarebbe ovvio: il
99 viene prima dello 04), ma non credo, forse c'è una ragione che
semplicemente non conosco. Comunque, se così fosse, dovrai solo
ricorrere a un formato YYYY_MM_DD, si trattebbe di effettuare modifiche
minime.
Per il momento cerchiamo di sistemare il resto, provo a commentarti le
varianti e le aggiunte.
$today = date("ymd");
$i=0;
$arr= array(); // è un contenitore di elementi, per ora vuoto
if ($handle = opendir('a_baldini')) {
while (false !== ($file = readdir($handle)) ) {
// sto spulciando nella directory
if (substr($file, -4)==".php" && strlen ($file)==12 ) {
/* se gli ultimi 4 caratteri del file sono ".php" E se la lunghezza del
file è di 12 caratteri (YY_MM_DD.php, come vedi sono 12), allora... */
array_push($arr,$file); 
// aggiungo un elemento all'array, una stringa, ovvero: il nome del file
}
$i++;
}
}
closedir($handle); 
sort ($arr); /* ordino l'array in senso ascendente. Questo in teoria
dovrebbe rimediare al problema dei "file mischiati in modo sfuso" 
e termino con un nuovo ciclo che prende in considerazione NON PIU' tutti
i file della cartella, ma solo quelli inseriti nell'array, cioè:
che siano lunghi 12 caratteri e i cui nomi finiscano con ".php" */ 
for ($i=0; $i < count($arr); $i++) {
$solodata= substr($arr[$i], 0, 8);
$solodata= ereg_replace ("_", "", $solodata);
 
if ($solodata >= $today) { 
include('a_baldini/'. $arr[$i]);
}
}
Buon lavoro :)
-- 
Nicoletta

 ha scritto nel messaggio
news:1g7xb4y.1vx48io19e1t50N%nico.mare@_antispam_libero.it...

Cosi funziona perfettamente grazie, e grazie anche per le spiegazioni che
hai voluto darmi commentando il codice.