ugrás a tartalomhoz

Megnyitás, kiolvasás, írás, majd mentés PHP-vel.

rainszarvas · 2012. Nov. 6. (K), 18.55
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:
<?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. 
} 
?>
aki tud segítsen!
 
1

Ráadásul

rainszarvas · 2012. Nov. 6. (K), 18.57
ráadásul ez még csak a pénzel csinál bármit is...
2

Ez sokkal egyszerűbb lenne

hunkris · 2012. Nov. 6. (K), 19.15
Ez sokkal egyszerűbb lenne SQL-ben, a júzerek tábláján egy külön pénz oszloppal.
3

nem jó, és szerintem nem is

Poetro · 2012. Nov. 6. (K), 20.44
nem jó, és szerintem nem is működik

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ó?
4

Hát egy dolog, hogy levonja a

inf · 2012. Nov. 6. (K), 22.03
Hát egy dolog, hogy levonja a pénzt, egy másik dolog, hogy nem adja hozzá a terméket, amit megvettél az inventory-dhoz, vagy mi van ebben a játékban...
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.
6

gyakorlás

Poetro · 2012. Nov. 6. (K), 22.27
Szerintem a fenti egy gyakorló példa fájlok kezelésére. Nem gondolnám, hogy bármi más hasznot is hajtana. És természetesen nem árt elsajátítani a fájlok ezen alacsonyabb szintű kezelését.
5

Idézet helyett legközelebb

inf · 2012. Nov. 6. (K), 22.17
Idézet helyett legközelebb használd a kódszínezés gombot, egyel alatta van az a kapcsos zárójel...

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 a file_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.
7

egyrészt nem tudjuk mi a

szabo.b.gabor · 2012. Nov. 7. (Sze), 09.18
egyrészt nem tudjuk mi a célod, és nem tudod, hogy mi nem megy. próbálkozz soronként végigmenni a kódon, vizsgáld meg hogy az fopen sikeresen lefutott-e, kapcsold be a hibaüzeneteket (error_reporting(E_ALL);ini_set('display_errors','On');)

amúgy annyit mindenképp változtatnék rajta, hogy csak egy fopen-t használnék 'r+' ugye.
8

még egy dolog

rainszarvas · 2012. Nov. 8. (Cs), 22.08
már megtaláltam amit kerestem, egy másik oldalon.
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.
9

Elárulod?

Poetro · 2012. Nov. 8. (Cs), 22.54
Azt azért elárulod, hogy mi volt a megoldás, amit kerestél? Gondolom az 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.).