1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Graphen aus einer SQL Datenbank generieren

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Hausmeister76, 07.03.06.

  1. Hausmeister76

    Hausmeister76 Adams Parmäne

    Dabei seit:
    17.08.04
    Beiträge:
    1.300
    Hi jungs....

    also ich möchte meiner Website einen kleinen Graphen spendieren. Dieser soll auf den Daten einer MySQL Datenbank basieren.Soweit so gut.

    Nun habe ich folgendes für PHP gefunden...

    http://www.php-faq.de/q/q-scripte-diagramme.html

    Wer kann mir sagen, welche dieser Möglichkeiten zu empfehlen sind und vor allen Dingen, welche kann ich auch auf meiner kommerziellen Homepage verwenden. (JPGraph) fällt schonmal raus, da ich eine kostenloses Möglichkeit suche.

    thx....

    so long...
     
  2. stk

    stk Grünapfel

    Dabei seit:
    05.01.04
    Beiträge:
    7.141
    Moin,

    wenn Dir einfache Balken reichen, würde ich das einfach per CSS realisieren. Per PHP den Wert für height oder width (horizontale Balken) reingeben (ggf. vorher mit einem Faktor umrechnen) und das ganze mit einer passende Farbe ausstatten.

    Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
            "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    	<title>einfache Balkengrafik</title>
    	<style type="text/css" media="screen">
    	.wert1 {
    		width: 120px;
    		height: 20px;
    		background: #f00;
    		}
    	.wert2 {
    		width: 150px;
    		height: 20px;
    		background: #ff0;
    		}
    	.wert3 {
    		width: 280px;
    		height: 20px;
    		background: #0f0;
    		}
    	.wert4 {
    		width: 350px;
    		height: 20px;
    		background: #0ff;
    		}
    	.wert5 {
    		width: 250px;
    		height: 20px;
    		background: #00f;
    		}
    	.wert6 {
    		width: 100px;
    		height: 20px;
    		background: #f0f;
    		}
    	</style>
    </head>
    <body>
    <div class="wert1">120</div>
    <div class="wert2">150</div>
    <div class="wert3">280</div>
    <div class="wert4">350</div>
    <div class="wert5">250</div>
    <div class="wert6">100</div>
    </body>
    </html>
    
    Gruß Stefan
     
  3. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Wenn du mit PHP arbeitest gibts hier ne super Bibliothek die das Erstellen von Kurven- und Kreisdiagrammen ermöglicht. Wenn du die Datei runterlädst, findest du im Archiv auch ein paar Beispiele. Ist wirklich sehr einfach...

    http://www.aditus.nu/jpgraph/

    EDIT: Sry, hab wohl nur die ersten Absätze des Problems gelesen. Tut mir leid.
     
    #3 duderino, 08.03.06
    Zuletzt bearbeitet: 08.03.06
  4. Hausmeister76

    Hausmeister76 Adams Parmäne

    Dabei seit:
    17.08.04
    Beiträge:
    1.300
    @duderino...

    wie ich oben schon geschrieben habe, fällt jpgraph schonmal raus, da es für eine kommerzielle Nutzung kostenpflichtig ist.

    @stk....

    hmm.... muss ich mir mal genauer anschauen. Aber eigentlich sollte es schon ne Kurve sein. Ein Balkendiagramm um eine Preisentwicklung zu verdeutlichen, ist schon recht komisch.... aber mal sehen....

    Die einzelnen Lösungen unter meinem Link, sind alle nicht ohne. Leider...

    so long...
     
  5. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
  6. Hausmeister76

    Hausmeister76 Adams Parmäne

    Dabei seit:
    17.08.04
    Beiträge:
    1.300
    @duderino....

    thx für den Link.... genau das ist, was ich suche nur funktionieren tuts nicht....

    Also es geht um dieses Bsp.:
    http://www.cix88.de/cix_php/php_diagramme/cix_diagramm_linien_1.php

    hier muss ich die Funktion ImagePNG($im,$BILD) anpassen und in ImagePNG($im) umändern, da ja die PHP Funktion keine rechte hat, dieses Bild auch zu speichern.

    Nur kommt dann folgendes heraus:
    www.tankstelle-falkenhain.de/graph2.php

    ich hab mal den Quellcode mit anzeigen lassen damit man eventuell sofort erkennen kann, an was es liegen könnte....Ich habe aber sonst keine weiteren Änderungen am Quellcode vorgenommen und wollte erstmal schauen, ob es überhaupt funktioniert. Aber irgtendwie passt noch was nicht.

    Was ich selbst noch kurios finde ist, das auf meinem PB mit aktivierten Apache Web Server (Tigerversion) er schon an der Funktion imagecreate() in Zeile 21 hängt, auf dem "richtigen" Webserver läufts ohne Fehlermeldung durch. Aber scheinbar sind die ganzen Image-Funktionen meinem PB Web Server unbekannt!?!?

    so long...
     
    #6 Hausmeister76, 09.03.06
    Zuletzt bearbeitet: 09.03.06
  7. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Könnte sein dass du nen falschen Header mitsendest. Versuch doch mal den Header manuell zu übergeben.
     
    Hausmeister76 gefällt das.
  8. Hausmeister76

    Hausmeister76 Adams Parmäne

    Dabei seit:
    17.08.04
    Beiträge:
    1.300
    @duderino....

    thx.... daran hats gelegen....
    ein
    Code:
    header("Content-Type: image/gif"); 
    
    vor das ImagePNG und schon gings....sehr schön...

    so long...
     
  9. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Sehr schön :) Es freut einen immer wieder wenn man jemanden helfen konnte :)
     
  10. Hausmeister76

    Hausmeister76 Adams Parmäne

    Dabei seit:
    17.08.04
    Beiträge:
    1.300
    hallo @all...

    ich muss diesen Thread nochmals aufgreifen....ich habe mich nach langem hin und her dann doch für JPGraph entschieden....ich habe mal eine Anfrage wegen Lizenz getätigt, und bis ich die Antwort bekomme, wollte ich schonmal losmachen...

    Also nochmals zum Zusammenfassen: Ich habe eine SQL Datenbank mit Benzinpreisen. Jetzt möchte ich diese Preise als Graphen darstellen. JpGraph benötigt ein Array aus Zahlen (entweder integer, oder float). Ich habe aber ein Problem damit. Ich habe die Zahlen in meiner Datenbank aber dummerweise als "varchar" und nicht als float, oder double. Also wie bekomm ich beim auslesen der Datenbank die Werte als float in das Array?

    hier mein Quelltext:

    Code:
    $DatabasePointer = mysql_connect($DatabaseHost, 
    $DatabaseUser, $DatabasePassword);
    
    mysql_select_db($Database, $DatabasePointer);
    
    //Datenbankanfrage
    $query1=mysql_query("SELECT Benzin FROM $Table");
    
    //Array erzeugen
    $ydata  = array();
    
    //erstmal zum Test 5 Werte aus der Datenbank auslesen 
    und in das gerade erzeugte Array einfügen
    for($i=0; $i<= 3; $i++){
    
     $row = mysql_fetch_row($query1);
     $row1 = (float)$row[0];
     $ydata[$i] = $row1;
    }
    wenn ich zum Schluss noch
    Code:
    var_dump($ydata);
    ausführe erhalte ich folgendes Ergebnis:
    Code:
    array(5) { [0]=>  float(1) [1]=>  float(1) [2]=>  float(1) [3]=>  float(1) [4]=>  float(1) }
    
    scheinbar wandelt er ein 1,239 einfach in 1 um....kann man das irgendwie beheben, oder muss ich per Hand meine gesamten Zahlen nochmals als float abspeichern?
    (das Umwandeln der Zahlen auf der phpMyAdmin Oberfläche von char in float klappt auch nicht und wird mit einem stupiden hineinschreiben einer 1 vollendet. Also das gleiche wie in meinem php-script)

    Jemand ne Idee?

    hätt ichs nur gleich richtig gemacht :mad: :mad:
    diese verdammten Variablentypen.....

    thx schonmal im Vorraus

    so long....
     
    #10 Hausmeister76, 01.07.06
    Zuletzt bearbeitet: 01.07.06
  11. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Würde das wohl so machen. So hat man alle Werte in einem Array.
     
  12. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    Der Dezimaltrenner ist im Englischen ein Punkt, kein Komma. Das mußt du vorher wandeln.
     
  13. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Wenn die Werte wie bei duderino (#11) zusammengeführt werden, sollte ein »casten« der Werte nicht notwendig sein (also Deine Umwandlung per »float«).
     

Diese Seite empfehlen