Antworten auf deine Fragen:
Neues Thema erstellen

Tutorial Liniendiagramm

redbull2906

Nicht mehr ganz neu hier

Hallo zusammen,

vllt. könnt ihr mir weiter helfen. Ich suche ein Tutorial um mit PHP ein Liniendiagramm zu erstellen. Genauer gesagt möchte ich bei meinem Tippspiel einen Saisonverlauf der einzelnen Spieler (Platzierungen pro Spieltag) grafisch darstellen.

Vllt. kennt einer von euch ein gutes Tutorial?!?!
 

Duddle

Posting-Frequenz: 14µHz

AW: Tutorial Liniendiagramm

Da gibt es schon fertige Bibliotheken. Google einfach nach "graphs php". Einbinden, Dokumentation lesen, Daten draufhauen, fertig.


Duddle
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

@duddle

danke dir für deine Hilfe - soweit komm ich auch mit dem gefunden graph klar. Da ich aber immer noch meine probleme habe mit arrays bräuchte ich nochmals deine oder eure hilfe

So baue ich den Graph manuell auf

PHP:
$chart [ 'chart_data' ] = array ( array ( "",         "1", "2", "3", "4", '5', '6', '7', '8', '9', '10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34' ),///Spieltage
                                  array ( "Spieler A",     -1,     -10,     -20,     -4  ),
                                  array ( "Spieler B",   -1,     -2,     -6,     -5  ),
                                  array ( "Spieler C",    -6,     -21,      -15,     -14,-25 ));

Nun soll das ganze ja dynamisch mit einer MySql-DB funktionieren
Mein Script sieht jetzt so aus
PHP:
$chart [ 'chart_data' ] = array ( array ( "",  "1", "2", "3", "4", '5', '6', '7', '8', '9', '10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34' ))//Spieltage;
include(''//DB Variablen);
$abfrage ="SELECT id, vorname, nachname FROM spieler ORDER BY id";
$sql = mysql_query($abfrage);
$i=1;

while($row=mysql_fetch_array($sql)){
    $chart['chart_data'][] = $row['vorname'];
    $id = $row['id'];
$platz = "SELECT platz FROM verlauf WHERE tipper_id = '$id'";
    $platzsql = mysql_query($platz);
    while($p = mysql_fetch_array($platzsql)){
        $chart['chart_data'][$i][] = $p['platz'];
    }

$i++;
}

Ich bekomme jedoch keinen Linienverlauf dargestellt. Wo liegt mein Fehler im aufbau des Array wie im o.g. manuellen Aufbau?
 

Duddle

Posting-Frequenz: 14µHz

AW: Tutorial Liniendiagramm

Deine zweite Zeile kommentiert das Semikolon aus, das zerreißt das Script schon dort.
Ansonsten schau doch einfach, wie das Array nach der while-Schleife aussieht (print_r()). Dann solltest du sehen ob / wo da Fehler drin sind.


Duddle
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

Das Fehler beim Kommentar hat sich nur beim tippen im Forum eingeschlichen daran liegt es nicht.

Habe mir das array mit print_r anzeigen lassen - ist identisch zum manuellen print_r.

Hast du vllt. noch eine Idee? Der Aufbau des Arrays ist doch so rochtig oder?
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

Wie nicht verraten was ich damit mache?

Die erste while-Schleife zieht mir alle Spieler die in der DB stehen und generiert mir für jeden einzelnen ein array. In der zweiten while-Schleife hole ich mir dann die Platzierung pro Spieltag des jeweiligen Spielers und fügt es dem entsprechenden Array im Array $chart zu.

So das ich im grunde einen Aufbau des Array '$chart' habe wie beim manuellen Aufbau.

Das erste Array im array $chart ist die Spieltagleiste und alle weiteren Arrays darin sind dann Spieler.

Hier mal die Seite von dem ich die graph habe
 

Duddle

Posting-Frequenz: 14µHz

AW: Tutorial Liniendiagramm

Also bei mir funktioniert es:
Nngax.png


Ich würde mir ja gern deinen restlichen Quellcode anschauen, aber wie oben schon angedeutet ist meine Glaskugel im Moment nicht funktionstüchtig (ein ungeschickter Zwischenfall, der neben einer grünen Bananenschale auch drei Nilpferde beinhaltete).


Duddle
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

ach ja natrülich - hatte die Glaskugel vergessen ;)

Hier mal der gesamte Code

