ugrás a tartalomhoz

Összes txt beolvasása egy mappából

eronmezza · 2007. Aug. 23. (Cs), 23.31
egy mappából szeretném az összes txt fájlt kiíratni egy php oldalra. ezt hogyan lehet?
előre is köszi mindenkinek
 
1

lehet

zila · 2007. Aug. 23. (Cs), 23.41
Kiindulópont: Manual

További készségek amik a feladat megoldásához kellenek:
while, fopen, fgets vagy file_get_contents, echo vagy print függvények/utasítások ismerete és használata...
2

itt egy megoldás

Vas Dávid · 2007. Aug. 24. (P), 00.08
itt egy talán használható megoldás:
a $mappa változó értéke a könyvtár ahonnan olvassa a fájlokat
a $sortores változó értéke alapból 0, ha ezt 1-re módosítód ($sortores = 1;) akkor a böngészőben is kiteszi a <br /> tagokat (vagyis az újsort) ha a fáljban van sortörés
  1. <?php  
  2.   
  3. $mappa = "mappa";  
  4. $sortores = 0;  
  5.   
  6. if (!is_dir($mappa)) {  
  7.     print "Nincs ilyen mappa.";  
  8. }  
  9.   
  10. else {  
  11.   
  12.     $open_dir = opendir($mappa);  
  13.   
  14.     while (gettype($filename = readdir($open_dir)) != boolean) {  
  15.   
  16.         if ($filename != "." AND $filename != "..") {  
  17.       
  18.             $file_handle = fopen($mappa . "/" . $filename"r");  
  19.               
  20.             $contents = fread($file_handlefilesize($mappa . "/" . $filename));  
  21.               
  22.             if ($sortores == 1) {  
  23.                 $contents = nl2br($contents);  
  24.             }  
  25.               
  26.             print $contents;  
  27.               
  28.             fclose($file_handle);  
  29.       
  30.         }  
  31.   
  32.     }  
  33.   
  34.     closedir($open_dir);  
  35.   
  36. }  
  37.   
  38. ?>  
3

Nem megy

eronmezza · 2007. Aug. 24. (P), 01.30
valami oknál fogva nem akar működni:S nem enged ide kódot bemásolni, egy email címet tudsz adni esetleg?
9

hmm

city99 · 2007. Aug. 24. (P), 10.49
Bocsi de mar reg ota nosozogat egy elmeleti aprosag, amit ebbe a peldakodba is lathato.
Deklaralsz egy valtozot a 4 sorban, majd a script tovabbi reszeben van egy feltetel ami vizsgalja ezt a valtozot ami tulajdonkeppen egy konstans mert az elejen allitasz neki egy fix erteket.
A kerdes az hogy ez jo megoldas e? mert nekem teljesen feleslegesnek tunik egy konstas erteknek, ismetlodo vizsgalata.
2 otletem tamad ezzel kapcsolatban amit eppen sajat rendszerekben tesztelek.
1: ha nem tul hosszu a ciklus akkor elobb feltetel es ennek megfeleloen 2 kulombozo ciklus van
2: ami ebben az esetben is hasznalhato, hogy a kivant feladatra a konstans ertekenek megfeleloen meg a ciklus elott letrehozunk egy fugveny, es a ciklusbol csak a fugvenyt hivogatjuk.
Mind a ket megoldasnak elonye hogy megsporolja a felesleges n-szeri konstans vizsgalatot, viszont hatranya hogy a kod nagyobb lesz, tehat memot zabal.
Valakinek van valami okosabb megoldasa ?
4

van egyszerű megoldás

amonrpg · 2007. Aug. 24. (P), 06.52
nézz utánna: glob és file_get_contents nevű függvényekkel egyszerűen meg tudod csinálni.
5

működik

eronmezza · 2007. Aug. 24. (P), 09.46
köszi ez így méár alakul, annyi lenne még a kérdésem hogy így hogyan tudom formázni a szöveget amit kiír?
tehát ebbe line break-et hogyan tehetek például?
6

