kostenloser Webspace werbefrei: lima-city


Unterste Reihe in Tabelle fehlt

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    Hey,
    Ich habe ein kleines Problem und finde den Fehler nicht der Skript sieht so aus:

    <table border="1" align="center" cellspacing="0" cellpadding="0">
    <?php
    include('connect.php');// Verbindung aufbauen
    
      
    $x = 497;$y = 498;
    while($y != 502)
    {
            $x++;
        if($x > 502)
        {
            $y++;
            $x = 498;
            echo "<tr>";
        }
        $bild = mysql_query("SELECT dorfname FROM dorf_allgemein WHERE posX = '$x' and posY = '$y'");
        $bild = mysql_fetch_object($bild);
    
        if($bild->dorfname != "")
        {
            $bild2 = "eigenesdorf.png";
        }
        else
        {
            $bild2 = "unbewohnt.png";
        }
        echo "<td><a href='gesamtkarte.php?x=".$x."&y=".$y."' ><img border=\"0\" title='X:".$x." Y:".$y."' src='".$bild2."'></a></td>";
    
    
    
    
    
    }
           ?>   </table>
              <br /> <br />
       <img src="unbewohnt.png"> = Unbewohntes Dorf
        <br /> <br />
       <img src="eigenesdorf.png"> = Eigenes Dorf


    Und das Erbebnis so: http://volnerius.lima-city.de/gesamtkarte.php

    Mein Problem daran ist, dass die unterste Zeile nicht ganz ausgefüllt ist aber ich entdecke den Fehler nicht. Eigentlich sollte es nämlich so aussehen: http://volnerius.lima-city.de/karte.html

    Weiß wer woran es liegt? Falls ja bitte helft mir :/
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    ich weiß nicht wie das mit $x und $y gemeint ist, das sind auch keine guten Variablennamen.
    Aber eins ist sicher:
    echo "<tr>";
    muss zu
    echo "</tr><tr>";
    umgewandelt werden ;-)

    Gruß,
    dex
  4. Dein HTML-Quellcode schaut so aus:
    <table border="1" align="center" cellspacing="0" cellpadding="0">
    <td><a href='gesamtkarte.php?x=498&y=498' ><img border="0" title='X:498 Y:498' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=499&y=498' ><img border="0" title='X:499 Y:498' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=500&y=498' ><img border="0" title='X:500 Y:498' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=501&y=498' ><img border="0" title='X:501 Y:498' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=502&y=498' ><img border="0" title='X:502 Y:498' src='unbewohnt.png'></a></td>
    <tr><td><a href='gesamtkarte.php?x=498&y=499' ><img border="0" title='X:498 Y:499' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=499&y=499' ><img border="0" title='X:499 Y:499' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=500&y=499' ><img border="0" title='X:500 Y:499' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=501&y=499' ><img border="0" title='X:501 Y:499' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=502&y=499' ><img border="0" title='X:502 Y:499' src='unbewohnt.png'></a></td>
    <tr><td><a href='gesamtkarte.php?x=498&y=500' ><img border="0" title='X:498 Y:500' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=499&y=500' ><img border="0" title='X:499 Y:500' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=500&y=500' ><img border="0" title='X:500 Y:500' src='eigenesdorf.png'></a></td><td><a href='gesamtkarte.php?x=501&y=500' ><img border="0" title='X:501 Y:500' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=502&y=500' ><img border="0" title='X:502 Y:500' src='unbewohnt.png'></a></td>
    <tr><td><a href='gesamtkarte.php?x=498&y=501' ><img border="0" title='X:498 Y:501' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=499&y=501' ><img border="0" title='X:499 Y:501' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=500&y=501' ><img border="0" title='X:500 Y:501' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=501&y=501' ><img border="0" title='X:501 Y:501' src='unbewohnt.png'></a></td><td><a href='gesamtkarte.php?x=502&y=501' ><img border="0" title='X:502 Y:501' src='unbewohnt.png'></a></td>
    <tr><td><a href='gesamtkarte.php?x=498&y=502' ><img border="0" title='X:498 Y:502' src='unbewohnt.png'></a></td>
    </table>


    Wie qap2 bereits angemerkt hat, fehlen jeweils die schließenden </tr>-Tags. Außerdem fehlt das erste öffnende <tr>-Tag vor der Schleife.

    Ich konnte jetzt auf Anhieb keinen Fehler entdecken. Hast du tatsächlich den korrekten Datenbestand in deiner Tabelle?

    Außerdem würde ich nicht innerhlab der Schleife bei jedem Feld deiner Tabelle auf die Datenbank zugreifen, sondern einmalig alle Daten vor der While-Schleife laden. Das würde dir einen Performance-Gewinn bringen. :wink:

    Beitrag zuletzt geändert: 25.5.2010 13:44:58 von wagnerm
  5. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    @qap2 Diese $x und $y sind Koordinaten des Dorfes z.b: X: 500 Y: 500
    Das mit dem </tr> ist nicht unbedingt notwendig das macht keinen Unterschied gibt nur Fehler im HTML Validator ...^^


    @wagnerm Und ja die DB ist korrekt da befindet sich zurzeit nur 1 Dorf und das ist das angezeigte^^


    Nun ist der Fehler immer noch ungeklärt^^


    Beitrag zuletzt geändert: 25.5.2010 13:51:02 von volnerius
  6. OK, jetzt hab ich mal genauer hingeschaut. Versuch mal statt
    while($y != 502)

    das:
    while($y <= 502)


    Denn sobald x das erste mal in der letzten Zeile inkrementiert wird, erhöst du y um 1 und dann ist y gleich 502. Das Kriterium für den Schleifendurchlauf ist nicht mehr wahr und es wird nicht mehr in die Schleife eingetreten. :wink:

    Beitrag zuletzt geändert: 25.5.2010 13:57:50 von wagnerm
  7. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    Das Ergebnis kannst du hier betrachten: http://volnerius.lima-city.de/gesamtkarte.php^^

    Wie du siehst gibt es nur eine Zeile mehr aber die letzte bleibt immer noch fast leer -.-

    Hat wer eine andere Idee? ~.~

    Beitrag zuletzt geändert: 25.5.2010 14:04:28 von volnerius
  8. Ich denke ich weiß den Fehler:

    Du hast Zeile ganz unten das ist ich denk fehler. Wenn ich mich nicht irre.
    Die Untereste Block ist "überflüssig"
    du hast einfach 1 dazu gemacht das in folge neue Zeile...

    kuck mal im Script ob wirklich die zeile gibt...
  9. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    Sobald du deutsch schreiben würdest, würde ich auch verstehen was du meinst ô.o probier es nochmal, aber bitte dies mal so das man es verstehen kann ô.o....^^

    Beitrag zuletzt geändert: 25.5.2010 14:26:14 von volnerius
  10. t*****b

    <?php
    
    	include("connect.php");
    	
    	$x = 497;
    	$y = 489;
    	
    	for($MapY = $y-2; $MapY <= $y+2; $MapY++) {
    		for($MapX = $x-2; $MapX <= $x+2; $MapX++) {
    				$bild = mysql_query("SELECT dorfname FROM dorf_allgemein WHERE posX = '$MapX' and posY = '$MapY'");
    				$bild = mysql_fetch_object($bild);
    				if($bild->dorfname != "") {
    					$bild2 = "eigenesdorf.png";
     				} else {
    					$bild2 = "unbewohnt.png";
     				}
    				echo "<a href='gesamtkarte.php?x=".$x."&y=".$y."' ><img border=\"0\" title='X:".$x." Y:".$y."' src='".$bild2."'></a>";
    		}
    		echo "<br />";
    	}
    	
    ?>


    Wobei es nicht optimal ist, jedes Feld einzeln aus der DB abzufragen...
  11. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    Es gibt einige Probleme wie du siehst: http://volnerius.lima-city.de/gesamtkarte.php die Position X und Y ändern sich nicht und so mit wird auch nicht das eigene Dorf ausgegeben....

    Da muss wohl nochmal ran -.- Hat irgendwer eine Idee?...


    Wobei es nicht optimal ist, jedes Feld einzeln aus der DB abzufragen...

    Wie würdest du es dann machen?^^
  12. opensystem schrieb:
    Ich denke ich weiß den Fehler:

    Du hast Zeile ganz unten das ist ich denk fehler. Wenn ich mich nicht irre.
    Die Untereste Block ist "überflüssig"
    du hast einfach 1 dazu gemacht das in folge neue Zeile...

    kuck mal im Script ob wirklich die zeile gibt...


    volnerius schrieb:
    Sobald du deutsch schreiben würdest, würde ich auch verstehen was du meinst ô.o probier es nochmal, aber bitte dies mal so das man es verstehen kann ô.o....^^


    opensystem meinte wohl damit, dass du $y auch abfragen solltest:
    if ($y < 503)
        {
        $bild = mysql_query("SELECT dorfname FROM dorf_allgemein WHERE posX = '$x' and posY = '$y'");
        $bild = mysql_fetch_object($bild);
    
        if($bild->dorfname != "")
        {
            $bild2 = "eigenesdorf.png";
        }
        else
        {
            $bild2 = "unbewohnt.png";
        }
        echo "<td><a href='gesamtkarte.php?x=".$x."&y=".$y."' ><img border=\"0\" title='X:".$x." Y:".$y."' src='".$bild2."'></a></td>";
        }
    :wink:

    trueweb hat dir aber schon eine Lösung angeboten, die funktionieren sollte.

    Beitrag zuletzt geändert: 25.5.2010 14:36:57 von wagnerm
  13. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    *hmpf*
    Diese Variante geht leider auch nicht.... Wie immer kannst du deine Variante hier einsehen: http://volnerius.lima-city.de/gesamtkarte.php

    Hat irgendwer eine funktionierende Variante? -.-

    Beitrag zuletzt geändert: 25.5.2010 14:45:08 von volnerius
  14. Wie sieht dein Code jetzt eigentlich aus? So?
    <table border="1" align="center" cellspacing="0" cellpadding="0">
    <?php
    include('connect.php');// Verbindung aufbauen
    
      
    $x = 497;$y = 498;
    while($y <= 502)
    {
            $x++;
        if($x > 502)
        {
            $y++;
            $x = 498;
            echo "<tr>";
        }
        if ($y < 503)
        {
           $bild = mysql_query("SELECT dorfname FROM dorf_allgemein WHERE posX = '$x' and posY = '$y'");
           $bild = mysql_fetch_object($bild);
    
           if($bild->dorfname != "")
           {
              $bild2 = "eigenesdorf.png";
           }
           else
           {
              $bild2 = "unbewohnt.png";
           }
           echo "<td><a href='gesamtkarte.php?x=".$x."&y=".$y."' ><img border=\"0\" title='X:".$x." Y:".$y."' src='".$bild2."'></a></td>";
        }
    }
           ?>   </table>


    Funktioniert die Lösung von trueweb auch nicht?
  15. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    Die Variante von trueweb hat nichr funktioniert wie oben schon gesagt...^^

    Aber deine geht super :) Danke ich war schon verzweifelt :-o^^

    Beitrag zuletzt geändert: 25.5.2010 15:01:26 von volnerius
  16. t*****b

    volnerius schrieb:
    Die Variante von trueweb hat nichr funktioniert wie oben schon gesagt...^^


    Was geht denn an meiner Variante nicht? Bei mir hat sie (die DB-Faxen weggelasse) prima funktioniert.
  17. Autor dieses Themas

    volnerius

    volnerius hat kostenlosen Webspace.

    volnerius schrieb:
    Es gibt einige Probleme wie du siehst: http://volnerius.lima-city.de/gesamtkarte.php die Position X und Y ändern sich nicht und so mit wird auch nicht das eigene Dorf ausgegeben....


    Deshalb konnte ich die Variante nicht nehmen...
  18. volnerius schrieb:
    Aber deine geht super :) Danke ich war schon verzweifelt :-o^^


    Trotzdem möchte ich dich noch einmal darauf hinweisen, dass der Datenbankzugriff für jedes Feld deiner Tabelle nicht sehr effizient und performant ist. Überlege dir doch alle Daten auf einmal mit nur einem Datenbankzugriff in den Speicher zu laden und dann die Speicherstruktur mit der Schleife zu durchlaufen. Datenbankzugriffe sind nämlich sehr teuer was Performance angeht. Ist nur ein gut gemeinter Tipp! :wink:
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!