PHP-ben onclickkel változó javascriptbe majd ajax-al vissza
2014-03-06T21:54:03+01:00
2014-03-09T14:26:10+01:00
2022-08-17T20:25:33+02:00
Halilaci
Sziasztok!

Röviden: Van egy adatbázis, benne események (eseményazonosító, időpont, név, hely stb) Egy oldalon megjelenítem, napokra szétbontva külön táblázatban. Eddig meg is vagyok. Az események sorába most tettem egy + jelet, mellyel ki lehet választani. A kiválasztottakat szeretném ugyanaezen az oldalon megjeleníteni egy másik táblázatban. Azaz megjelenjen külön táblázatban melyek érdekelnek. A javascriptnek onclickkel el tudom "kűldeni" az esemény azonosítóját, s azt is elértem, hogy egy DIV-be visszakapjam. De nekem a kiválasztottakat (mivel szépen javascriptben egy tömbben sikerül tárolom) vissza kéne a php-nek adni, hogy a kiválasztottakat le tudjam kérdezni egy sql queryvel majd így:

$QUERY2="SELECT * FROM esemenyek WHERE esemenyaz = '$kivalasztottak'"; Alábbi kódban a +-jelre pakolja a 10-et a tömbbe és ezt a katt div-el kit tudom iratni. Ezt egyszerre szeretném. Azaz elég legyen csak a + jel. Egy egyszerűsített próbálkozás (mellőzve az eredeti hosszú kódot): <html> <head> <meta http-equiv="Content-type" Content="text/html; charset=UTF-8" /> <meta charset="utf-8"> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <script type="text/javascript" src="jquery-1.11.0.js"></script> <script> var esemenytomb = new Array(); function jelolve(adatom) { esemenytomb.push(adatom); }; $(function() { $('#katt').click(function(e) { var value = esemenytomb; $.ajax({ url: "proba.php", type: "POST", data: value, cache: false, success: function(data) { $('#vissza').text(value); } }); }); }); </script> </head> <body> <div id="katt"> Katt a megjelenítéshez </div> <?php //Mysql lekérdezés... megjelenítve táblázatban. echo "<a onclick="jelolve(10)">+</a>"; // itt most próba képpen 10-et küldünk a jelolve függvénynek // echo "<td><a onclick="jelolve($row[ProgramAz])">+</a></td></tr>"; //eredeti kódban +-ra kattintva elkűldjük a program azonosítóját egy tömbe // ide szeretném visszakapni a 10-es számot. de nem így divbe. Hanem egy változóba pl. ?> <div id="vissza"> </div> </body> </html>
Mutasd a teljes hozzászólást!
Nálam jól működik a 23:59-es kódod - itt a tesztem: Edit fiddle - JSFiddle

Firebugban megnézed az ajax kérést, akkor az rendben van? Esetleg a #katt click-be rakhatsz egy alert()-et/console.log()-ot/brakepoint-ot hogy lásd lefut-e.
Mutasd a teljes hozzászólást!

  • "data: value" - itt kellene még egy nevet megadni, pl:

    data: { esemenyek : value }

    Majd phpben a $_POST['esemenyek']-be megkapod tömbként, amit majd az sqlbe összeraksz egy in feltételbe (pl: esemenyaz in (10, 24, 789)).
    Mutasd a teljes hozzászólást!
  • Köszönöm! :) Már egy változó átmegy, tömb is csak még nem megfelelően tudom "értelmessé" tenni
    Pár dolgot javítottam a success-ben

    <script> var esemenytomb = new Array(); function jelolve(adatom) { esemenytomb.push(adatom); }; $(function() { $('#katt').click(function(e) { var value = esemenytomb; $.ajax({ url: "proba.php", type: "POST", data: { esemenyek : value }, cache: false, success: function(uzenet) { $('#vissza').html(uzenet); } }); }); }); </script>

    phpben az eredmények

    $table = array(); $table = $_POST['esemenyek']; echo $table; // array echo json_encode($table); // ["10"] print_r($table); {Array ( [0] => 10 )}
    Mutasd a teljes hozzászólást!
  • Sajnos valahogy nem megy azóta. A javascriptig eljutnak az adatok, de vissza valamiért nem jön semmi. Vagy nem jól akarom kiolvasni.
    Firefox hibakeresőben elvileg rendben minden.
    Mutasd a teljes hozzászólást!
  • Nálam jól működik a 23:59-es kódod - itt a tesztem: Edit fiddle - JSFiddle

    Firebugban megnézed az ajax kérést, akkor az rendben van? Esetleg a #katt click-be rakhatsz egy alert()-et/console.log()-ot/brakepoint-ot hogy lásd lefut-e.
    Mutasd a teljes hozzászólást!
  • Rendben siker. Most már jól működik.  Köszönöm!
    Mutasd a teljes hozzászólást!
  • Kicsit összevontam, hogy egyből menjenek az adatok, ha számra kattintok (itt példaképp)

    Egy baj, hogy url-ben ugyanazt a php-t hívom meg s az egész oldalt elküldi vissza. Megjelenik újra a php rész. ha kiszedem a "vissza" DIV-et akkor "meghal".

    Most úgy jó, hogy a POST-ból való adatkinyerést másik php-ba tettem.
    <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <script type="text/javascript" src="jquery-1.11.0.js"></script> <script> var etomb = new Array(); function jelolve(adatom) { etomb.push(adatom); }; $(function() { $('div#katt').click(function() { $.ajax({ url: 'probav.php', type: "POST", data: {esemenyek:etomb}, cache: false, success: function(uzenet) { $('#vissza').html(uzenet); } }); }); }); </script> </head> <body> <div id="katt"> <?php echo "<a href='javascript:;' onclick="jelolve(10)">+10</a>"; echo "<a href='javascript:;' onclick="jelolve(20)">+20</a>"; echo "<a href='javascript:;' onclick="jelolve(30)">+30</a>"; echo "</div>"; echo "<br/>"; $er = array(); $kiesemenyek = $_POST['esemenyek']; echo "Postból adadtok:"; foreach($kiesemenyek as $d){ echo $d; } ?> <div id="vissza"> </div> </body> </html>
    valasz.php: (ekkor a fenti kódban az url-t át kell írni valasz.php-ra
    ) <?php $er = array(); $kiesemenyek = $_POST['esemenyek']; foreach($kiesemenyek as $d) { echo $d; } ?>
    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