Like|Unlike - Dislike|Undislike készítés? :D
#2 mondhattam volna az is hogy állás/munka kategória. :-)
De ugye ha nem tudjuk mihez kell, mi van készen, merre indult el, merre tudnánk vezérleni, nem igen lehet mást hogy segíteni. :-)
Nos, megcsináltam Tibi alapelvén nagyjából, de ismét elakadtam. :D Eddig ott vagyok, hogy van két gomb, az egyik a tetszik a másik a nem tetszik. Mindegyiken van egy onclick ami a szavaz függvényt hívja kattintáskor, a paraméterei a következők: poszt_id (tudja, hogy melyik posztra szavaz), 1 vagy 2 (tetszik-e neki: 1, nem tetszik: 2), és a this.id, ami tetszik esetében: tetszik_posztid (pl 66), nem tetszik esetében: nemtetszik_posztid (pl 58). Tehát így néz ki pl a tetszik:
<div class="voter_button <?php if(isset($color_like_id) && $color_like_id == $poszt_id){ echo "like_voted"; } ?>" id="tetszik_<?php echo $poszt_id; ?>" onclick="szavaz(<?php echo $poszt_id; ?>, 1, this.id);">Tetszik</div>
Ha elküldi, akkor ugye meghívja a szavaz függvényt, ami átveszi a paramétereket. Jelenesetben a poszt_id az "a" lesz, a szavazás azonosítója (tetszik/nemtetszik) a b lesz és a this.id pedig a c lesz. A JS úgy néz ki, hogy elküldés előtt átírja az elem tartalmát (amire rákattintott) töltésre, elküldi ajaxal a feldolgozónak az a-t(poszt_id) illetve a b-t(tetszik/nem_tetszik), majd ha sikeres, akkor leszedi a töltés-t és vissza írja az eredeti szöveget (tetszik/nem tetszik). A feldolgozó annyit tesz, hogy fogadja POST tömbben az adatokat, majd egy jó hosszú algoritmus alapján (nagy if-else if ágazat az egész :D) eldönti, hogy mi történt, tetszik-e vagy sem, és beírja a szavazatot táblába. A tábla ezekből az oszlopokból áll:
poszt_id, szavazo, szavazat, szavazat_ideje. Az algoritmus így néz ki: Ha igennel szavaz: Ha már szavazott arra a posztra igennel, akkor törölje, különben Ha már szavazott arra a posztra nemmel, törölje a dislike-ot és like-olja, különben ha nem szavazott egyikre se, like-olja.
Ha nemmel szavaz: Ha már szavazott arra a posztra nemmel, akkor törölje, különben ha már szavazott arra a posztra igennel, akkor törölje a like-ot és dislike-olja, különben ha nem szavazott egyikre se, dislike-olja.
A div-nél a php-s isset ellenőrzéssel hozzá adom a class-ot ahhoz, amelyikre szavazott. Pl, ha nemmel szavazott, akkor a Nem tetszik div-nek piros lesz a backgroundja. Ha tetszikkel szavazott, akkor a Tetszik div-nek zöld lesz a backgroundja. Igen ám, de ez csak frissítés után működik, ezért még a JS-hez, amikor bekövetkezik az Onclick és meghívja a szavaz függvényt, írtam szintént egy if-else ágat, ami így néz ki: Ha tetszik: Ha a tetsziken rajta van a tetszik class, akkor szedje le róla, különben adja hozzá. Ha a nem tetsziken rajta van a nem tetszik osztály, akkor szedje le róla és a tetszikhez adja hozzá a tetszik osztályt.
Ha nem tetszik: Ha a nem tetsziken rajta van a nem tetszik osztály, akkor szedje le róla, különben adja hozzá. Ha a tetsziken rajta van a tetszik osztály, akkor szedje le róla és a nem tetszikhez adja hozzá a nem tetszik osztályt.
Dióhéjban ennyi lenne a működése :D
jQuery + JSON.
A Szavazáskor JSON -ba vissza adodd az adatokat, változásokat.
És jQuery -vel azok értékeit cseréled.
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!