Fájl tartalmának kiíratása
Szeretnék létrehozni egy olyan oldalt, amelyik fájlokból olvas ki szöveget és mindegyik fájl tartalmát egy külön táblázatban írja ki.
El is készítettem a kódot ami a következőképpen néz ki:
<?php
$kvtnev = "kozlemenyek";
$kvt = opendir($kvtnev) or mkdir("kozlemenyek");
$szamlalo=0;
while (gettype($fajl = readdir($kvt))!='boolean') {
if (is_file("$kvtnev/$fajl"))
++$szamlalo;
$szam = $szamlalo -1;
$fajlnevek[] = "$kvtnev/$szam".".txt";
}
$fnevek = array_shift($fajlnevek);
$fnevek = array_shift($fajlnevek);
foreach($fajlnevek as $fajlnev) {
$fa = fopen($fajlnev, "r");
while(!feof($fa)) {
$meret = filesize($fajlnev);
print ("<table width=517 height=99 border=1 cellpadding=0 cellspacing=0 bordercolor=#FFFFFF><tr> <th width=517 height=30 align=left valign=middle background=kepek/fejlec.png>");
$ido=date("Y.m.d. H:i", filemtime($fajlnev));
print ("$ido");
$szoveg = fread($fa, $meret);
print "</th></tr><tr><td width=517>$szoveg</td> </tr></table>";
}
}
closedir($kvt);
?>
A probléma a következő, a fájlok tartalmát megjeleníti külön külön egy-egy táblázatban, de mindegyik után kiír egy üres táblázatot is. Tehát egy szöveges kocka, egy üres váltakozik. Ha az fread helyett az fgets függvényt használom, akkor minden sort külön táblázatban jelenít meg és nem ír ki üreset, ami csak azért nem jó mert így egy fájl tartalma feldarabolódik és soronként külön táblázatban jelenik meg de ettől a függvénytől nagyjából ezt is vártam. Csak azt nem értem, hogy az fread függvény miért ír ki üres táblázatokat nekem.
■ El is készítettem a kódot ami a következőképpen néz ki:
<?php
$kvtnev = "kozlemenyek";
$kvt = opendir($kvtnev) or mkdir("kozlemenyek");
$szamlalo=0;
while (gettype($fajl = readdir($kvt))!='boolean') {
if (is_file("$kvtnev/$fajl"))
++$szamlalo;
$szam = $szamlalo -1;
$fajlnevek[] = "$kvtnev/$szam".".txt";
}
$fnevek = array_shift($fajlnevek);
$fnevek = array_shift($fajlnevek);
foreach($fajlnevek as $fajlnev) {
$fa = fopen($fajlnev, "r");
while(!feof($fa)) {
$meret = filesize($fajlnev);
print ("<table width=517 height=99 border=1 cellpadding=0 cellspacing=0 bordercolor=#FFFFFF><tr> <th width=517 height=30 align=left valign=middle background=kepek/fejlec.png>");
$ido=date("Y.m.d. H:i", filemtime($fajlnev));
print ("$ido");
$szoveg = fread($fa, $meret);
print "</th></tr><tr><td width=517>$szoveg</td> </tr></table>";
}
}
closedir($kvt);
?>
A probléma a következő, a fájlok tartalmát megjeleníti külön külön egy-egy táblázatban, de mindegyik után kiír egy üres táblázatot is. Tehát egy szöveges kocka, egy üres váltakozik. Ha az fread helyett az fgets függvényt használom, akkor minden sort külön táblázatban jelenít meg és nem ír ki üreset, ami csak azért nem jó mert így egy fájl tartalma feldarabolódik és soronként külön táblázatban jelenik meg de ettől a függvénytől nagyjából ezt is vártam. Csak azt nem értem, hogy az fread függvény miért ír ki üres táblázatokat nekem.
Közben magam is keresgélem
Egy ötlet
$szoveg = fread($fa, $meret + 1);
változtatással a probléma.
Szia! Eloszor is figylemed
Eloszor is figylemedbe ajanlom a colorer BBCode-ot, hasznalataval konnyebb lesz a tobbieknek olvasni a kodod.
Nem ertem, hogy miert van szukseged a masodik while ciklusra, ha mar ugyis egyben olvasod be az egesz file-t. Amugy erre egy egyszerubb megoldas a file_get_contents("file_neve") fuggveny hasznalata, vagy ha ez nincs a PHP verziodban, akkor implode("", file("file_neve"));
Es kar eltarolni a fileneveket egy tombe, lehet a kiiratas azon a cikluson belul:
Felho
Köszönöm a segítséget.
Hogy miért ezt a megoldást választottam, amit leírtam, arra csak annyi mentségem van, hogy a php alapjaival, meg úgy általában a programozással még csak most ismerkedem, így annyit használok belőle amennyiről már olvastam azt is néha rosszul. De most legalább tanultam pár új dolgot. Igaz már annak is örültem, hogy magamtól sikerült működőképessé tenni a kódot.