link automatici

  • Creatore Discussione Creatore Discussione reeda80
  • Data di inizio Data di inizio

reeda80

Utente Attivo
15 Giu 2009
46
0
0
Buongiorno a tutti!
ho un problema con una funzione per generare link automatici... mi spiego meglio...ho creato una funzione che legge in una cartella principale e nelle sue sottocartelle...ora vorrei che il nome delle subfolder divenisse il mio collegamento alle varie pagine delle gallerie che sono generate dalla creazione di una nuova cartella... qui nasce il problema... come posso creare questo collegamento? Io ho creato una funzione ma non legge all'interno dell'array e mi restituisce una pagina url "Not Found"...qualcuno può aiutarmi?
Grazie mille e buona giornata...
Posto il codice "incriminato":
PHP:
$base_dir = 'My_Gallery/'; 
foreach (glob($base_dir . '/*', GLOB_ONLYDIR) as $item) {
$files = array();
$dh = opendir($item);
while ($image = readdir($dh)) {
if (!preg_match("#\.jpe?g$#i", $image)) {
continue;
}
$files[] = $image;
}
$random = rand(0, count($files) - 1);
echo "$item: <a href='".$_SERVER['PHP_SELF']."'>indietro</a>";
"<br/>";
echo "<img src=\"$item/{$files[$random]}\" /><a href=\"$base_dir/{$subdirs[$images]}\" /><br />";
}
if(isset($_GET['My_Gallery']))
{
print("<a href='".$_SERVER['PHP_SELF']."'>indietro</a>");
"<br/>";
}
?>
 
P.s. So che la domanda può apparirvi banalissima ma ho cominciato da poco ad usare il php e ancora ci :boxing:
 
ciao
io per prima cosa porterei fuori da foreach
$files = array();


PHP:
$files = array(); 
foreach (glob($base_dir . '/*', GLOB_ONLYDIR) as $item) { 
//eccetera
 
Fatto! ma, visto che sto imparando, è per una questione di leggibilità del codice?
 
ciao
no
perche ad ogni ciclo di foreach altrimenti ricrei un nuovo array, sempre con lo stesso nome

dimenticavo
non è detto che comunque funzi quello che hai fatto
 
Ciao e grazie mille per la spiegazione... sono ancora una neofita e ho ancora moltissimo da imparare!
Il codice non funziona comunque ma sto continuando a fare delle prove per risolvere l'arcano:)
 
Ok ho risolto così parte del problema:
PHP:
echo "<img src=\"$item/{$files[$random]}\" /><a href=\"$item/{$subdirs[$files]}\" /><br />";
ora però mi dice:
Warning: Illegal offset type in .....
e mi dà i collegamenti alle immagini ma saltando il primo collegamento... mi spiego meglio: Ho 3 cartelle:a,b,c ora... nella prima non c'è collegamento, nella seconda mi dà le immagini di a e nella terza quelle di b...può essere perchè continua a fare il count immagini e quindi scala di 1?
 
ciao
un piccolo consiglio per vedere dove sbagli
utilizza var_dump() che poi toglierai, es commentandolo

es
foreach (glob($base_dir . '/*', GLOB_ONLYDIR) as $item) {
var_dump($item);

in questo modo riesci a vedere il tipo e contenuto della variabile

una alla volta verifichi tutte le variabili e dovresti risalire a quale istruzione non funzia

dimenticavo usa l'indentazione
 
Ultima modifica:
Ho scoperto l'errore... in pratica non mi apre la directory con opendir
PHP:
if ($handle = opendir($dir))
... l'altro errore è questo: Warning: Illegal offset type? cioè?
e poi mi legge gli array implementandoli e questo è probabilmente il motivo per cui non mi legge il primo link... o sbaglio e non c'entra niente?
 

Discussioni simili