PHP:
<?php
//include charts.php to access the SendChartData function
include "charts.php";
//change the chart to a bar chart
$chart [ 'chart_type' ] = "line";
//the chart's data
$chart [ 'chart_data' ] = array ( array ( "",  "1", "2", "3", "4", '5', '6', '7', '8', '9', '10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34' ));
include('var.inc.php');
$abfrage ="SELECT id, vorname, nachname FROM user ORDER BY user.id";
$sql = mysql_query($abfrage);
$i=1;
while($row=mysql_fetch_array($sql)){
 $data['chart_data'][] = array($row['vorname']);
 $id = $row['id'];
$platz = "SELECT platz FROM verlauf WHERE tipper_id = '$id'";
 $platzsql = mysql_query($platz);
 while($p = mysql_fetch_array($platzsql)){
  $data['chart_data'][$i][] = $p['platz'];
 }
$i++;
}
// X-Achsen beschriftung (Spieltag)        
//make category labels green
//skip every other label
$chart [ 'axis_category' ] = array (   'skip'         =>  0,
                                       'font'         =>  "Arial", 
                                       'bold'         =>  true, 
                                       'size'         =>  10, 
                                       'color'        =>  "88FF00", 
                                       'alpha'        =>  75,
                                       'orientation'  =>  "horizontal"
                                   ); 
           
//Achse Platz
$chart [ 'axis_value' ] = array (  'steps'   => 26,    
                                    'font'          =>  "Arial", 
                                    'bold'          =>  true, 
                                    'size'          =>  10, 
                                    'color'         =>  "FFFFFF", 
                                    'alpha'         =>  75,
                                   );
//adjust the chart's background color 
$chart [ 'chart_rect' ] = array ( 'negative_color'=>"FFFFFF", 'negative_alpha'=>75 );   
//override the value-axis labels to make them positive numbers
$chart [ 'axis_value_text' ] = array ( '',"25", "24", "23", "22", "21",'20','19','18','17','16','15','14','13','12','11','10','9','8','7','6','5','4','3','2','1', '');   
//Legende links
$chart [ 'legend_label' ] = array (   'layout' => 'vertical',
                                      'font'    =>  'Arial', 
                                      'bold'    =>  true, 
                                      'size'    =>  11, 
                                      'color'   =>  'FFFFFF', 
                                      'alpha'   =>  75
                                  ); 
$chart[ 'legend_rect' ] = array ( 'x'=>15, 'y'=>15, 'width'=>150, 'height'=>75, 'margin'=>10, 'fill_color'=>"000000", 'fill_alpha'=>5, 'line_color'=>"000000", 'line_alpha'=>20, 'line_thickness'=>0 );
//Farbe der Linien
//set series color to white and black
///$chart [ 'series_color' ] = array ( "FFFFFF", "000000" );
//send the new chart data to the charts.swf flash file
SendChartData ( $chart );

?>

Manuell läuft es ja bei mir auch aber ich möchte die Daten ja dyniamsich da rein haben
 

Duddle

Posting-Frequenz: 14µHz

AW: Tutorial Liniendiagramm

Und diese Datei wird dann auch in einer anderen Datei angesprochen über InsertChart()?

Reingearbeitet habe ich mich nicht, aber im Beispieltutorial auf deren Seite steht zumindest klar da, dass nur SendChartData() nichts wirklich anzeigt.


Duddle
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

Ja richtig diese Datei wird angesprochen über InsertChart().

Ich denke das ich irgendwo einen Fehler beim Array-Aufbau über MySql habe aber ich find ihn net.
 

Duddle

Posting-Frequenz: 14µHz

AW: Tutorial Liniendiagramm

Ich würde erstmal alles optionale rauskommentieren, also nur die Daten reinstopfen und das Ergebnis anschauen. Wenn es dann angezeigt wird, nimmst du nach und nach mehr Optionen rein. Falls es nicht angezeigt wird, sind die Daten irgendwo falsch strukturiert.
Vielleicht ist auch irgendwo ein Sonderzeichen drin, das Flash nicht gefällt oder so. Deshalb würde ich, wie oben schon gesagt, die Daten mir ausgeben lassen und davon immer mehr manuell übergeben, bis es nicht mehr funktioniert.

Duddle
 

redbull2906

Nicht mehr ganz neu hier

AW: Tutorial Liniendiagramm

Fehler gefunden - es lag an den Umlauten die in den Spielernamen sind.
Diese brav maskiert und siehe da et läuft
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben