ugrás a tartalomhoz

webshop jellegu kerdes refresh vagy reload kerdes

richie85 · 2011. Jan. 31. (H), 01.54
Sziasztok,

azzal a segitseg keressel fordulok hozzatok, hogy keresek valami megoldast egy azonnali frissites szerure. Ezt jol meg aszontam. Nem vagyok valami tapasztalt PHPes meg.

Szoval van egy webshop, ahol vannak a termekek, es van a kosar. Amit szeretnek az roppant egyszeru, amint a kosar iconra klikkelek, az ugyan azon a weblapon azonnal meg is jelenjen, ne kelljen allandoan az F5 billentyut nyomogatni.

Amikor a kosar ikonra klikkelek, akkor termek belekerul egy mysql "kosar" tablaba, es a kosar tabla rekordokat olvastatom ki a weblap "kosar box"-aban "while{}"-al. De csak akkor latom a frissen felvett rekodokat, ha ranyomok az F5-re.

Probalkoztam, tobb fele megoldassal, peldaul:

1.<iframe>-be raktam a kosar boxot
es kuldtem ra ezt a script-et:
<script type=text/javascript>
   function refresh()
{
 document.all.lekeres.src = document.all.lekeres.src;
}
window.setInterval("refresh()",2000);
</script>
Ezzel az a baj, hogy flash-el, villog a monitoron, amikor frissitget. Jah, es fekete a hatterem a weblapon, es eleg idegesito.

2. Probaltam a header-t
header("refresh:5; url=kosar.php"); 
3.Probaltam HEAD tagot:
<meta http-equiv="refresh" content="5" >
Mindegyik csak vibral, amikor frissit. es van, hogy tobb masodpercet kell varni, hogy az uj adat megjelenjen.

Szoval nem hiszem, hogy nincs olyan technika, amivel azonnal megtudom jeleniteni az ujrekodot, ahogy beerkezik a mysql tablaba. Ahogy ranyomok, a kosarba vele gombra, azonnal meg is jelenjen a kosar boxban.

Annyi weboldalon lattam mar jol mukodni ezt, mi lehet nalam a baj..

segitsetek kerlek

Udv.: Richie
 
1

Én nem igazán értem pontosan

neogee · 2011. Jan. 31. (H), 08.47
Én nem igazán értem pontosan mi a probléma, ugyanis:

Amikor adatot post-olsz a szerver felé, akkor alap esetben automatikusan újratöltődik az oldal. Ezzel megvan az a lehetőséged, hogy az újratöltéskor immáron a friss kosár tartalmat írd ki a képernyőre. A titok nyitja voltaképpen csak annyi, hogy a kosárba rakás műveletének meg kell előznie a kiíratás műveletét. Más szempontok miatt is célszerű, ha így történik. És az meg még célszerűbb, ha ennek a két parancsnak a feldolgozása két külön url-t kap, és a szkripted a kosárba tevés után visszairányítja a felhasználót a terméklista url-jére, vagy oda ahol éppen volt a kosárművelet előtt. Ezzel a kosár teleszemetelését tudod megelőzni... F5 sűrű nyomkodása... :)

Ui.: Ha pedig mindezt refresh nélkül szeretnéd, akkor az AJAX lesz segítségedre. :)


Szerény véleményem szerint egyébként magának a kosárnak a tartalmát felesleges adatbázis táblában tárolni, hacsak nincsen valami különleges célod ezekkel az adatokkal ( például valamiféle statisztikát felállítani a kosárba tett de végül nem megrendelt termékekről, vagy hasonló ). Szerintem bőven elég ha a kosár tartalmát session-ben tárolod, és csak akkor írod át adatbázisba amikor meg is rendeli a kosárba tett termékeket. Egyrészt így nem terheled felesleges adatokkal az sql szervert, másrészt nem pocsékolsz időt az adatbázis kommunikációra, és nem utolsó sorban, nem szemeteled tele az adatbázist, mivel nem szabad elfelejteni, hogy attól hogy én a kosárba teszek valamit, attól koránt sem biztos, hogy azt meg is fogom rendelni. És említhetnénk még biztonsági szempontokat is akár.
3

kosár sessionban vagy táblában

Thom · 2011. Jan. 31. (H), 11.01
Szerény véleményem szerint egyébként magának a kosárnak a tartalmát felesleges adatbázis táblában tárolni

Egyszerűbb esetekben ez igaz lehet. De lehet olyan eset, amikor jobb a kosarat is adatbázisban tárolni. Például:

