JS-ből adatbázisba írás

JS-ből adatbázisba írás
2013-11-13T09:54:38+01:00
2013-11-13T10:12:45+01:00
2022-11-30T00:41:57+01:00
milan880809
Sziasztok! Azt szeretném megvalósítani, hogy a törlés gomb megnyomása esetén megerősítést kérjen a felhasználótól! Ha ok-t nyom, akkor hajtódjon végre a törlés! A problémám itt van! Hogyan lehetne beadni a JS kódba, hogy az adatbázisban dolgozzon? Próbáltam így:

<script type="text/javascript"> var torli_e=confirm("Biztosan törli <?= $_GET['h_csid'] ?> csomagot?"); if (torli_e==true) { <?= $cs_torol_leker = "DELETE FROM hasznalt_csomagok WHERE id=".$_GET['h_csid'].";"; $cs_torol_ered = mysql_query($cs_torol_leker); ?> } </script>
Eredmény: SEMMI, még az ablakot sem adja fel!
Próbáltam úgy, hogy a php részt külön fájlba írtam, és így meghívni:

<script type="text/javascript"> var torli_e=confirm("Biztosan törli <?= $_GET['h_csid'] ?> csomagot?"); if (torli_e==true) { <?= require('cs_torles.php'); ?> } </script>
Eredmény: szintén SEMMI!
Kérlek, segítsetek valami jó ötlettel! Előre is köszönöm!
Mutasd a teljes hozzászólást!
Na, akkor, először is vegyük észre, hogy a js kliensoldalon fut. A php meg az adatbázis pedig szerveroldalon van.

Tehát a böngésződ nem fog php kódot végrehajtani, akármennyire is azt akarod. Mondjuk érdekes is lenne ilyet kliensoldalra kirakni, kapásból át is írnám a delete utasítást drop database-re, aztán máris szevasz az adatbázisodnak. Te meg csak leshetnél, hogy mi történt. Na, többek közt ezért nem pakolunk kliens oldalra érzékeny kódot.

De nem csak kötekedni akarok, a fenti sorok csak arra szolgáltak, hogy megértsd, miért nem így működik. A megoldás az, hogy a confirm ablak után indítasz js-ből egy kérést egy a szerveren lévő php felé (AJAX-szal, vagy kissé fapadosabb megoldás: simán redirecteled az oldalt arra a php-ra).
AJAX megoldás:
Ha az ok gombra nyomtak, indítasz egy kérést a szerverre cs_torles.php felé. Vagy GET-tel, vagy POST-tal küldöd az adatot, az mindegy. A cs_torles.php a beérkező input validálása után ( ) törli a db-ből az adott rekordot, majd ennek sikerességéről értesíti a js-t. A js a visszakapott érték függvényében kiírja, hogy sikerült/nem sikerült/frissíti az oldalt.
AJAXra egy rakás példát találsz a neten.
Mutasd a teljes hozzászólást!

  • Mutasd a teljes hozzászólást!
  • Na, akkor, először is vegyük észre, hogy a js kliensoldalon fut. A php meg az adatbázis pedig szerveroldalon van.

    Tehát a böngésződ nem fog php kódot végrehajtani, akármennyire is azt akarod. Mondjuk érdekes is lenne ilyet kliensoldalra kirakni, kapásból át is írnám a delete utasítást drop database-re, aztán máris szevasz az adatbázisodnak. Te meg csak leshetnél, hogy mi történt. Na, többek közt ezért nem pakolunk kliens oldalra érzékeny kódot.

    De nem csak kötekedni akarok, a fenti sorok csak arra szolgáltak, hogy megértsd, miért nem így működik. A megoldás az, hogy a confirm ablak után indítasz js-ből egy kérést egy a szerveren lévő php felé (AJAX-szal, vagy kissé fapadosabb megoldás: simán redirecteled az oldalt arra a php-ra).
    AJAX megoldás:
    Ha az ok gombra nyomtak, indítasz egy kérést a szerverre cs_torles.php felé. Vagy GET-tel, vagy POST-tal küldöd az adatot, az mindegy. A cs_torles.php a beérkező input validálása után ( ) törli a db-ből az adott rekordot, majd ennek sikerességéről értesíti a js-t. A js a visszakapott érték függvényében kiírja, hogy sikerült/nem sikerült/frissíti az oldalt.
    AJAXra egy rakás példát találsz a neten.
    Mutasd a teljes hozzászólást!
  • Köszönöm mindkét megoldást! SalyT meggyőzően érvelt, és elfogadom és megfogadom, amiket írt! Még csak most tanulgatom a JS-t, és minden kritikát és segítséget elfogadok, amiből tanulhatok! Köszönöm!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd