Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 9. 11. 2008, 00:06:02
Zdravím
Měl bych jeden dotaz. Ukládám si data z formu do CSV, mohu zobrazit i jednotlive soubory ve adresari a otevrit je. Nyni bych ale potreboval, nacist hodnoty z kazdeho csv (konkrétně z druhého řádku) a ty ukládat do pole. Jakmile by cyklus došel na konec souboru, každou jednotlivou položku pole vypsat jako nový řádek do noveho csv souboru, který by sloužil jako export. Tuší někdo, kde bych o tom naleznul nějaké povídání nebo radu? Děkuji za každou radu... |
||
Alphard Profil |
#2 · Zasláno: 9. 11. 2008, 00:36:01
„Tuší někdo, kde bych o tom naleznul nějaké povídání nebo radu?“
v čem konkrétně je problém? načíst druhý řádek? pokud nejsou ty soubory příliš velké, šlo by použít funkci file(), druhý řádek bude v poli pod indexem 1, pokud jsou soubory velké, musíte je začít číst od začátku a rozpoznat začátek a konec druhého řádku postupně odkládat do pole a na závěr spojit s implode() a uložit |
||
gardener Profil |
#3 · Zasláno: 9. 11. 2008, 00:41:37 · Upravil/a: gardener
Soubory jsou malé, měl jsem ale zato, že by mělo být možné načíst přímo a jenom druhý řádek a ten uložit jako hodnotu pole (tj. např ze 40 souborů, 40 druhých řádků==>39 indexů v poli) a tyto indexy pak vypsat jako jednotlive radky do noveho souboru.
(jelikož už jsou hodnoty rozděleny středníky při načtení do pole namusím je tak dále rozdělovat)..takže co jedna hodnota pole, to jeden nový řádek výpisu. Bylo by to možné takto? EDIT: Vzpoměl jsem si, že k přečtení určitého řádku slouží fce fgets ale netuším, jak ji ve výsledku použít.. |
||
gardener Profil |
#4 · Zasláno: 10. 11. 2008, 15:20:25
Netuší někdo jak by se dala situace vyřešit pomocí fgets?
|
||
nightfish Profil |
#5 · Zasláno: 10. 11. 2008, 15:37:42
„Netuší někdo jak by se dala situace vyřešit pomocí fgets?“
fgets načte jeden řádek takže po otevření souboru pomocí fopen() zavoláš fgets($fp); $s = fgets($fp); // a tady bude $s obsahovat druhý řádek // co s ním uděláš je na tobě |
||
gardener Profil |
#6 · Zasláno: 10. 11. 2008, 15:42:39 · Upravil/a: gardener
Pravda, ale nechápu co označuje $fp? To by mělo býti odkázání na soubor, ale jak docílím toho, abych načetl třeba řádek druhý?
Že by tam by to určoval nějaký další parametr? |
||
Alphard Profil |
#7 · Zasláno: 10. 11. 2008, 15:47:40
„Pravda, ale nechápu co označuje $fp?“
aspoň na tohle jste mohl mrknout do manuálu, je to ukazatel na soubor otevřený pomocí fopen() druhý řádek načte opětovné zavolání funkce, přesně jak vám napsal nightfish, IMHO nelze načíst jen druhý řádek |
||
gardener Profil |
#8 · Zasláno: 10. 11. 2008, 15:53:37
Ach so..omlouvám se, nedošlo mi to..ale nějakým působem přeci musí jít načíst jenom určitý řádek..myslel jsem, že by to mohla umět fgetcsv ale to je témeř totožné..
|
||
Alphard Profil |
#9 · Zasláno: 10. 11. 2008, 15:54:42
Kdyby jste znal počet znaků v prvním řádku, můžete využít fseek()
|
||
BetaCam Profil |
#10 · Zasláno: 10. 11. 2008, 16:04:01
gardener
Je to sice přes ruku ale funguje to : function readLine($file,$line){ $i = 0; $handle = fopen($file, "r"); while($line != $i){ $out = fgets($handle); $i++; if (feof($handle)) { fclose ($handle); return FALSE; } } fclose ($handle); return $out; } readLine('soubor.csv', 2); |
||
Časová prodleva: 2 roky
|
|||
silvik Profil * |
#11 · Zasláno: 14. 7. 2010, 12:24:37
A co takhle použít fci fgetcsv? Tam stačí nadefinovat, který řádek zpracováváš a je to, ne? ;)
|
||
Časová prodleva: 14 let
|
0