Navigare fra le directory e aprire file

device75it

Nuovo Utente
25 Nov 2014
4
0
0
Salve a tutti sono da 10 anni che non uso php e mi sono alquanto arruginito.
Vengo al dunque ho una serie di cartelle con piu livelli , ovverò le cartelle contengono altre cartelle o solo file che nel caso ci siano verranno aperti.
es: root
|
-----------------------
| | |
pippo pluto (p.html , p1.pdf, ecc)
| |
(p.html,ecc) (altra cartella)

Ho fatto questa parte di codice che mi vede la directory corrente ma vorrei renderla dinamica, e tra l'altro se ho solo file come faccio ad assegnarli il link a $value per aprirli :

PHP:
<?php

// percorso della directory da leggere
$directory = "NOME DELLA DIRECTORY";

$d = dir($directory);

$d->close();

//leggo la directory
  $dirs= array();
  $files = array();
  if ($handle = opendir("./" . $directory))
  {
    while ($file = readdir($handle))
    {
      if (is_dir("./{$directory}/{$file}"))
      {
        if ($file != "." & $file != "..") $dirs[] = $file;
      }
      else
      {
        if ($file != "." & $file != "..") $files[] = $file;
      }
    }
  }
  closedir($handle);

//ordina file e cartelle
  reset($dirs);
  sort($dirs);
  reset($dirs);

  reset($dirs);
  sort($dirs);
  reset($dirs);
//key=indice  val=nome directory
  echo "<strong>Cartelle:</strong>\n<ul>";
  while(list($key, $value) = each($dirs))
  { 
	  $d++;
    echo "<li><a href=\"{$value}\">{$value}/</a>\n";
	  }

?>


Spero che qualcuno riesca a darmi una dritta,

Grazie sin da ora
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male il problema potresti provare con lo schema seguente
PHP:
<?php 
$cart_1=glob("*",GLOB_ONLYDIR);//trova le cartelle di primo livello della root
foreach($cart_1 as $c){//trova le cartelle di secondo livello
	$cart[$c]=glob("$c*",GLOB_ONLYDIR);
}
//cerco gli eventuali file nella cartelle di primo livello
foreach($cart_1 as $c){
	$f="$c/*.*";
	$files=glob($f);//cerca i file nella cartella di primo livello $c
	echo "cartella $c contiene:<br />";
	if(is_array($files)){
		foreach($files as $file){
			echo "&nbsp;&nbsp;- $file<br />";
		}
	}else{
		echo "&nbsp;&nbsp;- non ci sono file<br />";
	}
}
//cerco gli eventuali file nelle cartelle di secondo livello
foreach($cart as $c1 => $c2){
	$f="$c1/$c2/*.*";
	$files=glob($f);//cerca i file nella cartella di secondo livello $c1/$c2
	echo "cartella $c1/$c2 contiene:<br />";
	if(is_array($files)){
		foreach($files as $file){
			echo "&nbsp;&nbsp;- $file<br />";
		}
	}else{
		echo "&nbsp;&nbsp;- non ci sono file<br />";
	}
}
?>
forse usando una funzione ricorsiva si potrebbe vedere, se esistono, le cartelle di terzo, quarto... livello, ma dovrei pensarci un po' a lungo
poi se ti interssa solo un tipo di file, es i file php puoi scrivere $f="$c/*.php";
o se vuoi partire da una cartella specifica $cart_1=glob("nome_cartella*",GLOB_ONLYDIR);
in questo modo trovi le cartelle e sottocartelle della nome_cartella
 

device75it

