Bild mit Punkten aus MySQL-Koordinaten bemalen

  • Themenstarter Themenstarter doenertir
  • Beginndatum Beginndatum
D

doenertir

Problem: Ich bekomme die Koordinaten aus meiner MySQL-DB nicht ins Bild gezeichnet.
Die Datei, in die das "PHP-Bild" als <img> eingebettet ist, enthält folgenden Code:

PHP:
<?
$coords = array();
$result = mysql_query("SELECT koordinaten FROM db");
while($row = mysql_fetch_array($result)) {
    $koordinaten = explode(",",$row[koordinaten]); // Bsp.: $row[koordinaten] = "212,192"
    array_push($coords,intval($koordinaten[0]));
    array_push($coords,intval($koordinaten[1]));
}
?>


^-- halt das Array mit den Integer-Koordinaten drin...

In der bild.php sollen nun auf eine Grafik "karte.png" Kreise bei den Koordinaten aus dem Array gezeichnet werden:
PHP:
<?php
$im = imagecreatefrompng("karte.png");
$schwarz = imagecolorallocate ($im, 0, 0, 0);

$i = 0;
while ( $i<count($coords) ) {
    $x = $coords[$i];
    $y = $coords[$i+1];
    imagefilledellipse($im,$x,$y,5,5,$schwarz);
    $i = $i+2;
}

header("Content-Type: image/jpeg");
imagejpeg($im,'',100);
imagedestroy ($im);
?>



...was ohne das Array mit den Werten aus der MySQL-DB auch super funktioniert. (Also wenn ich $coords = array(x1,y1,x2,y2...) in der bild.php definiere.)

Vorher hatte ich es schon damit probiert, die MySQL-Abfrage direkt in der bild.php laufen zu lassen und hatte dann eben in der while-Schleife (s.o.):
PHP:
<?php ... {
$koordinaten = explode(",",$row[koordinaten]);
imagefilledellipse($im,$koordinaten[0],$koordinaten[1],5,5,$schwarz);
}
?>


Beide Versionen brachten mich zum selben Ergebnis: die Grafik blieb stur und ließ sich partout nicht mit meinen Punkten bemalen. Was nun?

Edit: Es soll übrigens eine Übersichtskarte werden, auf der die User mit ihren Koordinaten eingetragen sein sollen.
 
Vllt. hilft dir das hier:
PHP:
// create a blank image
$image = ImageCreateFromGif ("Deutschland.gif");

// choose a color for the ellipse
$ellipse_white = ImageColorAllocate ($image, 255, 255, 255);
$ellipse_black = ImageColorAllocate ($image, 0, 0, 0);

mysql_connect ("localhost", "voodoo", "");
mysql_select_db ("voodoo");
$sql = mysql_query ("select x, y from de order by x asc");
while ($row = mysql_fetch_assoc ($sql)) {
  $x = $row['x']-2;
  $y = $row['y']-2;
  // draw the white ellipse
  ImageFilledEllipse($image, $x, $y, 4, 4, $ellipse_white);
  ImageEllipse($image, $x, $y, 4, 4, $ellipse_black);
}

// output the picture
header ("Content-type: image/png");
ImagePNG ($image);
 
Nee, hilft gar nicht.
Selbst mit diesem assoziativen Array und den Koordinaten einzeln in der DB, scheint es nicht zu funktionieren.

Ich habe dabei den Verdacht, dass man in *.php-Bildern, also Bildern, die man mit PHP verändert, keine MySQL-Abfragen und solch Sachen machen kann. Kann das sein?

Wer kann helfen?
 
doenertir hat gesagt.:
Ich habe dabei den Verdacht, dass man in *.php-Bildern, also Bildern, die man mit PHP verändert, keine MySQL-Abfragen und solch Sachen machen kann. Kann das sein?
Siehst doch bei meinem Script, dass es geht :)
 
Bei mir gings aber nich so... komischerweise. Wahrscheinlich hab ich was falsch gemacht.

Jedenfalls klappts jetzt. Hab das fertige Bild am Ende jetzt mit Namen gespeichert und das "bild.php" damit ersetzt:

PHP:
imagepng($image,'image.png');

Danke für den Anstoß!
 
Zurück