SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.05.2004, 01:18:08
pumuckl pumuckl ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 11
pie chart mittels der Funktion imagefilledarc erstellen

Hallo zusammen,

Kuzer Überblick zu meinem Problem:

Ich bin gerad dabei für einen Online-Fragebogen eine grafische Auswertung zu erstellen u.a. möchte ich die Ergebnisse durch pie-charts visualisieren.

Auf meinem lokalen Rechner habe ich es auch wunderbar hinbekommen. Doch auf dem Webspace bei Schlund&Partner wird das pie chart aus irgendwelchen Gründen nicht gezeichnet.

GD-Bibliothek ist einwandfrei installiert und die Funktion ist laut function_exists() auch vorhanden. Doch trotzdem wird die Funktion imagefilledarc() nicht ausgeführt.

Vielleicht hat einer von euch schon einmal ein ähnlicher Problem gehabt oder hat eine Idee womit es zusammen hängt.

Vielen Dank im voraus.

Gruss, pumuckl
Mit Zitat antworten
  #2  
Alt 17.05.2004, 02:32:41
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: pie chart mittels der Funktion imagefilledarc erstellen

Zitat:
Original geschrieben von pumuckl
Vielleicht hat einer von euch schon einmal ein ähnlicher Problem gehabt oder hat eine Idee womit es zusammen hängt.
Weder noch. Gibt es irgend einen triftigen Grund, das Script incl. Link auf ein phpinfo des Webservers, auf dem das Script nicht zufriedenstellend arbeitet, nicht zu posten?
Mit Zitat antworten
  #3  
Alt 17.05.2004, 10:05:22
pumuckl pumuckl ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 11
Sorry meikel, feuervogel das ich das Script nicht beim ersten Mal direkt mitgeschickt habe.

Die wichtigsten Stellen sind im Script durch ******** gekennzeichnet.

Das Script sieht wie folgt aus:
PHP-Code:
<?php
header
("content-type:image/png");
include(
"../config.inc.php");
include(
"../verbindung/zugriff.inc.php");
?>
<?php
$anfrage
=mysql_select_db($dbname);
mysql_query($anfrage);
//Anzahl der abgegebenen Stimmen auslesen
$sql1="SELECT COUNT(*) as gesamt FROM $tbname";
$ergebnis1=mysql_query($sql1);
//echo $ergebnis1;
$array1=@mysql_fetch_array($ergebnis1);
$gesamtanzahl=$array1['gesamt'];

//Nur weiter, wenn bereits abgestimmt wurde
if(empty($gesamtanzahl)){
        echo(
"<p>Es hat noch niemand abgestimmt!</p></br>");
        exit;
}

echo(
"</br></br>");

$auswahlfeld=array("not use"=>"Nicht 
            beantwortet"
"0"=>"sehr gut""1"=>"gut""2"=>"befriedigend"
            
"3"=>"ausreichend""4"=>"mangelhaft");


$sql2="SELECT antwort3, COUNT(*) as gesamt FROM $tbname GROUP BY antwort3 ORDER BY 
        antwort3 asc"
;

$ergebnis2=mysql_query($sql2);//liefert die Ergebniskennung
?>

