Autor Zpráva
gardener
Profil
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
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
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
Netuší někdo jak by se dala situace vyřešit pomocí fgets?
nightfish
Profil
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
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
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
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
Kdyby jste znal počet znaků v prvním řádku, můžete využít fseek()
BetaCam
Profil
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);
silvik
Profil *
A co takhle použít fci fgetcsv? Tam stačí nadefinovat, který řádek zpracováváš a je to, ne? ;)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: