Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyświetlanie listy plików i ich zawartości
Forum PHP.pl > Forum > Przedszkole
Vitoss
Troszkę się bawię w PHP i akurat chciałem wyświetlić listę plików (tylko pliki tekstowe) w folderze. W treści zawartość jest pooddzielana separatorem. Chcę wyświetlić tylko pierwszą wartość z każdego pliku. Tak póki co wygląda skrypcik, wyświetla listę plików wraz z odnośnikiem do nich:

  1. <?php
  2. $dir = opendir('pliki');
  3. while(false !== ($file = readdir($dir)))
  4. if($file != '.' && $file != '..')
  5. echo "<a href=\"".$file.".html\">".$file."</a><br/>";
  6. ?>

jak do tego skryptu mogę dodać otwieranie każdego pliku oraz wyświetlenie pierwszego pola do separatora?

tutaj mam również skrypt wyświetlający zawartość poszczególnego pliku:

  1. <?php
  2. $adres = $_GET['adres'];
  3. $file = file("pliki/$adres");
  4. foreach($file as $value) {
  5. $exp = explode("`",$value);
  6. echo $exp[0]."<br />".$exp[2]."<hr />";
  7. }
  8. ?>


Chcę wyświetlić $exp[0] przy spisie plików, jak można to połączyć? Próbowałem na kilka sposobów, ale wyskakują błedy PHP winksmiley.jpg
l0ud
W pierwszym kodzie, obok (przed lub po, jak wolisz) linijki echo możesz wywołać echo file_get_contents('pliki/'.$file);

Wyjaśnij o co chodzi Ci z tym separatorem.
Vitoss
Dzięki za odp, jednak przy file_get_contents wyświetla mi całą treść pliku.
Z separatorem chodzi o to, że w każdym pliku są przechowywane poszczególne dane, przykladowo: tytuł[separator]treść[separator]podpis

Zależy mi teraz na tym, żeby wyciągnąć i wyświetlić tylko pierwszy wpis (tytuł), bez wyświetlania pozostałej treści pliku. Na skrypcie chciałem, żeby wyglądało to tak:

  1. <?php
  2. $dir = opendir('pliki');
  3. while(false !== ($file = readdir($dir)))
  4. if($file != '.' && $file != '..')
  5. echo "<a href=\"".$file.".html\">".$exp[0]."</a><br/>";
  6. ?>

Próbowałem jakby połączyć te dwa skrypty, ale wyświetlał mi tylko treść pliku, do tego całą.
l0ud
Czy chodzi Ci o coś w tym stylu?

  1. <?php
  2. $dir = opendir('pliki');
  3. while(false !== ($file = readdir($dir)))
  4. if($file != '.' && $file != '..') {
  5. $exp = explode('`', file_get_contents('pliki/'.$file));
  6. echo "<a href=\"".$file.".html\">".$exp[0]."</a><br/>";
  7. }
  8. }
  9. ?>
Vitoss
Dzięki, kod wydaje się w porządku i dokładnie to, o co chodziło, tylko nie wiem czemu serwer wyrzuca mi pustą stronę... :|

Jak usunę cały kod php, to strona wyświetla się prawidłowo.
marcio
http://www.egrafik.pl/manual-php-2006/function.scandir.php nie bedzie szybciej??
  1. <?php
  2. $kat = 'pliki/';
  3. $pliki = scandir($kat);
  4. $zawartosc = fread(fopen($kat.$pliki, 'r'), filesize($pliki));
  5. $rozbij = explode('`', $zawartosc);
  6. echo('<a href=\"'.$pliki.'.html\">'.$rozbij[0].'</a><br/>');
  7. ?>

Jednak nie wiem czy onrze robie to tylko idea

P.S nie dalem linku
l0ud
No tak... Kod pisałem od ręki i nie zauważyłem braku jednej klamry:

  1. <?php
  2. $dir = opendir('pliki');
  3. while(false !== ($file = readdir($dir))) {
  4. if($file != '.' && $file != '..') {
  5. $exp = explode('`', file_get_contents('pliki/'.$file));
  6. echo "<a href=\"".$file.".html\">".$exp[0]."</a><br/>";
  7. }
  8. }
  9. ?>
Vitoss
Cytat(marcio @ 9.03.2008, 14:46:50 ) *
  1. <?php
  2. $kat = 'pliki/';
  3. $pliki = scandir($kat);
  4. $zawartosc = fread(fopen($kat.$pliki, 'r'), filesize($pliki));
  5. $rozbij = explode('`', $zawartosc);
  6. echo('<a href=\"'.$pliki.'.html\">'.$rozbij[0].'</a><br/>');
  7. ?>

wyświetla się jeden, pusty link z odnośnikiem do "Array.html"

l0ud - dzięki, działa! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.