Autor Zpráva
TrueFriend
Profil
Zdravím. Potřeboval bych poradit.
Mám .txt soubor a chtěl bych do něj pomocí PHP zapsat data v následujícím tvaru:

;id;name;lastname;count;maxcount;

Samotný zápis všech hodnot najednou není problém, ale vůbec netuším jak udělat, aby mi PHP upravilo jen jednu hodnotu mezi středníky.

Například abych udělal z:
;128;Ales;Pokorny;5;10;

toto:
;128;Ales;Ostry;5;10;

Možná je to začátečnický dotaz, ale přesto si s tím nevím rady. Díky
Havel-st
Profil *
Rozdělil bych řádek pomocí explode() na středníky a potřebné hodnoty hodil do value inputů formuláře.
Pak už jen poskládat řádek a odeslat k zápisu,
třeba na vrchu stránky v podmínce: když isset($_POST['name']).
AM_
Profil
vřele doporučuji naučit se pro ukládání tabulkových dat používat MySQL, není to těžké a je to mnohem efektivněší.
TrueFriend
Profil
Také bych to raději řešil přes databázi. Ale na poli databází se zatím neorientuji.
Vím, že téma databází se tu probírá jinde, ale i přesto... mohl bych poprosit někoho, zdali by mi dal nějaký nástřel toho, jak by takový zápis který by umožňoval to co řeším umožňoval?
Na internetu je spousta how-to, ale i přesto jsem princip fungování databáze nepochopil / to co jsem našel tak jsem to z toho nepochopil, ale přikládám to spíše k tomu, že jsem spíše špatně hledal :)
Díky

Co se týká PHP, tak jsem si poradil následovně:

$file="test.txt";
$fp = fopen($file, "a");
fclose($fp);
$fc = fopen($file, "r");
$line_of_text = fgets($fc);
list($home, $id, $rokcr, $mesiccr, $dencr, $hodinacr, $minutacr, $vterinacr, $name, $count, $maxcount, $maxcountauto, $sendfrom, $sendto, $regip, $sendtomsg, $sendtomsgauto, $size, $limited, $end) = split(";",$line_of_text);

$count = $count+1;
echo $id." , ".$rokcr."-".$mesiccr."-".$dencr." - ".$hodinacr.":".$minutacr.":".$vterinacr." , ".$name." , ".$count." , ".$maxcount." , ".$maxcountauto." , ".$sendfrom." , ".$sendto." , ".$regip." , ".$sendtomsg." , ".$sendtomsgauto." , ".$size." , ".$limited;

$f=fopen($file,"w");
$str_new = $home.";".$id.";".$rokcr.";".$mesiccr.";".$dencr.";".$hodinacr.";".$minutacr.";".$vterinacr.";".$name.";".$count.";".$maxcount.";".$maxcountauto.";".$sendfrom.";".$sendto.";".$regip.";".$sendtomsg.";".$sendtomsgauto.";".$size.";".$limited.";".$end;
fwrite($f,$str_new);
fclose($f);


Což funguje naprosto dokonale dle mých potřeb, ale jak říkám raději bych to řešil přes tu databázi, pokud by někdo poradil :)
AM_
Profil
TrueFriend:
Také bych to raději řešil přes databázi. Ale na poli databází se zatím neorientuji.
s MySQL se naučíš rychleji, než vyřešíš dva problémy podobné tomuto při práci se soubory. Zkus to tady - články 34-48.
Nástin:
//vytvoreni tabulky (nejlepe v phpMyAdminu):
CREATE TABLE users(
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(40),
  lastname VARCHAR(40),
  count INT,
  maxCount INT,
  PRIMARY KEY(id)
  );
//ulozeni do mysql:
mysql_query("INSERT INTO users (name, lastname, count, maxcount) VALUES ('Jan', 'Novak', 0, 0)");
//aktualizace:
mysql_query("UPDATE users SET count=count+1 WHERE id=5");
//precteni:
$data = mysql_querySELECT name, lastname, count FROM users ORDER BY lastname");
while ($row = mysql_fetch_assoc($data)){
  echo "{$data['name']} {$data['lastName']}  -  {$data['count']}<br>";
}
TrueFriend
Profil
díky, vážně to nevypadá složitě :) zkusím to

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0