Fehler im Array?Gecodete Karte streikt!

BenoX

Erfahrenes Mitglied
Hi,

hab nen kleines Problem (Droidwars Spieler werden es besser verstehen *gg).
Ich bin dabei mein Tool für einen Droidwars (Browsergame) Clan auszubauen und dazu gehört nun auch eine Karte wie im Spiel.

Jetzt mal zum code:

PHP:
        $verbindung = mysql_query("SELECT * FROM klonberichte WHERE quad = '".quad_checked."' && pub = 'ja'");
        $array = array(array(),array(),array(),array(),array());
        while ($reihe = mysql_fetch_array($verbindung)) {
            array_push ($array[0], $reihe["koord"]);
            array_push ($array[1], $reihe["commander"]);
            array_push ($array[2], $reihe["base"]);
            array_push ($array[3], $reihe["clan"]);
            array_push ($array[4], $reihe["id"]);
        }

    $a_omni = ($_GET["quad"]*500)+1;
    $e_omni = ($_GET["quad"]*500)+500;
    $y = 1;
    for ($x = $a_omni; $x <= $e_omni; $x) {
    echo "
    <tr>
    ";
        for($f = 1; $f <= 25; $f++) {
        if ($ar = array_search($x, $array[0])) {
           echo "<td bgcolor=\"#FF0000\" onClick=\"go_to(".$array[4][$ar].")\" OnMouseOver=\"show_inf('".$array[1][$ar]."','".$array[2][$ar]."','".$x."','".$array[3][$ar]."');\">&nbsp;&nbsp;&nbsp;</td>";
        }
        else {
           echo "<td OnMouseOver=\"show_inf('-','-','".$x."','-');\">&nbsp;&nbsp;&nbsp;</td>";
        }
           $y += 1;
           $x += 1;
        }

Auf einer Karten-Seite gibt es maximal 500 Basen, und da es die MySQL Datenbank zu sehr beanspruchen würde bei jeder Koordinate abzufragen ob ein Eintrag dafür vorhanden ist hab ich das mit Arrays gelöst.

Soweit klappt alles wunderbar, nur leider zeigt er mir den ersten Eintrag nicht an, sprich wenn ein Eintrag auf einer Karten-Seite vorhanden ist wird dieser nicht Rot makiert und auch nicht angzeigt beim draufklicken bzw. drüberfahren mit der Maus. Bei 3 Einträgen zeigt er nur 2 an etc.

Immer der erste Eintrag fehlt z.b. wenn ich das Array $array[0] ausgeben lasse zeigt er mir

102552
102739
102942

an, auf der Karte wird aber immer nu

102739
102942

angezeigt, also immer der Erste Eintrag im Array nicht :(

Hat jemand ne Idee woran's liegen kann? Danke.
 
Jetzt überlege mal ob das ganze so Sinn macht. Lege für die Basen einfach mal eine Tabelle an. In dieser speicherst du alle Daten die sich auf die Basen beziehen.
PHP:
$max_basen=500;
$basis = array();

$result=mysql_query("SELECT * FROM tabelle")
{
for($i=0,$i<$max_basen && $row=mysql_fetch_array($result);$i++){
$basis[$i][1] = $row[spaltenname];
$basis[$i][2] = $row[spaltennamedernächstenspalte];
// ... usw
}
}

Gruss!
 
Hi Lukasz,

ich versteh ehrlich gesagt nicht ganz was du meinst. Ich habe bereit eine Tabellarische auflistung aller Informationen von allen vorhanden Einträgen, nur einige von den Benutztern möchte halt auch gerne eine grafische Ansicht also eine Karte, von allen Droidwars tools wird das über Tabellen geregelt und das möchte ich auch beibehalten.

Er soll mir halt die vorhanden Basen rot makieren und per Javascript die Infos zeigen wie man ja im OnMouseOver sieht ;)

/edit also am aussehen der Karte soll sich nichts ändern, es soll aber der Fehler gefunden worden warum er mir den ersten Eintrag nicht anzeigt
 
Zuletzt bearbeitet:
Hi,
Habe deinen Code nicht so ganz nachvollziehen können. Es könnte aber sein, dass es an einem deiner for-Schleifen-Zähler liegt. Schau mal, ob dein Script sich daher nicht wie gewollt verhält.

mfg
 
Zurück