doksi

gex · 2007. Aug. 24. (P), 09.58
ha már utánanéztél a glob függvénynek, akkor a dokumentációban láthattad azt a szép példát, ami pont azt csinálja amit te szeretnél: kilistázza a *.txt mintára illeszkedő fájlneveket és a sorok végére rak egy sortörést. ha te ennél komolyabb, netán html formázásra vágysz, akkor ismerkedj meg a html és css nyelvek lehetőségeivel.

remélem senki nem fogja leírni a megoldást. a te érdekedben.
8

filegetcontents...

eronmezza · 2007. Aug. 24. (P), 10.34
igen csak ha beolvastatod a glob fájlok tartalmát filegetcontents-el és utána ezt a tartalmat iratod ki akkor hogyan teszel be sortörést...?
10

sortörés

gex · 2007. Aug. 24. (P), 11.13
a kérdésed azt jelenti, hogy hogyan lehet sortörést rakni egy szövegbe. de szerintem te inkább arra vagy kíváncsi, hogy a \r\n karaktereket hogyan tudod html sortörésre cserélni. sztring műveleteket nézd át.

szerk: Vas Dávid hozzászólásában benne van a megoldás...
7

utolsó else függvény nem jó ?

eronmezza · 2007. Aug. 24. (P), 10.06
utolsó else függvénnyel gondja van. ha kiveszem, működik de addig unexpected T_ELSE gondja van. a {} jeleket jópárszor átnéztem. ötlet?

miért nem tudok kódot bemásolni??
11

miért nem megy?

