Ankündigung

Einklappen
Keine Ankündigung bisher.

Kartensystem

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kartensystem

    Hallo,

    Und zwar hab ich eigentlich kein Problem mit dem eigentlichen Code, mir fehlt einfach die Realsierungsidee.

    Das Script ist so aufgebaut:
    Jeder Datensatz ist in der Datenbankgespeichert, also
    "x","y","name" etc. von einem Feld.

    Daher hat jedes Feld seine eigene Koordinaten.

    BSP 1:
    --> Feld 1
    x:1 - y1 (Reihe 1, Spalte 1)
    --> Feld 2
    x:2 - y1 (Reihe 2, Spalte 1)
    --> Feld 3
    x:1 - y2 (Reihe 1, Spalte 2)
    --> Feld 4
    usw.
    Das man das Feld erkennen kann wird eine Grafik erstellt, das Script stell ich auch on, damit man es dann mal mehr versteht.

    So zum eigentichen Problem:
    Ich krieg die MySQL Abfrage nicht so hin das alle Felder von z.b
    "x1" bis "x5" und von "y1" bis "y2" angezeigt werden.

    Immoment wird immer nur 1Spalte angezeigt. Also nur immer ein y Feld. Eigentlich will ich aber immer mindestens zwei "y" Felder angezeigt bekommen, bekomms aber nicht so richtig hin ;(

    Wäre nett wenn ihr vielleicht ein Lösungsvorschlag hättet.

    Screenshots und Codes:

    Screenshot:

    Code --> karte.php:
    PHP-Code:
    <?php
    session_start
    ();
    if (
    $_SESSION["logged_in"] == "1"){
    if (isset(
    $_GET['show']) && $_GET['show'] == '1'){;
    ?>
    <table class='tabelle_news' width='100%' border='1'>
              <tr>
                <td>
                    <table width='100%' border='0' cellpadding='5' cellspacing='0'>
                      <tr>
                        <td colspan="3" class='tabelle_news_titel'>[img]images/small.jpg[/img] [b]Karte[/b]</td>
                      </tr>
                        <tr>
                          <td colspan="3" class='tabelleo'>
                            Es exestieren x Kontinente, xx L&auml;nder davon besetzt sind xx L&auml;nder.</td>
                        </tr>
                        <tr>
                          <td colspan="3" align="center" class='tabelleo'>
                          <table width="100%" border="0" cellspacing="0" cellpadding="1">
                            <tr>
                              <td width="48%" class="tabelle_lruobg" rowspan="8" align="center">
                                  <a href="index.php?game=karte&show=1&x=<?=$_GET["x"];?>&y=<?=$_GET["y"]-"1";?>">
                                      [img]images/karte/links.gif[/img]
                                </a>
                              </td>
                              <td height="54" class="tabelle_oubg" colspan="2" align="center">
                              <a href="index.php?game=karte&show=1&x=<?=$_GET["x"]-"1";?>&y=<?=$_GET["y"];?>">
                                      [img]images/karte/Oben.gif[/img]
                              </a>
                              </td>
                              <td width="48%" class="tabelle_lruobg" rowspan="8" align="center">
                                   <a href="index.php?game=karte&show=1&x=<?=$_GET["x"];?>&y=<?=$_GET["y"]+"1";?>">
                                      [img]images/karte/rechts.gif[/img]
                                  </a>
                              </td>
                            </tr>
    <?php
    $query 
    $db->query("SELECT id, x, y, xy_code, typ, typ_name, einheiten, land_name, 
                                 besitzer, punkte, erobert, newbie 
                          FROM game_karte WHERE x >= '"
    .$_GET["x"]."' AND y = '".$_GET["y"]."' LIMIT 4");
    while (
    $d $db->fetch_array($query)){
    ################################################################################## Teil 1 ?
    ?>
    <tr>
        <td colspan="2" align="center">
            <img src="game/scripts/karte/map_land.php
              <? echo "?x=".$d["x"]."
                       &y=".$d["y"]."
                       &typ=".$d["typ"]."
                       &typ_name=".$d["typ_name"]."
                       &einheiten=".$d["einheiten"]."
                       &land_name=".$d["land_name"]."
                       &besitzer=".$d["besitzer"]."
                       &punkte=".$d["punkte"]."
                       &erobert=".$d["erobert"]."
                       &newbie=".$d["newbie"]."
                       &xy_code=".$d["xy_code"]."
            "; ?>" hspace="1" vspace="1" border="1">
        </td>
    </tr>
    <? } ################################################################################## Ende ?>
                            <tr>
                                  <td height="57" class="tabelle_oubg" colspan="2" align="center">
                                  <a href="index.php?game=karte&show=1&x=<?=$_GET["x"]+"1";?>&y=<?=$_GET["y"];?>">
                                  [img]images/karte/unten.gif[/img]
                                  </a>
                              </td>
                            </tr>
                          </table></td>
                        </tr>
                  </table>
                </td>
              </tr>
    </table>
    <?
    }
    } else {
        $messages->message("4");
    }
    ?>

    Code ---> map_land.php
    PHP-Code:
    <?php
    session_start
    ();
    header ("Content-type: image/png");
    $im = @ImageCreateFromJPEG("../../../".$_GET["typ"]."");
    ########################################
    ############ Farben
    $color_black    ImageColorAllocate($im000);
    $color_grey        Imagecolorallocate($im240240240);
    $color_darkred    Imagecolorallocate($im12800);
    ########################################
    ############ Bsitzer
    ImageString ($im284"Besitzer:"$color_darkred);
    ImageString ($im2644$_GET["besitzer"], $color_black);
    ########################################
    ############ Infos & Ausgbe
    ImageString ($im24255"Name:"$color_black);
    ImageString ($im24165"Typ:"$color_black);
    ImageString ($im24275"Koords:"$color_black);
    ImageString ($im24285"Punkte:"$color_black);
    ImageString ($im24295"Armee:"$color_black);
    ############
    ImageString ($im27455$_GET["land_name"], $color_black);
    ImageString ($im26865$_GET["typ_name"], $color_black);
    ImageString ($im28775$_GET["xy_code"], $color_black);
    ImageString ($im28785$_GET["punkte"], $color_black);
    ImageString ($im28095$_GET["einheiten"], $color_black);
    ########################################
    ImagePNG ($im); // Bild "ausgeben"
    Imagedestroy ($im); // Zeiger wieder freigeben#
    ?>

  • #2
    Mit LIMIT 4 begrenzt Du das Ergebnis ja auf 4 Einträge.
    Und in der Ausgabe schreibst Du alles in eine neue Tabellen-Zeile.
    Wenn ich Deine Abfrage so ansehe (AND y=...) sollte das doch alles eine Zeile sein und nicht eine Spalte. Die Koordinaten im Bild deuten auch darauf hin, dass die nebeneinander stehen sollten.

    Außerdem liest Du die Felder total unsortiert aus der DB. Die Anzeige könnte also auch recht durcheinander aussehen.

    Hier mal ein Denkanstoß:
    Mach beim Auslesen ein 2dimensionales Array, in das Du die gelesenen Werte packst. Insgesamt wird das dann ein 3dimensionales Array.

    $Felder = array();
    dann pro Spalte (x1<=$x<=x2)
    $Felder[$x]=array();

    SQL-Abfrage: .... WHERE ... AND x>=x1 AND x <=x2 AND y<=y1 AND y<=y2

    Kein LIMIT etc.

    Danach die Ergebniswerte auslesen:
    PHP-Code:
    <?
    while ($row=mysql_fetch_assoc())
       $Felder[$row['x']][$row['y']] = $row;
    ?>
    Damit hast Du erstmal alle Felder ausgelesen.

    Nun noch in die Tabelle packen:
    PHP-Code:
    <?
    //Tabellenkopf ausgeben
    for ($y=$y1 ; $y<=$y1; $y++)
    { // Eine Zeile ausgeben...
       echo '<tr>';
       for ($x=$x1; $x >= $x2; $x++)
       { // Ein Feld ausgeben
          echo '<td>';
          $Feld = $Felder[$x][$y];
          // Daten stehen wie gewohnt bereit in $Feld[]...
          echo '</td>';
       }
       echo '</tr>';
    }
    ?>
    **********************************
    Nein, ich bin nicht die Signatur.
    Ich putze hier nur.
    **********************************

    Kommentar


    • #3
      Mhh ich glaub ich hab das etwas undeutlich erklärt, ausser ich verstehe das grade Falsch

      Also, Die Karte soll so angezeigt werden:
      ---> Ab. 0.1
      --------------
      x1,y1|x1,y2|
      x2,y1|x2,y2|
      --------------

      Immoment ist es ja nur so:
      ---> Ab. 0.2
      -------
      x1,y1|
      x2,y1|
      -------

      Die Navigation funktioniert ja, also rechts, links, oben und unten. Ich möchte es nurnoch so hinkriegen das 2 Spalten angezeigt werden. (Ab. 0.1)

      Gruß s1x

      Kommentar


      • #4
        OK. Deine eigenwillige Benennung der Koordinaten ist also Absicht.
        Üblicherweise verläuft die x-Achse horizontal und die y-Achse vertikal. Ist aber ja egal.

        Die einzelne Spalte kriegst Du, weil Du auf y=$y abfragst. Das ist nunmal nur genau ein Wert und nicht ein Bereich.

        Vertausche einfach x und y aus meinem Posting und alles wird gut.
        **********************************
        Nein, ich bin nicht die Signatur.
        Ich putze hier nur.
        **********************************

        Kommentar

        Lädt...
        X