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:
  1. <?php   
  2. $File = "penz.txt";   
  3. if (file_exists($File))   
  4. # fa létezik a fájl   
  5. {   
  6. $fp = fopen($File,"r");   
  7. # megnyitja olvasásra   
  8. $num = fread($fpfilesize($File));   
  9. # kiolvassa a tartalmát   
  10. fclose($fp);   
  11. # bezárja   
  12. $num = $num - 200;   
  13. # levonja az árat  
  14. $fp = fopen($File"w");   
  15. # újra megnyitja írásra   
  16. fwrite($fp$num, 10);   
  17. # felülírja az új értékkel és zárja a fájlt   
  18. fclose($fp);   
  19. echo("Maradék pénzed: <B>" . chop($num) . "</B>.");   
  20. # kiírja a lapon az új értéket.   
  21. }   
  22. ?>  
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.).