Hente hele databasen og gjøre den til skikkelig json

Hei! Jeg har et lite problem her :stuck_out_tongue:
Jeg har egentlig aldri tatt meg tid til å lære php og database systemer, men jeg har prøvd meg litt frem nå med at jeg tenkte at jeg skulle bytte ut noe json inne i appen min med database slik at jeg slipper å oppdatere hver gang jeg må fikse på noe..

Jeg har hittil laget en mysql database med noen forskjellige tables. (som vist under)
http://i.gyazo.com/0d0d656a545c36b2c693eb98d4eb15ef.png

Inne i et table ser det slik ut:
http://i.gyazo.com/ec4e505dc9d120bc4f5947ec174356c7.png

Det jeg prøver på da er vel å hente alle tabels og deres “sub tables” deretter lage skikkelig json ut av det hele. noe slikt:
http://i.gyazo.com/d4e8549b3bdfb4d362d22034cfd4c0f8.png

Har som sagt prøvd meg litt frem og har klart å hente fra databasen og lage json ut av det men har da to problemer. Når jeg bruker denne koden:

[PHP]<?php
header(‘Access-Control-Allow-Origin: *’); //remove later
header(‘Access-Control-Allow-Methods: GET, POST’); //remove later
require ‘config.php’;

try {

    $db = new PDO($dsn, $username, $password);
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  
  
    // Get Other
    $sth = $db->query("SELECT * FROM other,tools");
    $other = $sth->fetchAll();
   
     function utf8ize($d) {
        if (is_array($d)) {
            foreach ($d as $k => $v) {
                $d[$k] = utf8ize($v);
            }
        } else if (is_string ($d)) {
            return utf8_encode($d);
        }
        return $d;
    }
   
   
    $json = json_encode(utf8ize($other));
    $json = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $json);
    echo $json;
//echo json_encode(utf8ize($item)); // don't

    //echo json_last_error();

   
} catch (Exception $e) {
    echo $e->getMessage();
}[/PHP]

(Har hentet koden fra et tideligere prosjekt jeg fikk hjelp på fra en som kunne php, men ta det med ro, skjønner meste parten)

Og deretter henter det med jquery alax får jeg ikke med “tittelen” altså fra bilde nr 3, sånn at det står: (“other”: ) foran resten av objektene. Det blir bare en haug med objekter uten en “parrent” og alt blir som en stor json fil, ikke en json med forskjellige “kategorier”.

Har tenkt på en løsning som jeg er ganske sikker på vil fungere da, men det vil være en veldig dårlig måte å utføre det på. Tenkte at jeg kan be brukerens klient spørre etter bare tabelet “other” når han er inne i “other” på appen. Men det tror jeg vil bli masse trafikk med tanke på at appen har 6000 aktive brukere..
Så det jeg egentlig hadde i tankene var at brukeren laster ned hele databasen og lagrer den i localstorage, deretter vil appen spørre serveren om det er en ny versjon tilgjengelig hver gang den starter. Slik at loaden blir betraktelig mindre.

Har dere noen tips eller en løsning på hva jeg kan gjøre for å oppnå dette?
Takk!

Jeg får jo ikke testet dette, men det er vel bare

$arr = array( "other" => $other ); echo json_encode( $arr );

Og det ser ut som du burde sette opp databasen og alt annet med UFT8 direkte, så slipper du å konvertere alt i hvert eneste skritt ?

1 Like

Hmm, ser lovende ut! :slight_smile: Skal prøve det senere!

Ja! Det hadde vert det optimale, men finner ikke UFT8 -_- Nermeste jeg finner er det “swedish”. Heter det noe annet eller er det bare “UTF8”?
Takker!!

Testet det nå og det fungerer perfekt!! Takker! :slight_smile: +1