Nuovo Utente
25 Nov 2014
4
0
0
Ciao grazie innanzitutto,
diciamo che non è proprio cosi, mi spiego meglio:
parto da una determinata directory che chiamo partenza al cui interno ci sono 6 cartelle, questo riesco a cercarle tramite la parte di codice che avevo scritto all'inzio. Poi però, quando mi visualizza i nomi delle cartelle devo cliccarle ed accedervi per esempio la cartella1 nel body ora mi deve apparire il contenuto della cartella1 se sono file me li elenca e cliccando il nome mi si apre se è ancora una cartella mi appare un nuovo body con il contenuto della cartella1_2 e cosi via per le altre.
Spero di essere stato un po più chiaro. :(
Grazie
 

device75it

Nuovo Utente
25 Nov 2014
4
0
0
Continuando a lavorarci su e vedendo qua e la ho ottenuto una struttura completa, l'unica cosa è che ho una struttura ad albero già aperta, quindi se ho molti file e directory sarebbe lunghissima. Come posso fare per dire espandi una cartella specifica e ed eventuale sottocartelle.
Questo è l'ultima versione del codice che ho fatto, sarebbe da link ogni directory ed espanderla se ci clicco su , ma non so come.


PHP:
<?PHP
# Questa funzione permette di visualizzare un elenco a albero dei file e delle sottocartelle contenuti in $base.

function elenco_dir($base)
{
$dir_vuota=1; # Flag per il controllo della directory vuota
if ($handle_dir = opendir($base)) # Apre la directory, e verifica che il percorso sia corretto
{
    echo "<UL class=\"testo\">\n"; 
  while (false!==($dir = readdir($handle_dir))) # Legge finchè non è finita la directory, e la memorizza in $dir
  {
    if ($dir!="." && $dir!="..") #Non stampa "." e ".."
    {
      $dir_vuota=0;
          if(is_dir($base. "/" .$dir))
          {
           # Codice nel caso di directory
          echo '<LI style="list-style-image: url(foto/cartella.jpg)"><B>' . $dir . "</B>\n";
          elenco_dir($base. "/" .$dir); 
               echo "</LI>\n";
      }
       else
        {
          #Codice nel caso di file
           # Elimina l'estensione dei file   $dir nome file
              if ($dir != "." && $dir != ".." && $dir != "file_da_non_mostrare.est" && substr($dir,-3,3) != "estensione_da_non_mostrare")
        {
             echo '<LI style="list-style-image: url(foto/file.jpg)"><A href="' .$base . '/' . $dir . '">' . str_replace('_', ' ', substr($dir,0, strrpos($dir,"."))) . "</A></LI> (data file)\n";
									
									
									                  
									//verifica data file  
							//		echo "Ultima modifica: " . date("d/m/Y H:i:s", filemtime($dir));
									
									// identifica estensione del file 
									 $est = pathinfo($dir);			 	
								   echo "extension: " .$est['extension'];
									 
									
              }
      }
    }
  }
    if ($dir_vuota==1) echo '<LI class="testo" style="list-style-image: url(foto/sbagliato.jpg)">Nessun file presente</LI>';    
  echo "</UL><BR>";    
  closedir($handle_dir);
}
else #Codice nel caso di percorso non trovato
{
  echo "Percorso errato";
}
}    

# Chiamata funzione 
elenco_dir(".");

?>
 
Ultima modifica di un moderatore:
Discussioni simili
Autore Titolo Forum Risposte Data
R Navigare sito con cURL, mi restituisce errore PHP 0
D Navigare con un solo sitoweb Windows e Software 2
F Navigare nel DOM jQuery 1
S Navigare con la chiavetta Adsl e Connettività 5
N Impossibile navigare con torrent Windows e Software 4
F Funzione per navigare in pagine numerate Javascript 2
grottafelix vUOI NAVIGARE CON IL TUO PORTATILE SENZA FILI? Altri Annunci 3
G scomponi un numero intero come la somma di 20 numeri interi casuali maggiori di zero diversi fra loro Javascript 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
T differenza fra mysql xampp e un mysql server Database 0
R Includere elementi array fra apici PHP 1
maxnegri Conoscere giorni della settimana fra due date con php PHP 2
andrea.peo Calcolo differenza fra record attivo e precedente PHP 1
M Calcoli fra orari (in formato ore:minuti) PHP 2
P due select che non vanno d'accordo fra di loro PHP 4
Gabriele Visioli Domanda: rapporto fra Visite e Traffico Hosting 3
S Aggiornare campo in base a timestamp meno recente fra piu tabelle PHP 2
D calcolo fra date php PHP 2
F distanza verticale fra elementi HTML e CSS 1
I Socket > Cominicazione fra due host Flash 3
M Creazione di una videoteca in collegamento fra Access 2003 e Microsoft Visual Web Dev ASP.NET 1
M Cancellare tutti i caratteri fra due caratteri PHP 6
R problema confronto fra date PHP 2
B Creazione sito con videoconferenze, report, db appuntamenti fra sedi differenti PHP 9
G Differenza fra due date PHP 5
T Countdown fra 2 date in ASP Classic ASP 12
T inserire _POST fra le virgolette per definire una variabile PHP 11
M Problema del trasferimento file fra server PHP 4
rup3rto algoritmo combinatorio fra array PHP 5
S consiglio per ottimizzare copia dati fra diversi DB Database 0
M [MySQL] confronto fra date Database 1
JellyBelly Gmap - calcolare distanza fra due maker Javascript 0
V conflitto fra due js Javascript 2
M link fra diverse parti di un sito Flash 3
G differenza fra apici e doppi apici PHP 2
G Inserire una trasparenza fra trama e testo in CSS? HTML e CSS 2
G Come parificare l'interlinea in CSS fra i browser? HTML e CSS 0
E passaggio fra scene in dissolvenza tramite pulsante Flash 1
G Con fireworks, come si sposta una selezione fra i livelli? Webdesign e Grafica 3
A diverso comportamento fra server locahost ed in rete Apache 1
G perso fra i loop Classic ASP 3
E MOTORE DI RICERCA FRA Più tabelle Classic ASP 0
N Confronto fra memorie RAM e fra schede video Hardware 0
peppoweb Gates: Longhorn fra due anni o poco più Windows e Software 0
peppoweb Una guida da Microsoft - "Come districarsi fra le patch" Windows e Software 0
F LETTURA FILE SU DIRECTORY IN RETE Javascript 0
Shyson Puntare ad una sotto directory WordPress 3
T Fpdf salvataggio su directory protetta PHP 0
R Download file multipli da directory php PHP 0

Discussioni simili