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
<?php

$mappa = "mappa";
$sortores = 0;

if (!is_dir($mappa)) {
	print "Nincs ilyen mappa.";
}

else {

	$open_dir = opendir($mappa);

	while (gettype($filename = readdir($open_dir)) != boolean) {

		if ($filename != "." AND $filename != "..") {
	
			$file_handle = fopen($mappa . "/" . $filename, "r");
			
			$contents = fread($file_handle, filesize($mappa . "/" . $filename));
			
			if ($sortores == 1) {
				$contents = nl2br($contents);
			}
			
			print $contents;
			
			fclose($file_handle);
	
		}

	}

	closedir($open_dir);

}

?>
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?
<?php
   
 else {  
   
     $open_dir = opendir($mappa);  
   
   				foreach(glob("verseny*.txt") as $filenameek){
    				$beolvasas = fopen($filenameek, 'r');
					
					}
                    
					$beolvasott = file_get_contents("$beolvasas");
					print "JSDFOLDSF" . $beolvasott;
					echo "TILLÁROM HAJJ";
               
             fclose($filenameben);  

?>
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:
$mappa = "versenyfajlok";  
# $sortores = 0;  
#   
# if (!is_dir($mappa)) {  
#     print "Nincs ilyen mappa.";  
# }  
#   
# else {  
#   
#     $open_dir = opendir($mappa);  
#   
#     while (gettype($filename = readdir($open_dir)) != boolean) {  
#   
#         if ($filename != "." AND $filename != "..") {  
#       
#             $file_handle = fopen($mappa . "/" . $filename, "r");  
#               
#             $contents = fread($file_handle, filesize($mappa . "/" . $filename));  
#               
#             if ($sortores == 1) {  
#                 $contents = nl2br($contents);  
#             }  
#               
#             print $contents;  
#               
#             fclose($file_handle);  
#       
#         }  
#   
#     }  
#   
#     closedir($open_dir);  
#   
# } 

}
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?
if (!isset($_POST['submit'])) {
} else { 
$lines = count(file($filename));

if ($lines < 30 )
{
$filetartalom = fopen($filename,"a+");
fwrite($filetartalom, $output);

# $mappa = "versenyfajlok";  
#  
#   
# if (!is_dir($mappa)) {  
#     print "Nincs ilyen mappa.";  
# }  
#   
# else {  
#   
#    # $open_dir = opendir($mappa);    
#      
#                 foreach(glob("verseny*.txt") as $filenameek){  
#                     $beolvasas = fopen($filenameek, 'r');  
#                       $beolvasott = fgets($filenameek);  
#                     echo "$beolvasott"; 
#                     }  
#                       
#                     
#                    echo "TILLÁROM HAJJ";  
#                  
#              fclose($filenameek);    
#     
#       
#           
#   
#   } 
 
#   else { echo "megtelt!" ; }
#     closedir($open_dir);  

}
}