<?php
//hier wird die aeusserset Tabelle definiert Tabelle
echo("<table align=$direction $frame frame=$rahmen cellpadding=0 cellspacing=0 width=$breite bgcolor=#181747>");
echo(
"<tr>");
echo(
"<td>");
//hier wird die Tabelle 1 definiert
echo("<table border=$border cellspacing=0 cellpadding=0 width=100% bgcolor=#181747>");
echo(
"<tr>");
echo(
"<td>");
echo(
"<b><font color=#FFFFFF>3. Bewerten Sie unsere Zimmer auf einer Skala von 1 bis 5.</font></b>");
echo(
"</td>");
echo(
"</tr>");
echo(
"</table>");//die Tabelle 1 wird geschlossen
//oberste Zeile fuer die Frage hergestellt
echo("<tr>");
echo(
"<td>");
// hier wird Tabelle 2 definiert
echo("<table border=$border cellpadding=0 cellspacing=0 width=100% $hintergrundfarbe>");
echo(
"<tr>");
echo(
"<td>");
//hier wird Tabelle 3 definiert
echo("<table border=$border cellpadding=0 cellspacing=0 width=100% $hintergrundfarbe>");
echo(
"<tr>");
echo(
"<td colspan=5>");
echo(
"<strong><font color=#000000>Die Antworten verteilen sich wie folgt:</font></strong>");
echo(
"</td>");
echo(
"</tr>");
$i=0;
while(
$array2=mysql_fetch_array($ergebnis2)){

//enthaelt den Wert aus der entsprechenden Zeile aus der Spalte gesamt         
        
$anzahl=$array2['gesamt'];

//enthaelt den gespeicherten Wert von spalte antwort_1 aus der entsprechenden Zeile 
        
$antwort=$array2['antwort3'];

//prozentwerte werden berrechnet        
        
$ratio=$anzahl/$gesamtanzahl;

        
$anteil=($anzahl/$gesamtanzahl)*100;
        
$prozent=number_format($anteil,1,',','.');

        echo(
"<tr>");
        echo(
"<td align=center>");

//**********an dieser Stelle werden Legendensymbole erzeugt, der Bereich funktioniert, d.h. die Symbole werden gezeichnet

        
$image_rect=imagecreate(20,20);
        
$white=imagecolorallocate($image_rect0xFF0xFF0xFF);
        
$red=imagecolorallocate($image_rect0xFF0x000x00);
        
$blue=imagecolorallocate($image_rect000000255);
        
$green=imagecolorallocate($image_rect000255000);
        
$yellow=imagecolorallocate($image_rect255255000);
        
$brown=imagecolorallocate($image_rect,0x800x800x40);
        
$black=imagecolorallocate($image_rect000000000);

        
//Farben werden in ein Array geschrieben
        
$farbe=array($red$blue$green$yellow$brown$black);
        
        
imagefilledrectangle($image_rect2.52.517.517.5$farbe[$i]);
        
$filename="frage3[$i].png";
        
imagepng($image_rect$filename);
        echo(
"<img src=$filename />");
        echo(
"</td>");
        echo(
"<td><font color=#000000>");
        echo(
$prozent ." %");
        echo(
"</td></font>");
        echo(
"<td><font color=#000000>");
        echo(
$auswahlfeld[$antwort]);
        echo(
"</font></td>");
        echo(
"<td><font color=#000000>");
        echo(
$anzahl);
        echo(
"</td></font>");
        echo(
"<td><font color=#000000>");
        echo(
"answer(s)");
        echo(
"</td></font>");
        echo(
"</tr>");
        
$joerg[$i]=$ratio;
        
$nick[$i]=$auswahlfeld[$frage];
        
$prozent_array[$i]=$prozent;
$i++;
$counter++;        
}
//****************************

echo("</table>");//hier wird Tabelle 3 geschlossen
echo("<td>");
//hier wird Tabelle 4 definiert
echo("<table border=$border cellpadding=0 cellspacing=0 width=100% $hintergrundfarbe>");
echo(
"<tr>");
echo(
"<td align=center>");


//**********************hier fängt der Bereich an indem das pie chart gezeichnet wird
//**********************funktioniert nicht, d.h. keine Ausgabe am Browser

//Counter Variable deklariert und auf definierten Anfangswert gesetzt

$a=0;
$winkel=0;
$alpha=0;
$beta=0;
$menge=count($joerg);
//erzeugt die canvas & die colors
$image imagecreate(300300);

