ugrás a tartalomhoz

Adatok változóba tétele egy adott fájl adott sorából

attiss94 · 2012. Jan. 17. (K), 19.13
Sziasztok!
Korábban már láttam ilyen megoldást, de sehol sem találom a fájlt, Google barátom sem volt segítségemre. Arról van szó, hogy van egy xyz.txt állományunk, melyben a következő struktúrában helyezkednek el az adatok: sorszám,cím,sebesség,hossz.
Például:
1,Michael Jackson - Bad,120BMP,4:01 (nulladik sor)
2,Shakira - Waka waka,110BPM,3:26 (első sor)
... és így tovább.

Minden egyes sorban így rendezkednek az adatok. A kérdésem az lenne, hogy hogyan tudnám átalakítani az egyes adatokat változókká? (Tisztában vagyok vele, hogy valamit a vesszőkkel kell variálni, de semmi ötletem nincs.)

A válaszokat előre is köszönöm!
 
1

rtfm

Poetro · 2012. Jan. 17. (K), 19.20
3

Köszönöm a választ, de

attiss94 · 2012. Jan. 17. (K), 19.40
Köszönöm a választ, de valahogy nem szeretne összejönni...
  1. $fajl = "xyz.txt";  
  2. $nyitas = fopen($fajl"r");  
  3. $sorok = file($fajl);  
  4. $sorszam = "";  
  5. while (($adat = fgetcsv($nyitas, 1000, ",")) !== FALSE)  
  6.     {  
  7.         $adat = $sorszam;  
  8.     }  
  9. echo $sorszam;  
Valószínűleg rosszul értelmeztem a leírást, ha megkérlek tudnál nekem egy példát mutatni, ahol egy adott sort több változóba pakolunk bele?
4

Például már a legelső

Poetro · 2012. Jan. 17. (K), 20.06
Például már a legelső példa:
  1. $row = 1;  
  2. if (($handle = fopen("test.csv""r")) !== FALSE) {  
  3.     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {  
  4.         $num = count($data);  
  5.         echo "<p> $num fields in line $row: <br /></p>\n";  
  6.         $row++;  
  7.         for ($c=0; $c < $num$c++) {  
  8.             echo $data[$c] . "<br />\n";  
  9.         }  
  10.     }  
  11.     fclose($handle);  
  12. }  
Ekkor ugye a $data változó tömbelemi az egyes mezők abban a sorban. A $row pedig ugye jelöli, hogy melyik sorról van szó (egytől indulva).
Azt nem teljesen értem miért olvasod be a teljes fájlt a file függvénnyel, ha ugyanezt megteszed az fgetcsv segítségével is. Ugyanis az fgetcsv is soronként olvas. Egy meghívással pontosan egy sort olvas be, és dolgoz fel. A másik, hogy miért is írod felül a beolvasott adatokat az üres $sorszam valtozóval?
6

Köszönöm a választ, minden

attiss94 · 2012. Jan. 17. (K), 20.16
Köszönöm a választ, minden tiszta. "Szarvashiba", de véletlenül fordítva írtam, a $sorszam változónak szerettem volna megadni az $adat változó értékét.
5

$sorszam = ""; // ...

kuka · 2012. Jan. 17. (K), 20.09
  1. $sorszam = "";    
  2. // ...  
  3.         $adat = $sorszam;    
  4. // ...  
  5. echo $sorszam;  
Ezek után úgy-e nem várod, hogy a $sorszam értéke más legyen mint az eredeti ""?

A dokumentációba van is egy hozzászólás amely mutassa a megoldást: list().
7

Köszönöm a választ,

attiss94 · 2012. Jan. 17. (K), 20.17
Köszönöm a választ, véletlenül felcseréltem a két változót nagy sietségemben...
2

Esetleg egy ilyen megoldás

H.Z. v2 · 2012. Jan. 17. (K), 19.25
Esetleg egy ilyen megoldás nem lenne jó: http://php.net/manual/en/function.fgetcsv.php?

(affene... addig szerkesztgettem, hogy lemaradtam :) )