Announcement

Collapse
No announcement yet.

Abfrageergebnisse an JS weitergeben

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

  • Abfrageergebnisse an JS weitergeben

    Ich versuche gerade mit einem canvas eine Chart zu zeichnen. Das Zeichnen an sich sollte klappen.
    Etwas wenig Hilfe finde ich allerdings dazu, wie ich in PHP eine Datenbankabfrage mache und die Ergebnisse in dem canvas anzeige.

    Code:
     if (isCanvasSupported()){ 
      echo "<canvas id='myCanvas' width=500 height=200></canvas>"; 
      // Wie oft kommt welche Note vor? mit 1 Kommastelle
      $e = mysql_query("SELECT count(*), round(rn*10) from noten group by round(rn*10)") OR DIE (mysql_error());
      $erg = mysql_fetch_array($e, MYSQL_NUM);
      echo "<script type='text/javascript'>drawChart($erg)</script>"; 
     }
    Ist es möglich die Ergebnisse in dieser Form an JS zu übergeben? Wenn ja, wie spreche ich sie in JS korrekt an? Oder muss ich die Ergebnisse womöglich erst umwandeln?

    Meine Vermutung ist, dass ich in "function drawChart(daten)" die Zahl in Zeile 1 mit daten[0][0] ansprechen kann.
    Leider ist mein momentaner PC nur für die Theorie-Recherche geeignet, nicht zum Testen.
    Falls mir jemand bestätigen kann, dass mein Weg korrekt ist, oder mich korrigieren kann wäre das sehr nett!

  • #2
    Ja, ist ein Weg
    Christian

    Comment


    • #3
      Hallo,
      Originally posted by CLL View Post
      ...
      Code:
       if (isCanvasSupported()){ 
        echo "<canvas id='myCanvas' width=500 height=200></canvas>"; 
        // Wie oft kommt welche Note vor? mit 1 Kommastelle
        $e = mysql_query("SELECT count(*), round(rn*10) from noten group by round(rn*10)") OR DIE (mysql_error());
        $erg = mysql_fetch_array($e, MYSQL_NUM);
        echo "<script type='text/javascript'>drawChart($erg)</script>"; 
       }
      Ist es möglich die Ergebnisse in dieser Form an JS zu übergeben?
      Die PHP-Funktion "mysql_fetch_array" liefert ein PHP-Array zurück. Wenn du dieses mit echo ausgibst, steht dann an dieser Stelle einfach nur 'Array()'. Dein JS-Code sieht damit im Endeffekt so aus:
      [highlight=javascript]
      <script type='text/javascript'>drawChart(Array())</script>
      [/highlight]
      Das ist dann syntaktisch falsch und eine entsprechende Fehlermeldung wirst du bekommen, bzw. das resultierende JS wird einfach nicht funktionieren.

      Originally posted by CLL View Post
      ...Oder muss ich die Ergebnisse womöglich erst umwandeln?
      Umwandeln nicht, aber du musst dein PHP-Array so ausgeben, dass daraus gültiger JS-Code wird. Anbieten tut sich hier das JSON-Format, dass auch von PHP beherrscht wird. Siehe: json_encode.

      Mit
      PHP Code:
      echo "<script type='text/javascript'>drawChart(".json_encode($erg).")</script>"
      hast du dann in deiner JS-Funktion ein Array-ähnliches Objekt zur Verfügung.

      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


      • #4
        Danke für die Hilfe!
        Wenn ich es richtig gegoogelt habe, dann muss ich in meiner JS-Funktion dann nur noch das JSON-Objekt erzeugen und kann die Zeilen dann durchlaufen
        Code:
        var jsondaten = JSON.parse(daten);
        for(i=0;i<jsondaten[0].length;i++){
        var saeule = daten[i]['note'];
        var hoehe = daten[i]['anzahl'];
        ... // zeichnen
        }
        Das sieht ja gar nicht so schwer aus. Da bin ich mal gespannt obs dann wirklich so schnell klappt, wenn ich endlich wieder einen gescheiten PC in die Finger bekomme

        Comment


        • #5
          Hallo,
          wenn du das Ganze direkt im JS-Quelltext zuweist, also so wie in deinem (nichtfunktionierenden) Code, dann musst du auch nichts parsen. JS kennt JavaScript Object Notation native! Explizit Parsen müsstest du nur, wenn dir die JSON-Daten in einer String-Variablen (z.B. aus einem AJAX-Request) vorliegen. Direkt im Quelltext notiert wird das Parsen automatisch vom JS-Parser des Browsers erledigt.

          Beispiel:
          PHP-Code
          PHP Code:
          <?php

          $myArray 
          = Array(
            
          'Name'   => 'August',
            
          'Datum'  => '13.08.2012',
            
          'Aktion' => 'Test',
          );
          ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

          <head>
            <title>Titel</title>
            <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
            <script type="text/javascript">
              function showDaten(pDaten)
              {
                for (var key in pDaten) {
                  document.getElementById('content').innerHTML += key + ': '  + pDaten[key] + '<br />';
                }
              }
            </script>
          </head>
          <body>
            <div id="content"></div>
            <script type="text/javascript">
              showDaten(<?php echo json_encode($myArray); ?>);
            </script>
          </body>
          </html>
          Der daraus resultierende HTML/Javascript-Code
          HTML Code:
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
          
          <head>
            <title>Titel</title>
            <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
            <script type="text/javascript">
              function showDaten(pDaten)
              {
                for (var key in pDaten) {
                  document.getElementById('content').innerHTML += key + ': '  + pDaten[key] + '<br />';
                }
              }
            </script>
          </head>
          <body>
            <div id="content"></div>
            <script type="text/javascript">
              showDaten({"Name":"August","Datum":"13.08.2012","Aktion":"Test"});
            </script>
          </body>
          </html>
          Ausgabe:
          Code:
          Name: August
          Datum: 13.08.2012
          Aktion: Test
          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


          • #6
            Ok, danke für den Hinweis. Ein Beispiel bei dem es auf diese Weise übergeben wird, hatte ich bei Google nicht gefunden.

            Comment

            Working...
            X