//Farben werden definiert
$hintergrund=imagecolorallocate($image0xAA0xAA0xAA);
$dorint_blau=imagecolorallocate($image,0x180x170x47);
$white    imagecolorallocate($image0xFF0xFF0xFF);
$red      imagecolorallocate($image0xFF0x000x00);
$blue     imagecolorallocate($image000000255);
$green    imagecolorallocate($image000255000);
$yellow   imagecolorallocate($image255255000);
$brown    imagecolorallocate($image,0x800x800x40);
$black    imagecolorallocate($image000000000);
//Farben werden in ein Array geschrieben
$color=array($red$blue$green$yellow$brown$black);
for (
$a=0$a<$menge$a++) {
  
$winkel=$joerg[$a]*360;
$winkel=round($winkel,3);
$beta=$winkel+$alpha;

//Berechnung den Winkel der Winkelhalbierende, dient zur Ausgabe der Prozentwerte am pie
$center_angle=$beta-(($beta-$alpha)/2);


//******diese Funktion wird aus irgendeinem Grund nicht ausgeführt   
  
imagefilledarc($image$offset$offset$radius*2$radius*2$alpha$beta
                  
$color[$a], IMG_ARC_PIE);

//********************

//Umrechnung von Grad in Rad
$bogenmass_alpha=($alpha*$pi)/180;
$bogenmass_beta=($beta*$pi)/180;


$x2=cos($bogenmass_alpha+($bogenmass_beta-$bogenmass_alpha)/2);
$y2=sin($bogenmass_alpha+($bogenmass_beta-$bogenmass_alpha)/2);


//*********an dieser Stelle steht normalerweise sourcecode der die Startpunkte 
//*********für die Prozentwerte am pie festlegt
//*********und zeichnet sie, dieser Bereich funktioniert auch


  
$alpha=$beta;
//$a++;
}
//********************Ausgabe des Bildes in eine Datei und anschließend im Browser
// flush image
imagepng($image'frage3.png');
echo(
"<img src='frage3.png' />");
//imagedestroy($image);

//*************************

//*********an dieser STelle steht eigentlich noch eine Ausgabe der Gesamten Wahlbeteiligung

echo("</td>");
echo(
"</tr>");
echo(
"</table>");//hier wird die Tabelle geschlossen
?>
Die vorhandenen Versionen sind:

php-Version:4.2.3
GD-Version:1.6.2 or higher

Die Angaben habe ich über phpinfo() entnommen.

Vielen Dank für eure Mühe, Gruss pumuckl

Geändert von pumuckl (17.05.2004 um 19:01:29 Uhr)
Mit Zitat antworten
  #4  
Alt 17.05.2004, 10:55:57
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
wie sollen wir wissen, warum das script nicht geht, wenn wir

a) den code nicht kennen?

b) nicht wissen unter was für einer php-konfiguration das alles abläuft?

meikel will nun wissen, aus welchem grund du uns oben stehende angaben nicht schon in deinem ersten post gemacht hast.
Mit Zitat antworten
  #5  
Alt 17.05.2004, 15:04:01
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von pumuckl
Sorry meikel, feuervogel das ich das Script nicht beim ersten Mal direkt mitgeschickt habe.
OK. Nur noch eine zusätzliche Bitte: editiere den Beitrag noch mal und füge vor dem Script
[ php ]
und nach Script
[ /php ] ein (natürlich ohne die Leerzeichen). Dann stellt das Forum Deinen Scripttext besser lesbar (dunkelgrau auf hellgrau is nich schön) dar.

Wenn mich nicht alles täuscht, erstellst Du in diesem Script ein Image, speicherst es ab und rufst es eine Zeile später im img Tag auf. Das könnte verdammt knapp sein.

Vorschlag: lagere alle Scriptbestandteile, die die Grafik erzeugen, in ein separates Script aus, welches Du auf die herkömmliche Art und Weise aufrufst:
PHP-Code:
printf ('<img src="grafik.php?%s" alt="%s"',
'frage=3'
'Grafik Frage 3')

Falls keine Session:
- alle relevanten Daten per GET übergeben (stehen dann als $_GET['varname'] zur Verfügung).
Falls Session: [php]
PHP-Code:
printf ('<img src="grafik.php?%s&amp;%s" alt="frage3"',
'frage=3'
SID # SID ist eine Konstante, die je nach Client und Config sessionname und sessionid enthält

Beachte im Grafikscript folgendes:
- sende vorher einen korrekten Header:
header("Content-Type: image/png");
- das Grafikscript darf keinerlei Text ausgeben
- bei der Ausgabe kannst Du den Dateinamen weglassen imagepng($image);
- danach imagedestroy($image) fertig.

Zitat:
php-Version:4.2.3
GD-Version:1.6.2 or higher
Beides ist etwas ältlich, aber
"imagefilledarc (PHP 4 >= 4.0.6, PHP 5)"

Ich weiß allerdings nicht genau, ob GD 1.6 schon PNG kennt.
Mit Zitat antworten
  #6  
Alt 17.05.2004, 19:14:51
pumuckl pumuckl ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 11
Hallo meikel,

vielen Dank erst einmal für deine Hilfe. Ich werde versuchen deinem Rat nachzugehen. Wenn Fragen auftauchen melde ich mich einfach wieder.

Außerdem habe ich in Erfahrung gebracht, dass die GD-Lib von Schlund eine noch ältere Version als die Version 2.0.1 handelt und somit die Funktion nicht brauchbar ist. Ein neues Update ist aber in nächster Zeit geplant.

Was meinst du eigentlich damit, dass es knapp werden könnte?

Und da fällt mir noch eine Sache ein. Ich habe es einmal ausprobiert die Grafik nicht in eine Datei zu speichern, sondern habe versucht sie direkt an den Browser auszugeben. Doch leider kam keine Grafik sondern nur ein Haufen Hyroglyphen. Hast du eine Ahnung was es damit auf sich hat.

Gruss, pumuckl

Geändert von pumuckl (17.05.2004 um 19:25:07 Uhr)
Mit Zitat antworten
  #7  
Alt 17.05.2004, 19:25:45
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von pumuckl
Was meinst du eigentlich damit, dass es knapp werden könnte.
Auf die Zeit bezogen. Es ist nicht ausgeschlossen, daß Linux noch das File schreibt, wenn der Client es schon haben will.

Zitat:
Ich habe es einmal ausprobiert die Grafik nicht in eine Datei zu speichern, sondern habe versucht sie direkt an den Browser auszugeben. Doch leider kam keine Grafik sondern nur ein Haufen Hyroglyphen. Hast du eine Ahnung was es damit auf sich hat.
Hatte ich doch geschrieben:
PHP-Code:
# vor dem Ausgabebefehl:
header("Content-Type: image/png"); 
Dann weiß der Browser: "Jetzt kommt ein Bild und kein HTML Text"
Mit Zitat antworten
  #8  
Alt 17.05.2004, 23:52:59
pumuckl pumuckl ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 11
Hallo meikel,

das mit dem header habe ich jetzt geschnallt. Bin gerade dabei deine Tipps umzusetzen und bin dabei über etwas gestossen was ich auch noch nicht weiß.


Wie kann ich eigentlich ein komplettes Array an das aufgerufende Script mittels der GET-Methode übergeben und schließlich wie kann ich dieses übergebende Array mittels _GET['var'] wieder auslesen?

Gruss, pumuckl
Mit Zitat antworten
  #9  
Alt 18.05.2004, 00:27:18
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
das ist nicht so leicht, aber schau dir mal die funktionen serialize() und unserialize() an.

warum speicherst du sowas nicht in einer session?
Mit Zitat antworten
  #10  
Alt 18.05.2004, 00:34:17
pumuckl pumuckl ist offline
Anfänger
 
Registriert seit: May 2004
Beiträge: 11
hallo feuervogel,

weil ich mit session leider noch nichts gemacht habe. habe mich bis jetzt immer davor gedrückt.

ich werde mir erst einmal deinen tipp mit den funktionen anschauen. vielleicht komme ich auf die sessions noch einmal zurück.

vielen dank für den hinweis.

gruss, pumuckl
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:17:20 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt