Tom00: Datenbank gibt nur das Erste aus

Ich habe zwei Seiten für eine Visitenkartenerstellung.
Auf Seite 1 wird die Karte mit Schrift versehen und Daten aus der Datenbank, auf Seite zwei kommt mit Image Map eine Email Verlinkung drauf.

Leider werden nicht alle Daten ausgegeben, sondern nur die Erste! Vielleicht kann mal jemand über den Code drüberschauen. Ich weiß nicht so ganz, wo die while Schleife hinmuss ( wenn sie überhaupt nötig ist...!?)

visikarte.php

<?php  
header("Content-type: image/png");  
include (config.php);  
  
$db_erg = mysql_query( "SELECT * FROM spieler " );  
if ( ! $db_erg )  
{  
die('Ungültige Abfrage: ' . mysql_error());  
}  
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))  
{  
$imgname         = './visitenkarte.gif';  
  
$image            = @imagecreatefromgif ($imgname);  
$farbe        = imagecolorallocate($image, 255, 255, 255);  
  
imagefttext($image, 15 , 0 , 26  , 152  , $farbe  , './Arial.ttf'  , 'Name');  
imagefttext($image, 15 , 0 , 85  , 114  , $farbe  , './Arial.ttf'  , 'Alter');  
imagefttext($image, 10 , 0 , 153  , 139  , $farbe  , './Arial.ttf'  , 'Punkte');  
  
imagepng($image);  
}  
?>

Und das ist visikarte2.php, hier wird die Imagemap drübergelegt:

<?php  
  
include (config.php);  
  
$db_erg = mysql_query( "SELECT id FROM spieler " );  
if ( ! $db_erg )  
{  
die('Ungültige Abfrage: ' . mysql_error());  
}  
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))  
{  
echo ('<img src="./visikarte.php" usemap="#map"/>'."\n");  
    echo ('  
         <map name="map">  
         <area shape="rect" coords="217,159,328,176" href="./spielerdetails.php">  
         <area shape="rect" coords="13,62,108,79" href="mailto:...">  
         </map>  
         ');  
}  
?>

Bei beiden Seiten kommt beim alleinigen Aufruf, nur eine Karte zu stande. Vielen Dank für Tipps und Co.!

  1. Hi,

    Leider werden nicht alle Daten ausgegeben, sondern nur die Erste!

    das hast Du wohl dem Grafikformat PNG zu verdanken - bei anderen Formaten wäre das Ergebnis vielleicht überhaupt nicht darstellbar gewesen. In HTTP erfordert jeder Request genau einen Response; wenn der Browser also eine Grafik anfordert, musst Du exakt eine Grafik zurückliefern. Nicht fünf, siebzehn oder null. Eine.

    while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
    {

    [...]

    imagepng($image);
    }

    Entscheide Dich also, welchen Durchlauf dieser Schleife Du als einzigen in ein imagepng() resultieren lassen möchtest.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Sorry aber auch das funktioniert nicht wirklich.

      Wenn ich auf der ersten Seite die Ausgabe rausnehme, kommen gar keine Daten aus der db mehr an.
      Irgendwie müssen die Daten "übergeben" werden. Nicht unbedingt per Get oder Post. Gibt es noch andere Möglichkeiten? Außer Sessions, die auch net gehen.

      1. Hi,

        Wenn ich auf der ersten Seite die Ausgabe rausnehme, kommen gar keine Daten aus der db mehr an.

        auf der Seite ist ja auch alles in Ordnung.

        Irgendwie müssen die Daten "übergeben" werden.

        Sicher. Nur darfst Du dann nicht fünf Grafiken auf einmal rausschicken. Ein Request <=> ein Response.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes