Ankündigung

Einklappen
Keine Ankündigung bisher.

Weiterverarbeitung von per Ajax abgerufenen Daten in jQuery

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Weiterverarbeitung von per Ajax abgerufenen Daten in jQuery

    Hallo PHP Forum,

    Ich habe ein Problem, welches ich lösen könnte, aber ich bin auf der Suche nach einer besseren Lösung. Ich habe noch nicht viel Erfahrung in der Kommunikation zwischen Javascript und PHP. Natürlich erwarte ich keinen Code sondern nur den Verweis auf Methoden zur Selbsthilfe.

    Ich habe ein kleines Programm zur Berechnung des BMI Wertes geschrieben. Man kann sich einloggen und die Daten, welche man eingibt werden in einer Datenbank gespeichert.
    Das Programm soll auch per Klick einen Graphen ausgeben, welcher den BMI Wert aller Daten in der Datenbank im Verlauf darstellt. Ich verwende dafür PHP, MySQLi, jQuery und jCanvas.

    Ich möchte in einer seperaten PHP Datei per Ajax Aufruf eine Datenbankabfrage machen.
    Code:
    $(document).ready(function() {
    	$("a#abfrage").click(function() {
    		console.log("Daten werden abgerufen.");
    		$.get("getdata.php", {getdata:$("1")}, function(data){ 
    			$("div#hidden").html(data);
    		});
    	});
    PHP-Code:
    <?php
        
    include_once '../includes/db_connect.php';
        include_once 
    '../includes/functions.php';
        
    sec_session_start();
        if (isset(
    $_GET['getdata'])) {        
            
    $user_id $_SESSION['user_id'];
            
    $count 1;
            if(
    $mysqli->connect_errno 0){
                die(
    'Es kann keine Verbindung zur Datenbank hergestellt werden. [' $mysqli->connect_error ']');
            }

            
    $sql "SELECT `bmi` FROM `mensch` WHERE  `members_id` = '$user_id' ";
            
    $eintrag1 $mysqli -> prepare$sql );
            
    $eintrag1 -> execute();
            
    $eintrag1 -> bind_result($bmi);
                while (
    $eintrag1->fetch()) {
                    echo 
    "<div id='" $count ."'>" $eintrag1 -> bmi."</div>" ;
                    
    $count++;
                }
            
    $mysqli -> close();    
        }
    Nun würde ich jedoch gerne aus der Rückgabe die Datenbankvariablen verwenden, !ohne sie als HTML ausgeben zu müssen! und sie direkt in JCanvas benutzen, um einen Graphen zu zeichnen.

    Wahrscheinlich ist das nicht möglich. Meine Lösung würde sein, dass ich die Daten als display:none; in einem DIV Container auf der Hauptseite ausgebe (Siehe Code div#hidden) und dann mit jQuery per Selektor auslesen lasse und daraus dann den Graphen Zeichnen lasse.

    Das klingt sehr schlampig und ich habe gerade keine Ahnung wie ich das besser angehen sollte. Vielleicht kann mir ja jemand helfen.

    Danke schonmal im Vorraus.
    Mit freundlichen Grüßen
    lolimov


  • #2
    Kannst du denn in deinem Done-Handler nicht gleich das Canvas zeichnen? Das ganze in ein unsichtbares div zu schreiben, nur um das zeug dann wieder auszulesen bevor du damit zeichnest ist einfach über Moskau nach Paris?!
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Habe mir nun per Success: Callback Funktion und dem Ajax Objekt die Daten übergeben lassen ohne es in ein HTML Element auszulagern. Die Daten habe ich dann direkt per split Funktion und dem Komma als Seperator in ein Array geschrieben mit dem ich weiter arbeiten kann.
      Code:
      $("a#abfrage").click(function() {
      		console.log("Daten werden abgerufen.");
      		$.ajax({url:"getdata.php",success:function(result){
      		var str = result;
      	    var arr = str.split(","); 	
      		}});
          });
      Damit das funktioniert habe ich als Ausgabe eine kommaseparierte Liste erstellt.
      PHP-Code:
       include_once '../includes/db_connect.php';
          include_once 
      '../includes/functions.php';
          
      sec_session_start();       
          
      $user_id $_SESSION['user_id'];
              
              if(
      $mysqli->connect_errno 0){
                  die(
      'Es kann keine Verbindung zur Datenbank hergestellt werden. [' $mysqli->connect_error ']');
              }

          
      $sql "SELECT `bmi` FROM `mensch` WHERE  `members_id` = '$user_id' ";
          
      $eintrag1 $mysqli -> prepare$sql );
          
      $eintrag1 -> execute();
          
      $eintrag1 -> bind_result($bmi);
              while (
      $eintrag1->fetch()) {
                  echo 
      round($bmi,2).", " ;
              }
          
      $mysqli -> close(); 
      Danke nochmal an tkausl für den Tipp mit dem Done Handler. Nach etwas Recherche habe ich genau die Sachen gefunden, die ich brauchte.

      Kommentar


      • #4
        Benutz doch gleich JSON als Ausgabeformat.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar

        Lädt...
        X