Mysql tömb átadása php-ből jquerynek (ajax)

Mysql tömb átadása php-ből jquerynek (ajax)
2020-01-20T07:44:58+01:00
2020-01-25T20:21:18+01:00
2022-10-15T21:25:55+02:00
floppy2
Sziasztok, 

Nyílván valami kézenfekvő dolog a megoldás, de mégsem boldogulok, és hiába keresek, valami mellett nyilván elsiklok. 
adva van egy mysql adatbázis 
-jgueryből indítok egy egy ajax-os php-t
-php lekérdezi a mysql-ről az adatokat ezeket bedobja egy többbe.

és itt a gond: a kérdés, hogy hogyan, mivel adom át, hogy a jquery megkapja a tömböt. 
 -echo-s json_encode(tomb)-re hibát ad vissza
 -print_r serialize(tomb)-re úgy látom karakterlánc jön nem tömb. 
köszi,
Mutasd a teljes hozzászólást!
ha minden file-od utf8 és az adatbázis is, akkor nekem ez működőképes:

<?php header('Content-Type: application/json'); include("config.php"); $db = new mysqli($dbhost2, $dbuser2, $dbpass2, $dbname2); $db->set_charset("utf8"); //ha létezik a db if($db->connect_errno == 0){ $sql1 = "select * from `iskolak` " ; if($result1 = $db->query($sql1)){ $table1 = array(); while ($row =mysqli_fetch_assoc($result1)){ $table1[] = $row; } $vissza=json_encode($table1); } } $db->close(); echo $vissza; ?>
Mutasd a teljes hozzászólást!

  • Mutasd a kódot hogy adod át!
    "echo-s json_encode(tomb)-re hibát ad vissza"
    Mi a hibaüzi??
    Mutasd a teljes hozzászólást!
  • header('Content-type: application/json'); echo json_encode($json);

    Előtte persze ne legyen más kimenet a PHP fájlban.
    Mutasd a teljes hozzászólást!
  • A kód megvan, már csak a hibaüzenet hiányzik .
    A tömböd valóban tömb?
    (Én el szoktam menteni előtte a küldött adatot fájlba, mert néha csak gondolom, hogy a megfelelő paraméterekkel  fut le a lekérdezés.)
    Mutasd a teljes hozzászólást!
  • Mé' nem lehet megnézni, hogy kinek válaszolsz?
    Mutasd a teljes hozzászólást!
  • Esetleg nem szabványos json-t próbál átküldeni.
    Megpróbálhatod más headerrel, szövegként vagy a lementett jsont megnézni, hogy szabványos-e nem szemetelt bele valami.
    Mutasd a teljes hozzászólást!
  • Néztem, de nem láttam mert már kilógott a képből.
    Bocs, azt hittem ezt a kérdező írta .
    De azért nincs harag?

    EGY
    Mutasd a teljes hozzászólást!
  • Sziasztok, itt a kod: 



    var datas= {
                "rutin" : "reghezkell"
              };
                
              $.post("./adatb/adatleker2.php",datas,
              function(data,status){
                console.log(status);
                console.log('aaa2');  
                //console.log(JSON.parse(data));
                  
                
              });


    és a másik oldal: 



    <?php
    header('Content-Type: application/json');
    include("config.php");

    $db = new mysqli($dbhost2, $dbuser2, $dbpass2, $dbname2); //ha létezik a db if($db->connect_errno == 0){ if ($_POST['rutin'] == 'reghezkell') { $sql1 = "select * from `tab1` " ; if($result1 = $db->query($sql1)){ while ($row =mysqli_fetch_array($result1)){ $table1[] = $row; } $vissza=json_encode($table1); //tmp_fileiras_old("../adatb/tmp01b_" ."aa",$table1 ); } } } $db->close(); echo $vissza; ?>
    Mutasd a teljes hozzászólást!
  • Még mindig nem derült ki, mi a hibaüzenet.
    Mutasd a teljes hozzászólást!
  • nincs hibaüzenet. 
    jelenleg úgy viselkedik mintha nem menne bele a visszatérési ágba.

    Végtelenül lecsupaszítottam mindent:

    $.post("./adatb/adatleker3.php",datas,function(data){ console.log("ssss"); alert("ssss"); });
    ill: 

    <?php header('Content-Type: application/json'); include("config.php"); $db = new mysqli($dbhost2, $dbuser2, $dbpass2, $dbname2); //ha létezik a db if($db->connect_errno == 0){ $sql1 = "select * from `iskolak` " ; if($result1 = $db->query($sql1)){ while ($row =mysqli_fetch_array($result1)){ $table1[] = $row; } $table2 = array(1, 2, 3, 4, 5, 6); $table3 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $vissza=json_encode($table3); } $db->close(); echo $vissza; ?>
    próbáltam nem az én tömbömmel, hanem egyéb tömbökkel,
    és elméletileg az alert és console.log ki kellene hogy írja az "ssss"-t de semmi.....

    gondolom, valami elemi hibát vétek, de nem látom, hogy hol...
    Mutasd a teljes hozzászólást!
  • $db->close();
    előtt kell egy }, mert nincs egy nyitó zárójelnek párja
    Másrészt:
    php fájl elejére nem árt: error_reporting(0);
    A
    header('Content-Type: application/json');
    pedig szükségtelen.
    Mutasd a teljes hozzászólást!
  • Szerintem a "post"-al van a baj. Írtál ajax-os kódot, de sehol nem látom írva

    $.ajax({ url: './adatb/adatleker3.php', type: 'post', dataType: 'json', contentType: 'application/json',
    data: { data: JSON.stringify(sendData)
    },
    success: function (data) {
    var result = JSON.parse(payload.data);
    console.log(result) } });




    Lehet ez segít
    Mutasd a teljes hozzászólást!
  • winingnek köszi a zárójelet, ebben igaza volt, de sajnos nem az az alapprobléma, itt csak véletlenül beletöröltem.  

    átírtam az ajaxos részt, sajna így sem működik. 

    Az alábbi kódrészből a $table1-re nem működik, a $table2re és $table3-ra igen. 
    Szóval a fetch-ben rontok valamit,
    vagy az adatbázisban.
    Az adatbázis csak id-nev, esetleg a kódkiosztás lehetne de utf8-at használok. 
    A fetch esetén pedig mint egyik kolléga tanácsolta kiírtam fileba (is_array-al ellenőrizve), és 
    valóban tömb. 

    while ($row =mysqli_fetch_array($result1)){ $table1[] = $row; } $table2 = array(1, 2, 3, 4, 5, 6); $table3 = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $vissza=json_encode($table3);
    Mutasd a teljes hozzászólást!
  • Hello!

    while ciklus elé $table1 = array();

    ..hátha
    Mutasd a teljes hozzászólást!
  • Ha a $row array, és a $table-be teszed ami szintén array, akkor ott lehet a baj. 

    Próbáld így :

    $table1[$row['id']] = $row['name']
    Mutasd a teljes hozzászólást!
  • úgy tűnik, hogy a karakterekkel lesz a gond. 
    csináltam egy egyszerű táblát kb qwerty tartalmú mezőkkel és működött. 
    Aztán hozzápakoltam egy "á" betűt és " Unexpected end of JSON input" hibát ad vissza.
    csináltam egy latin2 ékezeteset de azt sem eszi meg. 

    a kérdés úgy modosul, hogy milyen karakterillesztéssel kell a táblát létrehozni, hogy a parsejson jól működjön, ill. van e olyan parsejsonnak megfelelő fgv, ami a magyar ékezetekkel boldogul?
    Mutasd a teljes hozzászólást!
  • ha minden file-od utf8 és az adatbázis is, akkor nekem ez működőképes:

    <?php header('Content-Type: application/json'); include("config.php"); $db = new mysqli($dbhost2, $dbuser2, $dbpass2, $dbname2); $db->set_charset("utf8"); //ha létezik a db if($db->connect_errno == 0){ $sql1 = "select * from `iskolak` " ; if($result1 = $db->query($sql1)){ $table1 = array(); while ($row =mysqli_fetch_assoc($result1)){ $table1[] = $row; } $vissza=json_encode($table1); } } $db->close(); echo $vissza; ?>
    Mutasd a teljes hozzászólást!
  • Köszönöm a segítséget mindenkinek.
    Azért kovee megoldása lett a nyerő, mert ő nem részeket ragadott meg, hanem teljes 
    rutint irt be (mégha az enyémet is copyzta nagyrészeben)
    az include config és a set charset -et együtt látva jöttem rá, hogy mit néztem be,
    ugyanis a configomban volt egy charset ami agyonvert mindent.

    köszönöm a segítségeteket.
    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