eronmezza · 2007. Aug. 25. (Szo), 11.58
alábbb egy részlet a kódból. a zagyvaságot kiechozza tehát eljut odáig a feltételekkel viszont a kellő fájlok tartalmát nem. hol a hibám?
  1. <?php  
  2.      
  3.  else {    
  4.      
  5.      $open_dir = opendir($mappa);    
  6.      
  7.                 foreach(glob("verseny*.txt"as $filenameek){  
  8.                     $beolvasas = fopen($filenameek'r');  
  9.                       
  10.                     }  
  11.                       
  12.                     $beolvasott = file_get_contents("$beolvasas");  
  13.                     print "JSDFOLDSF" . $beolvasott;  
  14.                     echo "TILLÁROM HAJJ";  
  15.                  
  16.              fclose($filenameben);    
  17.   
  18. ?>  
12

ez elég zagyva

Táskai Zsolt · 2007. Aug. 25. (Szo), 13.35
miért rontottad el a beküldött kódot? az jónak tűnt.
13

az sem jaú

eronmezza · 2007. Aug. 25. (Szo), 13.46
nem működött az sem...
14

pedig az még mindig jónak tűnik

Táskai Zsolt · 2007. Aug. 25. (Szo), 13.56
ne rontsd el! a mappa nevű változóba a futó PHP szripttől számított relatív path-t kell írni. tehát ha pl. közvetlen a fájlok mellett van a .php, akkor az értéke legyen ".". mondjuk Dávid kódjának hibája/gyengesége, hogy nem nézi meg, hogy "is_file" (fájl-e), amit talál az enumerálás során, tehát ha ott még alkönyvtárak is vannak, abból gond lehet.

kísérletezzgess vele!
15

akkor hogy írjam?

eronmezza · 2007. Aug. 25. (Szo), 14.01
értem az lehet h itt van a gond.. de akkor hogyan adjam meg a mappát?
pl ha így írom pont pont slash versenyfajlok az jó? azért nem teszek még slasht utána mert elvileg a script a beolvasásnál hozzátesz egyet
16

relatív path és kész

Táskai Zsolt · 2007. Aug. 25. (Szo), 18.05
ha vagy egy mappád, amiben benne van a kérdéses php fájl valamint a "versenyfajlok" nevű mappa, akkor a string helyes értéke "versenyfajlok" - és kész. ha be van dobva a php fájl a versenyfájlok közé, akkor pedig az értéke "." - ennyi. egyéb esetekben normál relatív path kell.
17

NEM MEGY ÁÁÁ

eronmezza · 2007. Aug. 25. (Szo), 23.06
na, lecseréltem a változót sima versenyfajlok névre és a változatosság kedvéért így semműkdöik itt a teljes script:
  1. $mappa = "versenyfajlok";    
  2. $sortores = 0;    
  3. #     
  4. if (!is_dir($mappa)) {    
  5. #     print "Nincs ilyen mappa.";    
  6. # }    
  7. #     
  8. else {    
  9. #     
  10. #     $open_dir = opendir($mappa);    
  11. #     
  12. #     while (gettype($filename = readdir($open_dir)) != boolean) {    
  13. #     
  14. #         if ($filename != "." AND $filename != "..") {    
  15. #         
  16. #             $file_handle = fopen($mappa . "/" . $filename"r");    
  17. #                 
  18. #             $contents = fread($file_handlefilesize($mappa . "/" . $filename));    
  19. #                 
  20. #             if ($sortores == 1) {    
  21. #                 $contents = nl2br($contents);    
  22. #             }    
  23. #                 
  24. #             print $contents;    
  25. #                 
  26. #             fclose($file_handle);    
  27. #         
  28. #         }    
  29. #     
  30. #     }    
  31. #     
  32. #     closedir($open_dir);    
  33. #     
  34. # }   
  35.   
  36. }  
18

nem változtattam

eronmezza · 2007. Aug. 25. (Szo), 23.07
pedig most tényleg nem változtattam már semmit az ajánlott scriptben...
19

RTFM

zila · 2007. Aug. 26. (V), 23.22
célszerű lenne (végre) elolvasni a manualt. A fopen nem olvas be semmit, csak megnyit egy file-t. A file_get_contents paramértere nem egy file handle hanem egy file név. A beolvasás és kiírás nincs benne a ciklusban, így ha működne is a ciklusodban a beolvasás, mindig a legutolsó file tartalma jelenne meg.
20

kösz a segítséget

eronmezza · 2007. Aug. 27. (H), 10.06
először is a kösz a segítségget mert ezzel legalább tudok mit kezdeni.. h hol ronthattam el, azzal nem tudok mit csinálni h miért rontom el más scriptjét... nyilbván ha működne nem írnám át.
na viszont egyelőre ez sem akar működni pedig átírtam amit mondtál. hol lehet a hibám?
  1. if (!isset($_POST['submit'])) {  
  2. else {   
  3. $lines = count(file($filename));  
  4.   
  5. if ($lines < 30 )  
  6. {  
  7. $filetartalom = fopen($filename,"a+");  
  8. fwrite($filetartalom$output);  
  9.   
  10. $mappa = "versenyfajlok";    
  11. #    
  12. #     
  13. if (!is_dir($mappa)) {    
  14. #     print "Nincs ilyen mappa.";    
  15. # }    
  16. #     
  17. else {    
  18. #     
  19. #    # $open_dir = opendir($mappa);      
  20. #        
  21. #                 foreach(glob("verseny*.txt"as $filenameek){    
  22. #                     $beolvasas = fopen($filenameek'r');    
  23. #                       $beolvasott = fgets($filenameek);    
  24. #                     echo "$beolvasott";   
  25. #                     }    
  26. #                         
  27. #                       
  28. #                    echo "TILLÁROM HAJJ";    
  29. #                    
  30. #              fclose($filenameek);      
  31. #       
  32. #         
  33. #             
  34. #     
  35. #   }   
  36.    
  37. #   else { echo "megtelt!" ; }  
  38. #     closedir($open_dir);    
  39.   
  40. }  
  41. }