Unterste Reihe in Tabelle fehlt
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufbauen
bild
blocken
code
dorf
eigene dorf
fehler
feld
folge
http
idee
position
probier
problem
schleife
tabelle
url
verbindung
verstehen
zeile
-
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 :/
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
ich weiß nicht wie das mit $x und $y gemeint ist, das sind auch keine guten Variablennamen.
Aber eins ist sicher:
muss zuecho "<tr>";
umgewandelt werdenecho "</tr><tr>";
Gruß,
dex -
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.
Beitrag zuletzt geändert: 25.5.2010 13:44:58 von wagnerm -
@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 -
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.
Beitrag zuletzt geändert: 25.5.2010 13:57:50 von wagnerm -
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 -
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... -
<?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... -
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?^^
-
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>"; }
trueweb hat dir aber schon eine Lösung angeboten, die funktionieren sollte.
Beitrag zuletzt geändert: 25.5.2010 14:36:57 von wagnerm -
*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 -
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? -
Die Variante von trueweb hat nichr funktioniert wie oben schon gesagt...^^
Aber deine geht super :) Danke ich war schon verzweifelt ^^
Beitrag zuletzt geändert: 25.5.2010 15:01:26 von volnerius -
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. -
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... -
volnerius schrieb:
Aber deine geht super :) Danke ich war schon verzweifelt ^^
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage