Co jest źle w tym kodzie?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Co jest źle w tym kodzie?

Post 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??
Lukar
Posty: 13
Rejestracja: pn lip 05, 2004 12:10 pm
Lokalizacja: Wawa
Kontakt:

Re: Co jest źle w tym kodzie?

Post 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]
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post autor: Artos_paj »

Słuszna uwaga, ale to chyba nie o to chodziło... Wyskakuje parse error przy funkcji if :|
Lukar
Posty: 13
Rejestracja: pn lip 05, 2004 12:10 pm
Lokalizacja: Wawa
Kontakt:

Re: Co jest źle w tym kodzie?

Post autor: Lukar »

nie zamknąłeś nawiasu
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post autor: Artos_paj »

Racja! I teraz działa wypisanie nazw plików, ale niestety, nie wyświetla się ich zawartość :/
Lukar
Posty: 13
Rejestracja: pn lip 05, 2004 12:10 pm
Lokalizacja: Wawa
Kontakt:

Re: Co jest źle w tym kodzie?

Post 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]
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post autor: Artos_paj »

Spróbuję, a czy przed tym nie trzeba użyć fopen() ?? Chyba o tym zapomniałem :)
Lukar
Posty: 13
Rejestracja: pn lip 05, 2004 12:10 pm
Lokalizacja: Wawa
Kontakt:

Re: Co jest źle w tym kodzie?

Post autor: Lukar »

nie trzeba, na przyszłość zerkaj częściej do manuala http://pl.php.net
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post 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()
mdx
Nowy
Nowy
Posty: 84
Rejestracja: wt wrz 16, 2003 7:59 pm
Lokalizacja: Łuków
Kontakt:

Re: Co jest źle w tym kodzie?

Post autor: mdx »

dopisz [php]<?php
$wyswietl=''.$dir.'\\'.$wyswietl.'';
?>[/php]

przed
[php]<?php
echo file_get_contents($wyswietl);
?>[/php]
Lukar
Posty: 13
Rejestracja: pn lip 05, 2004 12:10 pm
Lokalizacja: Wawa
Kontakt:

Re: Co jest źle w tym kodzie?

Post 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...
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post 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! :)
mdx
Nowy
Nowy
Posty: 84
Rejestracja: wt wrz 16, 2003 7:59 pm
Lokalizacja: Łuków
Kontakt:

Re: Co jest źle w tym kodzie?

Post 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 ;)
Artos_paj
Posty: 11
Rejestracja: czw lut 17, 2005 10:18 pm
Lokalizacja: Pajęczno

Re: Co jest źle w tym kodzie?

Post 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?
ODPOWIEDZ