- A vevő nethálózati probléma miatti leszakadása után is visszakaphatja a már telepakolt kosarát (ha bejelentkezve vásárolt), ha a kosár adattáblában tároljuk a vevőazonosítót is. Másrészt így könnyen továbbfejleszthető a bolt a "kosár megjegyzése" és a vásárlás legközelebbi folytatása funkcióval is.
Ugyanez érvényes, ha a vevő sokáig piszmog egy oldalon és lejár a session időkerete.

- Ha a termék adatok mellett a készletet is nyilvántartod és egy termékből csak kevés (pl. 1 db.) van. Ilyenkor "A" vevő a kosárba teszi a készleten lévő 1 db-ot, fél perc múlva "B" vevő is kosárba teszi. Az a vevő, aki másodjára megy a kasszához, jobbik esetben hoppon marad és hibás működést feltételez, mert nem tudja kifizetni a kosárban lévő cikkeket. Rosszabb esetben ő is ki tudja fizetni, de az eladó egyiküknek nem fog tudni szállítani. A reklamációs helyzet adott, mert a szituáció nem lett szoftveresen lekezelve.

A táblában tárolással persze együtt jár, hogy az elhagyott kosarak ürítése funkciót is hozzá kell hegeszteni. Úgy tudom, a komolyabb online bolt rendszerek mind adattáblában tárolják a kosarak tartalmát. Tisztább, szárazabb érzés...
Egyszerűbb felépítésű boltoknál viszont igaz, hogy a sessionos kosár tárolás is működőképes eredményt ad, a fenti korlátokkal.

PS: tessék mondani, miért kell egy témához 5 topicot nyitni?
4

hello

richie85 · 2011. Jan. 31. (H), 14.23
A problemamra nem kaptam meg meg a valaszom.. :(
Nem vagyok jaratos az AJAX-ban, szoval, ha van valakinek van egy jo script-je annak orulnek nagyon, vagy egy php script-nek is!

PS: tessék mondani, miért kell egy témához 5 topicot nyitni?


Nem en csinaltam, ez tolem fuggetlen! En egyszer nyomtam meg a "mentes" gombot, es nekem is meglepetes lett, hogy ennyi topic lett.. bar, hozza kell tennem, hogy amikor a gombra klikkeltem, akkor eleg sokaig tartott a "mentes" funkcio! results: 5 topic!

Richie
5

AJAX

Poetro · 2011. Jan. 31. (H), 15.19
Ha nem vagy járatos, akkor olvasd el az ebben a témában született cikkeket, blog bejegyzéseket stb. Tudod az interneten "minden" fentvan.
6

Erre jó, általános szkriptet

neogee · 2011. Jan. 31. (H), 20.15
Erre jó, általános szkriptet nem fog tudni adni neked senki. Persze lehet írni rá általános megoldást, de kétlem, hogy fel lenne készítve rá a rendszered, hogy ezt kódolás nélkül, vagy akár egy minimális kódolással be tudja fogadni.
Szóval talán egyszerűbb, ha utánalesel, hogyan és miképpen szokás az ilyesmit megvalósítani, de nem feltétlenül ajax vonalon indulva. Ha már szerveroldalon meg tudod oldani a problémát, akkor AJAXot használva is meg fogod tudni oldani gyorsan, mert akkor már csak a kliens oldali résszel kell kiegészíteni.
7

Teljesen igazad van. Direkt

neogee · 2011. Jan. 31. (H), 20.24
Teljesen igazad van.
Direkt úgy is fogalmaztam, hogy:
hacsak nincsen valami különleges célod ezekkel az adatokkal

A zárójeles példa részbe, akár az általad felsoroltakat is beilleszthetnénk. :)
Tisztában vagyok vele, hogyan illik felépíteni egy webshopot, és pontosan ezért tisztában vagyok azzal is, hogy mielőtt megmásznánk a Mount Everest-et előtte nem árt, ha megismerkedünk egyáltalán a hegymászással. :)
Nem biztos hogy jó, ha már az első komolyabb webshop jellegű alkalmazását megpróbálja az ember MINDEN-re felkészíteni.

De persze ez az én véleményem :)
2

Annyi weboldalon lattam mar

kuka · 2011. Jan. 31. (H), 09.06
Annyi weboldalon lattam mar jol mukodni ezt, mi lehet nalam a baj..
Szerintem ők véletlenül sem iframe-el szerencsétlenkedtek. Használj AJAX-ot:
  • Amíg a friss tartalom töltődik addig nem tűnik el a jelenlegi.
  • Ha nincs a jelenleginél frissebb tartalom nem kell letölteni semmit.
  • Ha nincs a jelenleginél frissebb tartalom nem kell a dokumentum szerkezethez nyúlni.