Fabriziopt Posted December 26, 2007 at 01:14 PM Report Share #156309 Posted December 26, 2007 at 01:14 PM Boas Tenho uma pasta no meu host (uploaded)onde são enviados ficheiros pelas pessoas que visitam o site. Bem o meu problema é mostrar numa tabela os ficheiros dessa pasta. Eu tentei o seguinte código: <?php $dir = "/www/uploaded"; // Abre a pasta e faz um loop para mostrar o conteudo if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); } } ?> Não sei se me fiz entender Abraço 😛 Link to comment Share on other sites More sharing options...
djthyrax Posted December 26, 2007 at 02:57 PM Report Share #156336 Posted December 26, 2007 at 02:57 PM Supondo que o teu código funciona, <?php $dir = "/www/uploaded"; // Abre a pasta e faz um loop para mostrar o conteudo if (is_dir($dir)) { if ($dh = opendir($dir)) { echo "<table><tr><td>Filename</td><td>Filetype</td></tr>\n"; while (($file = readdir($dh)) !== false) { echo "<tr><td>$file</td><td>" . filetype($dir . $file) . "</td></tr>\n"; } closedir($dh); echo "</table>"; } } ?> Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Fabriziopt Posted December 26, 2007 at 08:25 PM Author Report Share #156441 Posted December 26, 2007 at 08:25 PM Não.. aparece o seguinte: Warning: filetype() [function.filetype]: Lstat failed for ./uploaded. in /home/a6483987/public_html/tutoriais.php on line 8 filename: . : filetype: É do formato?? Abraço e obrigado Link to comment Share on other sites More sharing options...
djthyrax Posted December 26, 2007 at 08:28 PM Report Share #156443 Posted December 26, 2007 at 08:28 PM Tens de ignorar o ., o .. e as pastas. <?php $dir = "/www/uploaded"; // Abre a pasta e faz um loop para mostrar o conteudo if (is_dir($dir)) { if ($dh = opendir($dir)) { echo "<table><tr><td>Filename</td><td>Filetype</td></tr>\n"; while (($file = readdir($dh)) !== false) { if($file == '.' || $file == '..') continue; if(is_dir($file)) continue; echo "<tr><td>$file</td><td>" . filetype($dir . $file) . "</td></tr>\n"; } closedir($dh); echo "</table>"; } } ?> Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Fabriziopt Posted December 26, 2007 at 08:55 PM Author Report Share #156455 Posted December 26, 2007 at 08:55 PM Eu pus na pasta uploaded um ficheiro ola.txt.Não me esta a dar o erro mas não me aparece la nada... Obrigado e abraço Link to comment Share on other sites More sharing options...
zero-cool Posted December 27, 2007 at 01:23 AM Report Share #156534 Posted December 27, 2007 at 01:23 AM Viva, Este exemplo cria uma lista. Penso que poderás adaptar com o que pretendes: function FolderTree($dir,$prefix) { $handle = opendir($dir); while ($file = readdir($handle)) { if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) { // É um ficheiro } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') { // É uma pasta echo "<br>$prefix $file"; FolderTree($dir.'/'.$file,$prefix.' '); } } } FolderTree("/www/upload/",' '); Link to comment Share on other sites More sharing options...
Gurzi Posted December 27, 2007 at 02:59 AM Report Share #156546 Posted December 27, 2007 at 02:59 AM /* This is the correct way to loop over the directory. */ while (false !== ($file = readdir($handle))) { echo "$file\n"; } /* This is the WRONG way to loop over the directory. */ while ($file = readdir($handle)) { echo "$file\n"; } alguem sabe porque dizem isto no php.net ? Link to comment Share on other sites More sharing options...
djthyrax Posted December 27, 2007 at 03:26 AM Report Share #156549 Posted December 27, 2007 at 03:26 AM /* This is the correct way to loop over the directory. */ while (false !== ($file = readdir($handle))) { echo "$file\n"; } /* This is the WRONG way to loop over the directory. */ while ($file = readdir($handle)) { echo "$file\n"; } alguem sabe porque dizem isto no php.net ? Se não me engano, é porque nas condições ele converte as variáveis para boolean, e "false" e "0" e 0, por exemplo, convertem para bool(false), daí se usar o !== para fazer strict check e evitar esse possível erro. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Fabriziopt Posted December 28, 2007 at 10:02 PM Author Report Share #156904 Posted December 28, 2007 at 10:02 PM Entao fica function FolderTree($dir,$prefix) { $handle = opendir($dir); while (false !== ($file = readdir($handle))) { if ($file != '..' && $file != '.' && !is_dir($dir.'/'.$file)) { // É um ficheiro } else if (is_dir($dir.'/'.$file) && $file != '..' && $file != '.') { // É uma pasta echo "$file\n"; FolderTree($dir.'/'.$file,$prefix.' '); } } } FolderTree("/www/upload/",' '); Obrigado e abraço Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now