Megnyitás, kiolvasás, írás, majd mentés PHP-vel.
Sziasztok. Dolgozok egy nevelde-szerűségen, de elakadtam. Szeretném megcsinálni, hogy mikor valaki vásárol a boltban, a PHP nyissa meg azt a fájlt, amiben a felhasználó pénzének összege van, ellenőrizze, hogy van e elég pénze az adott cuccra, ha van, akkor vonja le az árát, majd mentse el a fájlt, ha nincs, akkor dobjon ki egy hibaüzenetet. ha ez kész van, nyissa meg az eszköztár fájlt, és rakja hozzá a megvásárolt tárgyat, tehát egy képet.
eddig ide jutottam, nem jó, és szerintem nem is működik:aki tud segítsen!
■ eddig ide jutottam, nem jó, és szerintem nem is működik:
<?php
$File = "penz.txt";
if (file_exists($File))
# fa létezik a fájl
{
$fp = fopen($File,"r");
# megnyitja olvasásra
$num = fread($fp, filesize($File));
# kiolvassa a tartalmát
fclose($fp);
# bezárja
$num = $num - 200;
# levonja az árat
$fp = fopen($File, "w");
# újra megnyitja írásra
fwrite($fp, $num, 10);
# felülírja az új értékkel és zárja a fájlt
fclose($fp);
echo("Maradék pénzed: <B>" . chop($num) . "</B>.");
# kiírja a lapon az új értéket.
}
?>
Ráadásul
Ez sokkal egyszerűbb lenne
nem jó, és szerintem nem is
Honnan tudod, hogy nem jó, és honnan tudod, hogy nem is működik? Mit jelent az, hogy nem működik, és hogy nem jó?
Hát egy dolog, hogy levonja a
Egyébként őrültség ilyesmit tranzakció nélkül csinálni. Vagy a pénz veszhet el, vagy a terméket kapja meg ingyen. Egyik sem valami fair.
gyakorlás
Idézet helyett legközelebb
Amit beküldtél tisztán látszik, hogy a túl sok felesleges comment hogyan teszi olvashatatlanná a kódot. Ha nem bánod felhasználom majd az egyik cikkemhez, már ha végre lesz időm írni.
Az fopen és társai helyett használhatnád a
file_get_contents
és afile_put_contents
függvényeket, sokkal egyszerűbb velük az élet. Ha tudsz, akkor válts adatbázisra, azt erre találták ki. Ha nem tudsz, akkor azt hiszem van olyan megoldás, ami php-s adatbázis emuláció (vagy minek nevezzem). Elfelejtettem a nevét, sosem használtam. A leggyengébb tárhely is adni szokott mysql-t. Ha mysql-t tolsz, akkor innodb-re állítsd az adatbázis ill. a táblák típusát, abban tudsz tranzakciókat kezelni, a myisamban nem. Ajánlom hozzá a mysql workbench-et, elég jól használható tervező... Netbeans-ben még meg lehet adni adatbázis kapcsolatot is, aztán elvileg megy az autocomple az sql query-khez is benne. Ja és PDO-t használj a kapcsolódáshoz, prepared statementeket a lekérésekhez, és escapeld a változókat. Nem valami komplikált az SQL, pár nap alatt meg tudod tanulni, ha érdekel a téma.egyrészt nem tudjuk mi a
amúgy annyit mindenképp változtatnék rajta, hogy csak egy fopen-t használnék 'r+' ugye.
még egy dolog
most már csak annyi kéne, hogy a fölső kódban hogyan lehetne leellenőrizni, hogy nem e 0 (vagy jelen esetben 200 alatt van) a felhasználó pénze, tehát ha nincs rá kerete akkor kiírjon egy hibaüzenetet.
Elárulod?
if
nyelvi szerkezetről hallottál. Már csak a>=
illetve a<=
összehasonlító műveletet kell használnod egyik oldalon a jelenlegi összeggel, másikon a levonandóval (a neked kellő sorrendben természetesen.).