Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Úprava dat v CSV souboru, pomocí PHP.

Ahoj,
prosím o radu, už vím jak z části pracovat ze souborem .csv, ale teď zase zkouším jeho úpravu pomocí PHP.
Mám databázi:

1002;Model1;233
1003;Model1;323
1004;Model1;546
1005;Model1;988
1006;Model1;754

S ní pracuji pomocí PHP scriptu:

<?php
	$handle = fopen('model.csv', 'r');
	
	$id_natvrdo = 1004;
	
	while ($csv = fgetcsv($handle, 0, ';')) {
		if ($csv[0] == $id_natvrdo) {
			echo $csv[2];
			break;
		}
	}
?>

Otázka je, jak upravit určitou hodnotu? Třeba $csv[2], změnit na jiné číslo.
Jaké funkce použít? Co jsem zjistil, asi je potřeba si to nějak rozdělit do polí, uložit do proměnné, upravit hodnotu resp. do proměnné vložit novou hodnotu a celé to znova uložit do toho souboru, jestli je teoreticky zhruba dobře, tak to stejně bohužel nedám dohromady, zkoušel jsem nějaké nesmysly, ale to nedám. Prosím nejlépe o kód a hlavně vysvětlení.

Případně děkuji moc.

Předmět Autor Datum
napriklad takto: Ulozis si cely CSV do 2D pola. Zmenis nejaku hodnotu na 666. Otvoris znovu subor al…
wam_Spider007 22.05.2014 20:37
wam_Spider007
Super, to je paráda, něco takového jsem si představoval. Array_push jsem neznal. Ani jsem nevěděl, ž…
Vlk89 22.05.2014 22:03
Vlk89
vyrob si premennu povedzme $criadku. nainicializuj ju na 0 a v cykle ju potom vzdy na konci o 1 iter…
wam_Spider007 22.05.2014 22:09
wam_Spider007
Ty jo super, jak jednoduché. Už nic nemám (zatím :-)). Díky moc. poslední
Vlk89 22.05.2014 23:07
Vlk89

napriklad takto:
Ulozis si cely CSV do 2D pola. Zmenis nejaku hodnotu na 666. Otvoris znovu subor ale tentokrat na zapis. S tym, ze pri otvoreni sa cely obsah zmaze a postupne tam nasackujes naspat pole.

<?php
	$list = array();
	$handle = fopen('model.csv', 'r');
	
	while ($csv = fgetcsv($handle, 0, ';')) {
		array_push($list, $csv);
	}
	fclose($handle);
	
	$list[0][2] = '666';
	
	$handlew = fopen('model.csv', 'w');

	foreach ($list as $fields) {
		fputcsv($handlew, $fields, ';');
	    echo "zapis riadku<br>";
	}
	
	fclose($handlew);
?>

Super, to je paráda, něco takového jsem si představoval. Array_push jsem neznal. Ani jsem nevěděl, že si mohu třeba vypsat určitý řádek a index v řádku, v jednom příkazu echo $list[0][2]; Paráda, díky moc.
No a ještě by mě zajímalo, když jsme u toho, kdybych spojil nějak tento kód plus ten kód co jsem napsal já, aby mi dosadil do proměnné $list[0][2] pomocí proměnné číslo řádku, zkoušel jsem $list[$cisloradku][2], když proměnné dám hodnotu tak funguje, ale jak zjistím číslo řádku? Podle toho jaké zadám ID, mi ho najde na řádku a vypíše číslo toho řádku.

Třeba toto, že jo je ptákovina, někde jsem to našel, před pár dny, že mi to vypsalo číslo řádku, ale kód už nemám.

<?php
$handle = fopen('kosik.csv', 'r');
	
	$id_natvrdo = 1004;
	 
	while ($csv = fgetcsv($handle, 0, ';')) {
  		if ($csv[0] == $id_natvrdo) {
			echo $csv;
     }            
    
	}
  
 
  
  
?> 

vyrob si premennu povedzme $criadku. nainicializuj ju na 0 a v cykle ju potom vzdy na konci o 1 iteruj.
napriklad takto:

<?php
$handle = fopen('kosik.csv', 'r');
	
	$id_natvrdo = 1004;
$criadku = 0;
	 
	while ($csv = fgetcsv($handle, 0, ';')) {
  		if ($csv[0] == $id_natvrdo) {
			break;
     }            
$criadku = $criadku + 1;
    
	}
  
 echo $criadku;
  
  
?>

Zpět do poradny Odpovědět na původní otázku Nahoru