Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Povlačenje podataka sa Mysql servera u JSON formatu

[es] :: PHP :: Povlačenje podataka sa Mysql servera u JSON formatu

[ Pregleda: 2586 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Povlačenje podataka sa Mysql servera u JSON formatu24.11.2013. u 15:33 - pre 92 meseci
Ovako imam problem a nisam baš siguran kako da ga riješim...

MASTER tabela:
id, kategorija
1,kategorija 1
2,kategorija 2

DETAIL tabela
id, naziv, cat_id
1, objekt1, 1
2, objekt2, 2
3, objekt3, 1

Znam da trebam napraviti php file sa GET metodom odosno : http://x.x.x.x/folder/nekiphp.php?id=1
ali nikako da povežem kako da ide ostali dio php file-a
Treba da pomoću php-a napraviti JSON format tako da izgleda:

{
"id":1,"kategorija":"kategorija1","objekti":[
{"id":1,"naziv":"objekt1","cat_id":"1"},
{"id":2,"naziv":"objekat3","cat_id":"1"}]
}

Hvala upared...
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 867
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu24.11.2013. u 19:57 - pre 92 meseci
PHP: mysql_query
PHP: json_encode
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 848
*.teol.net.



+144 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu24.11.2013. u 22:52 - pre 92 meseci
1. Procitas podatke iz baze i napravis strukturu koja ti je potrebna u obliku objekta ili asocijativnog niza (primjer sa nizom):

Code:

$data = array(
   'id' => 1,
   'kategorija' => 'kategorija1',
   'objekti' => array (
      array (
         'id' => 1,
         'naziv' => 'objekt1',
         'cat_id' => 1
      ),
      array (
         'id' => 2,
         'naziv' => 'objekt2',
         'cat_id' => 1
      ),
   )
);

echo json_encode($data);

 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 18:42 - pre 92 meseci
Ja sam probao ovako ali... očigledno nije dobro.... stvarno trebam pomoć!


Code:
<?php
$host = "localhost"; // host of MySQL server
$user = "root"; // MySQL user
$pwd = ""; // MySQL user's password
$db = "android"; // database name

$catid=$_GET['id'];

$con = mysqli_connect($host, $user, $pwd, $db);
 
if(mysqli_connect_errno($con)) {
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

$all_array= array();

$sql_kat = "SELECT id,kategorija FROM kategorije where id=$catid ORDER By id";
$result_kat = mysqli_query($con, $sql_kat);
 
$rows_kat = array();
while($row_kat = mysqli_fetch_array($result_kat, MYSQLI_ASSOC)) {
//row u kategoriji
$row_kat; 


$sql_objekti = "SELECT * FROM objekti where cat_id=$catid ORDER By pid";
$result_objekti = mysqli_query($con, $sql_objekti);
 
while($row = mysqli_fetch_array($result_objekti)) {

$rows_objekti[$row_kat]=$row_objekti;

}
  }

$all_array = $rows_objekti


echo json_encode($all_array);


mysqli_close($con);
?>
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 867
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 20:04 - pre 92 meseci
Sta dobijas kao ispis ili gresku? Sta ti "ne radi"?

Sta ustvari hoces da radis u while petlji sa objektom koji ti je ujedno i uslov u while petlji ?
Code:
//row u kategoriji
$row_kat; 


Ako ti $row_cat ima samo jednu vrednost, uvek ces dobijati samo poslednji ispis iz ovog query-a, cak i ako query vrati xy rezultata, ti ces u $row_objekti[$row_kat] dobiti samo poslednji.
Code:
$sql_objekti = "SELECT * FROM objekti where cat_id=$catid ORDER By pid";
$result_objekti = mysqli_query($con, $sql_objekti);
 
while($row = mysqli_fetch_array($result_objekti)) {

$rows_objekti[$row_kat]=$row_objekti;

}


S obzirom na kod koji saljes, siguran sam da ne radis nista ultra poverljivo ili tajno tako da napisi sta tacno hoces da postignes i detaljnije objasni kako ti tabele izgledaju ukoliko hoces konkretnu pomoc.

Ako je u pitanju selektovanje svih proizvoda iz odredjene kategorije (primer), mozes da u jedan array iscitas sve kategorije pa nakon toga iscitas sve proizvode i samo u njihov array
dodaj jedan item koji ce sadrzati tekstualnu reprezentaciju kategorije (predpostavljam da to pokusavas da uradis).

Isto tako pogledaj MYSQL JOIN, mozda ti i to bude od koristi.

Ovaj red sa $catid=$_GET['id'] ti je jako pouzdan, pogotovo ako korisnik recimo kao kategoriju unese "; DROP objekti; DROP kategorije; select * from kategorije", a moze jer si mu ti to dozvolio.
 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 20:43 - pre 92 meseci
Ma ne radim ništa povjerljivo, jednostavno ne znam kako da to uradim sa PHP-om iz MySQL baze

Treba da uradim array baš kako je napisao peromalosutra

Code:
$data = array(
   'id' => 1,
   'kategorija' => 'kategorija1',
   'objekti' => array (
      array (
         'id' => 1,
         'naziv' => 'objekt1',
         'cat_id' => 1
      ),
      array (
         'id' => 2,
         'naziv' => 'objekt2',
         'cat_id' => 1
      ),
   )
);

echo json_encode($data);


odnosno da output bude:

Code:
{"id":1,"kategorija":"kategorija1","objekti":[{"id":1,"naziv":"objekat1","cat_id":"1"},{"id":2,"naziv":"objekat2","cat_id":"1"}]}
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 848
*.teol.net.



+144 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 21:47 - pre 92 meseci
Par stvari koje sam uocio

1. Ne sanitizujes $catid parametar. Ovo samo po sebi nije greska zbog koje ti kod nece raditi, ali je veoma opasno kao sto je ColdKeyboard vec objasnio.
2. Unutar petlje koja ide kroz objekte imas dodjelu koja nema smisla: $rows_objekti[$row_kat]=$row_objekti, valjda treba da dodjeljujes trenutni red
3. Kod ti nije dobro formatiran, sto ga cini tesko citljivim i greske se tako mnogo teze otkrivaju.

Nisam testirao kod, ali ovako bi otprilike to trebalo da izgleda (samo sam prepravio na brzinu greske koje sam uocio):

Code:

<?php
$host = "localhost";        // host of MySQL server
$user = "root";             // MySQL user
$pwd = "";                  // MySQL user's password
$db = "android";            // database name

// uvijek sanitizuj user input, ovdje ga kastujem u int iako ni to nije najbolja praksa, 
// bar sprecava mysql injection
$catid = (int)$_GET['id'];       

$con = mysqli_connect($host, $user, $pwd, $db);
 
if(mysqli_connect_errno($con)) {
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

$sql_kat = "SELECT id,kategorija FROM kategorije where id=$catid ORDER By id";
$result_kat = mysqli_query($con, $sql_kat);

if ($result_kat) {
    
    // niz koji ce sadrzavati podatke u potrebnom obliku, za sad smo popunili id i kategoriju
    $data = mysqli_fetch_array($result_kat, MYSQLI_ASSOC);
    
    // definisemo prazan niz u koji cemo trpati objekte
    $data['objekti'] = array();
    
    $sql_objekti = "SELECT * FROM objekti where cat_id=$catid ORDER By pid";
    $result_objekti = mysqli_query($con, $sql_objekti);
    
    while($row = mysqli_fetch_array($result_objekti)) {
        $data['objekti'][] = $row;
    }
}



echo json_encode($data);

mysqli_close($con);

 
Odgovor na temu

codeb.s

Član broj: 67549
Poruke: 157
*.teol.net.



+1 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 22:28 - pre 92 meseci
To je to.... hvala mnogo peromalosutra!!!
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 848
*.teol.net.



+144 Profil

icon Re: Povlačenje podataka sa Mysql servera u JSON formatu25.11.2013. u 22:31 - pre 92 meseci
Np, usput sad vidim gresku u kodu koji sam postovao, echo json_encode($data); treba da ide unutar if-a, jer ako nema kategorija onda nema ni sta da se vraca.
 
Odgovor na temu

[es] :: PHP :: Povlačenje podataka sa Mysql servera u JSON formatu

[ Pregleda: 2586 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.