Hogyan lehetne egyszerűbben megoldani ezt a szavazórendszert?
Van egy szavazórendszerem, ahol eldöntheted, hogy az alábbi poszt tetszik-e vagy nem tetszik. És a voksodat le is tudod venni, illetve újra is tudsz voksolni. Egyéb funkció, hogy az adott poszt alatt van egy számláló a szavazatokról. Na, ezt én így oldottam meg PHP illetve ajax segítségével:
1. TETSZIK és a NEM TETSZIK egy button. Kattintáskor javascriptel leellenőrzöm, hogy melyik posztra szavazott és mi a szavazata, majd AJAX-al elküldöm POST tömbben ezt a feldolgozo.php-nek.
2. A feldolgozo.php-ben is leellenőrzöm az utóbbiakat, majd adatbázis lekérdezésekkel illetve sok-sok if-else ággal eldöntöm, hogy mit kell tenni (pl. növelni kell-e a szavazatot az adott poszton vagy csökkenteni).
3. Ha sikeres volt az ajaxal az adatok küldése, akkor még egy ajax kérést indítok, a szamlalo.php-nek, ahol lekérdezem az adatbázisban a szavazatokat. A szavazatok száma lesz a response. Javascripttel újra kicserélem, frissítem a "tetszik div"-nek és a "nem tetszik"-div nek az értékét, azaz frissítem ezeket a riszponzal.
Lényegében minden szavazásnál ez játszódik le.
Hátrány:
Csak az adott szavazatot frissíti, ezért ha több poszt alatt szavaztak, akkor azt csak frissítés után lehet látni.
Nos, az lenne a kérdésem, hogy hogyan lehetne egyszerűbben megoldani, és olyannyira dinamikusan, hogy ha valaki más is szavazott, akkor azt frissítés nélkül is láthassa a többi felhasználó?
Esetleg lehet ajaxal meghatározott időnként kéréseket indítani? Köszi előre is a segítségeket!
2. 3. lépést én összevonnám, nem értem miért van külön kérésben a frissítés.
Esetleg lehet ajaxal meghatározott időnként kéréseket indítani? Köszi előre is a segítségeket!
-> [link]
Tömören hogy lenne a legkönnyebb:
1. Magukat a link gombokat a kódba generálod, a post ID-t beletéve mondjuk és hogy mit szavazott.
JS-el semmit nem kell ilyennél ellenőrizni kliens oldalon, ha valaki meg akarja piszkálni, úgyis magát az AJAX hívást fogja macerálni.
2. A linkre nyomásnál megy az ajax hívás a PHP-nek post-al mondjuk, de igazából teljesen mindegy, lehet PUT is vagy akármi.
3. PHP oldalon ellenőrzöd, hogy az adott ID-jú cucc létezik-e és ha kell valami plusz jogosultság, akkor annak a meglétét is.
Ha minden oké akkor a DB-ben növeled vagy csökkented eggyel az értéket. (Ide kb annyi ifezés kell, hogy mondjuk ha nem akarod, akkor negatívba ne tudjon lemenni, de kb más ellenőrzés nem kell, mert magában a kérésben kéne átküldeni, hogy az fel vagy leszavazás.)
4. A POST/GET/PUT akármi amit hívtál visszaadja, hogy hánynál áll a szavazat, ezt szépen az ajax válasz feldolgozód befrissíti a számlálóban és kész is vagy.
Az oldalon az összes szavazat frissítést meg ezeket én teljesen külön venném.
Primitív, egyszerű módszer, ha x időnként küldesz egy ajax kérést a szerver felé az aktuálisan látható cikk ID-kkal és a válaszban ezekre visszatolod a pontokat.
Viszonylag jó lesz, mindenki boldog.
Teljesen real time is meg lehet oldani, de ehhez websocket kell, vagy valami különlegesebb megoldás. (Esetleg long poll ajax, de az ingyenes tárhelyek ezt sem szokták szeretni.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!