Announcement

Collapse
No announcement yet.

Probleme mit json_encode

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit json_encode

    Hallo,
    ich habe folgendes Problem: Ich habe ein SQL Statement und dann möchte ich die Ausgabe in einen JSON String umleiten. Nun gibt er aber in der Datenbank (siehe Bild) alles korrekt aus, aber wenn ich dann den Content in den JSON String schreibe ist ein Feld leer, obwohl gefüllt.

    PHP
    PHP Code:
    <?php
    function getArticlesInCategory($cat_ID$sec_ID){
        require(
    'mysql.php'); // verbinden ...
        
    $output = array();
        
    $sql_get "SELECT `id`,`title`,`alias`,`state` FROM `content` WHERE `sectionid`='".$sec_ID."' AND `catid`='".$cat_ID."' AND `state`='1' ORDER BY `alias` ASC";
        
        if(!
    $res_id_sql_get mysql_query($sql_get)){
            die(
    mysql_error());
        }
        while(
    $my=mysql_fetch_assoc($res_id_sql_get)){
            
    $output[]=$my;
        }
        return 
    json_encode($output);
    }

    echo 
    getArticlesInCategory("80","29");
    ?>
    Ausgabe im Browser:
    [{"id":"193","title":null,"alias":"programmieren-in-c-und-ausfuehren-","state":"1"},{"id":"194","title":"Umgebungsvaria blen setzen","alias":"umgebungsvariablen-setzen-","state":"1"}]
    Wieso?
    Attached Files
    PHP Code:
    <?php
    echo 'http://acs-it-worx.de/';
    echo 
    'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
    echo '-----------------------------------------------------------------';
    echo 
    'http://www.autoservice-asberg.de/';
    ?>

  • #2
    Das gehört glaub ich nicht hier einsortiert. Du schreibst ja selbst, dass es in der DB korrekt angezeigt wird.

    Soweit ich mich erinnere ist das JSON Handling abhängig von der Version und auch der Codierung (z.B. UTF8) der Webseiten. Da der fehlende Text Umlaut enthält, würd ich dem mal nachgehen.
    Gruß, defo

    Comment


    • #3
      json_encode
      ->Diese Funktion arbeitet nur mit UTF-8-kodierten Daten.



      Christian

      Comment


      • #4
        Es lag wirklich an den Umlauten. Als ich die in der DB geändert habe, wurde mir ein Text ausgegeben. Aber das ist suboptimal, wenn in die DB immer ein Umlaut geschrieben wird, JSON das aber anscheinend nicht interpretieren kann.

        Meine Kollation in der DB ist "utf8_general_ci".

        Nun habe ich noch vor meiner eigentlichen Select-Query "mysql_query("SET NAMES UTF8");" gesetzt. Nun wird der Inhalt ausgegeben, aber die Umlaute sind unschön: aus einem "ü" wird "\u00fc".
        PHP Code:
        <?php
        echo 'http://acs-it-worx.de/';
        echo 
        'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
        echo '-----------------------------------------------------------------';
        echo 
        'http://www.autoservice-asberg.de/';
        ?>

        Comment


        • #5
          JSON ist nun ein einfaches Format. Das kannst du selbst implementieren
          oder
          http://www.google.com/search?q=php+j...ient=firefox-a
          Christian

          Comment


          • #6
            Hallo,
            Originally posted by creator90 View Post
            ...Nun wird der Inhalt ausgegeben, aber die Umlaute sind unschön: aus einem "ü" wird "\u00fc".
            Die Zeichnsatzkodierungen von Datenbank, Clientverbindung und Webseite müssen natürlich zusammen passen, ansonsten entsteht Kauderwelsch!. Wenn diese drei Kodierungen unterschiedlich sind, muss an den Schnittstellen Umkodiert werden! Für den Übergang DB/Tabelle zu Clientverbindung macht das MySQL automatisch. Für den Übergang Client(PHP) zu Webseite bist du selbst verantwortlich.
            Wenn dein Client(PHP) und die DB also UTF-8 sprechen und die Webseite auf ISO-8859-1 steht, dann musst du jeden Text vor der Ausgabe umkodieren. Oder du stellst deine Webseite ebenfalls auf UTF-8 um, was ich persönlich für den besseren Weg halten würde.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Vielen Dank für eure Antworten. Ich werde mich dann mal an eure Tipps setzen und schauen was dabei herumkomt Aber bisher sieht alles gut aus.
              PHP Code:
              <?php
              echo 'http://acs-it-worx.de/';
              echo 
              'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
              echo '-----------------------------------------------------------------';
              echo 
              'http://www.autoservice-asberg.de/';
              ?>

              Comment

              Working...
              X