Strona 1 z 1

Co jest źle w tym kodzie?

: pt lut 18, 2005 5:06 pm
autor: Artos_paj

Kod: Zaznacz cały

<?
$dir = "/usr/krasnal/www/artos/news/";
$pliki = opendir($dir);

while (false !== ($wyswietl = readdir($pliki))) {
	$echo = "<ul>";
	$echo .= "<li>$wyswietl";
	$echo .= "</ul>";
	echo "$echo";
}

if (is_file($wyswietl) {
$rozmiar = filesize($wyswietl);
$plik = readfile($wyswietl, $rozmiar) or die("Nie udało się odczytać danych z pliku!");
echo "$plik";
}

closedir($pliki);
?>
Skrypt ma pobierać nazwy wszystkich plików z katalogu i wyświetlać ich zawartość na stronie WWW. Takie są zamierzenia, ale coś nie wychodzi :| Co jest tu źle??

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 8:08 pm
autor: Lukar
zauwaz ze zamykasz pętle while zanim wyswietlisz zawartosc pliku! W ten sposob on wylistuje Ci pliki ale zawartosc wyswietli tylko ostatniego. Powinno byc tak:

[php]<?
$dir = "/usr/krasnal/www/artos/news/";
$pliki = opendir($dir);

while (false !== ($wyswietl = readdir($pliki))) {
$echo = "<ul>";
$echo .= "<li>$wyswietl";
$echo .= "</ul>";
echo "$echo";

if (is_file($wyswietl) {
$rozmiar = filesize($wyswietl);
$plik = readfile($wyswietl, $rozmiar) or die("Nie udało się odczytać danych z pliku!");
echo "$plik";
} // tu sie konczy "if"

} // tu koniec while

closedir($pliki);
?>[/php]

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 9:09 pm
autor: Artos_paj
Słuszna uwaga, ale to chyba nie o to chodziło... Wyskakuje parse error przy funkcji if :|

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 9:13 pm
autor: Lukar
nie zamknąłeś nawiasu

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 9:18 pm
autor: Artos_paj
Racja! I teraz działa wypisanie nazw plików, ale niestety, nie wyświetla się ich zawartość :/

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 9:32 pm
autor: Lukar
zle uzywasz funkcji readfile():

int readfile ( string filename [, bool use_include_path [, resource context]])

sprobuj uzyc file_get_contents()

[php]<?php
if (is_file($wyswietl) ) {
echo file_get_contents($wyswietl);
}
?>[/php]

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 9:57 pm
autor: Artos_paj
Spróbuję, a czy przed tym nie trzeba użyć fopen() ?? Chyba o tym zapomniałem :)

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 10:01 pm
autor: Lukar
nie trzeba, na przyszłość zerkaj częściej do manuala http://pl.php.net

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 10:08 pm
autor: Artos_paj
Użyłem, teraz kod wygląda tak:[php]<?php
$dir = "/usr/krasnal/www/artos/news/";
$pliki = opendir($dir);

while (false !== ($wyswietl = readdir($pliki))) {
$echo = "<ul>";
$echo .= "<li>$wyswietl";
$echo .= "</ul>";
echo "$echo";

if ($wyswietl !== "." && $wyswietl !== "..") {
echo file_get_contents($wyswietl);
} // tu sie konczy "if"
else {echo "Nie udało się odczytać zawartości pliku!";}
} // tu koniec while

closedir($pliki);
?>[/php]
I wyskakuje błąd:
Warning: file_get_contents(17.02.05.21.26.14.txt): failed to open stream: No such file or directory in c:\usr\krasnal\www\artos\news2.php on line 20
Manuala używam, mam go w wersji offline na kompie :) Ale jak ktoś jest początkujący, ciężko tam znaleźć co trzeba i zrozumieć co tam napisano :) Duża większość manuala nadaj jest po angielsku...
Linia 20 to u mnie ten fragmenr... echo get_file_contents()

Re: Co jest źle w tym kodzie?

: pt lut 18, 2005 10:32 pm
autor: mdx
dopisz [php]<?php
$wyswietl=''.$dir.'\\'.$wyswietl.'';
?>[/php]

przed
[php]<?php
echo file_get_contents($wyswietl);
?>[/php]

Re: Co jest źle w tym kodzie?

: sob lut 19, 2005 10:28 am
autor: Lukar
[php]<?php
echo file_get_contents( "'$wyswietl'" );
?>[/php]
Duża większość manuala nadaj jest po angielsku...
No niestety bez znajomosci angielskiego programowanie to chyba koszmar, w sieci jest mnostwo informacji, chociazby na swiatowych grupach dyskusyjnych ale bez języka trudno bedzie Ci z tego skorzystac...

Re: Co jest źle w tym kodzie?

: sob lut 19, 2005 11:07 am
autor: Artos_paj
Znalazłem odpowiedź! Zmienna $wyswietl to tylko nazwa pliku. Aby ścieżka była pełna, nalezy połączyć zmienną $dir i zmienną $wyswietl :) Nie ma to jak przespać się z problemem! :)

Re: Co jest źle w tym kodzie?

: pn lut 21, 2005 9:52 am
autor: mdx
Artos_paj pisze:Znalazłem odpowiedź! Zmienna $wyswietl to tylko nazwa pliku. Aby ścieżka była pełna, nalezy połączyć zmienną $dir i zmienną $wyswietl :) Nie ma to jak przespać się z problemem! :)
przeciez ci to napisałem dwa posty wyzej ;)

Re: Co jest źle w tym kodzie?

: wt lut 22, 2005 4:26 pm
autor: Artos_paj
No rzeczywiście :D troche mnie te ukośniki zmyliły... :) Ale mam jeszcze jeden problem... Jak to zrobić, żeby pliki były wyświetlane w odwrotnej kolejności? Bo teraz jest standardowe sortowanie wg nazwy, a nazwą jest data dodania newsa. Jak zrobić, żeby wyświetlał kolejne posty od góry?