• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Graphen aus einer SQL Datenbank generieren

Hausmeister76

Adams Parmäne
Registriert
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...
 

stk

Grünapfel
Registriert
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
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
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.
 
Zuletzt bearbeitet:

Hausmeister76

Adams Parmäne
Registriert
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...
 

Hausmeister76

Adams Parmäne
Registriert
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...
 
Zuletzt bearbeitet:

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
Könnte sein dass du nen falschen Header mitsendest. Versuch doch mal den Header manuell zu übergeben.
 
  • Like
Reaktionen: Hausmeister76

Hausmeister76

Adams Parmäne
Registriert
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...
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
Sehr schön :) Es freut einen immer wieder wenn man jemanden helfen konnte :)
 

Hausmeister76

Adams Parmäne
Registriert
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....
 
Zuletzt bearbeitet:

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
$query = mysql_query("SELECT Benzin FROM '".$Table."' LIMIT 0,5");

while($fetch = mysql_fetch_array($query)) {

$array[] = $fetch["Benzin"];

}

Würde das wohl so machen. So hat man alle Werte in einem Array.
 

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
Hausmeister76 schrieb:
scheinbar wandelt er ein 1,239 einfach in 1 um....

Der Dezimaltrenner ist im Englischen ein Punkt, kein Komma. Das mußt du vorher wandeln.
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
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«).