Problem mit Map


P

Philipp-

Hallo liebe Community,

ich habe folgendes vor:

Ich will eine Karte/Map machen wo Bilder ausgeben werden.
Es gibt eine Datenbank dort wo der Name der Bilder gespeichert wird.
Natürlich sind am Anfang ja noch nicht alle Felder besetzt mit Bilder,
deshalb will ich, dass dort die Variable $hnr ausgegeben wird.

Das t auch alles ganz gut, solange nur ein Bild in der Datenbank ist.
Wenn ich zwei oder mehr Bilder in der Datenbank eingetragen habe, wird nur
das erste Bild ausgegeben. und der Rest sind die Zahlen welche in der Variable $hnr
stehen.

Könnt ihr mir helfen wie ich das hinbekomme, dass alle Bilder aus der Datenbank
ausgegeben werden?

Hier der Code:

PHP:
<?php
require_once("./acp/lib/config.php");
//KoordsID Select
		$qry = "SELECT * FROM koords";
		$result = mysql_query($qry) OR die(mysql_error());
		$data = mysql_fetch_assoc($result);
 	// Y - Koordinaten
		for ($y = 0; $y <=$fieldy; $y++) {
		 echo "<ul>";
         	if ($y != 0)
        // X - Koordinaten
         	for ($x = 1; $x <=$fieldx; $x++) {
        		if ($y == 0) 
					echo "<li><strong>".$x."</strong></li>";
        		if ($y > 0) {         
            		$hnr=$y*8+$x-8;
	        		  if($hnr == $data['koordID']) {
					  	 echo "<li><img src=\"".$data['img']."\" border='0' \></li>";
						 } else {
           				 echo "<li>".$hnr."</li>";
					  } 
        		}
         	}
         	echo "</ul>";	
      	}
?>

Mit freundlichen Grüßen
Philipp
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

wie sieht denn die Tabellenstruktur dazu aus? Das steht alles in einem Datensatz?
Und was soll denn das hier:

PHP:
$hnr=$y*8+$x-8;
if($hnr == $data['koordID']) {

LG
 

aGeNET

Erfahrenes Mitglied
PHP:
<?php
require_once("./acp/lib/config.php");
//KoordsID Select
        $qry = "SELECT * FROM koords";
        $result = mysql_query($qry) OR die(mysql_error());
        while ( $data = mysql_fetch_assoc($result) )
        {
     // Y - Koordinaten
        for ($y = 0; $y <=$fieldy; $y++) {
         echo "<ul>";
             if ($y != 0)
        // X - Koordinaten
             for ($x = 1; $x <=$fieldx; $x++) {
                if ($y == 0) 
                    echo "<li><strong>".$x."</strong></li>";
                if ($y > 0) {         
                    $hnr=$y*8+$x-8;
                      if($hnr == $data['koordID']) {
                           echo "<li><img src=\"".$data['img']."\" border='0' \></li>";
                         } else {
                            echo "<li>".$hnr."</li>";
                      } 
                }
             }
             echo "</ul>";    
          }
        }
?>

Sollte sich alle Bilder aus der DB holen.
 
P

Philipp-

Hi,

wie sieht denn die Tabellenstruktur dazu aus? Das steht alles in einem Datensatz?
Und was soll denn das hier:

PHP:
$hnr=$y*8+$x-8;
if($hnr == $data['koordID']) {

LG

In einem Datensatz steht die Id des Bildes, die Feldid welche durch die Variable $hnr erzeugt wird und der Bildname

@agenet: Wenn ich das nach deiner Variante mache, ist in dem Feld nur ein Bild und die restlichen Zahlen, jedoch sind dann die Felder so oft vorhanden wie es Bilder in der Datenbank gibt.

mfg Philipp
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

Lies doch erstmal die Datenbank aus und speicher die Bilder in einem geeigneten Array:

PHP:
$bilder = array();
$qry = "SELECT * FROM koords";
$result = mysql_query($qry) OR die(mysql_error());
while ( $data = mysql_fetch_assoc($result) ) {
   $bilder[$data['koordID']] = $data['img'];
}
:
:
// und dann in Deinem Schleifenkonstrukt
$hnr=$y*8+$x-8;
if(array_key_exists($hnr, $bilder)) {
   echo "<li><img src=\"".$bilder[$hnr]."\" border='0' \></li>";
} else {
   echo "<li>".$hnr."</li>";
}

Hoffe, ich hab' das richtig verstanden...

LG
 
P

Philipp-

Wunderbar. Danke dir kuddeldaddeldu.
Jetzt habe ich noch ein Problem:

Ich will, dass nach dem echo "</ul>"; eine neue Zeile kommt. Dies habe ich schon so versucht:

1. echo "</ul>\n";
2. echo "</ul><br />";

So bei beiden Varianten funktioniert das nicht. Bei der 1. Variante ist gar nichts zu sehen,
Bei der 2. Variante, sieht man zwar etwas aber net so wie es gewollt ist.
Es wird nur in der ersten Zeile sichtbar und dann auch nur nach dem 8. Feld, was im Prinzip ja richtig ist, jedoch gehen die nächsten 8 Felder nur um ein paar Pixel nach unten.
Hat dafür vllt jemand eine Lösung.

Wäre euch sehr dankbar.

mfg Philipp
 

kuddeldaddeldu

Erfahrenes Mitglied
Hi,

Listen sind eigentlich Blockelemente, d.h. nach einem </ul> sollte eigentlich automatisch eine neue Zeile kommen. Abstände und Ausrichtungen solltest Du per CSS formatieren. Dazu kannst Du den Listen ja z.B. eine Klasse verpassen.

LG
 

Forum-Statistiken

Themen
272.358
Beiträge
1.558.620
Mitglieder
187.832
Neuestes Mitglied
SirrDansen