Hallo zusammen:
Hab ein faszinierendes Problem in einer meiner Websites, das ich nicht in den
Griff bekomme. In einer Seite frage ich mit PHP Datensätze aus einer
SQL-Datenbank ab und stelle sie in einer Tabelle dar. Für jeden Datensatz
wird nun jedoch vor der Tabelle eine Leerzeile ausgegeben. Hab ich also 50
Datensätze anzuzeigen, so erscheinen auf der Website erstmal 50 Leerzeilen
und man muß ganz schön weit nach unten scrollen, um die Tabelle sehen zu
können.
Lässt man sich den Seitenquelltext im Browser anzeigen, so erscheinen diese
Leerzeilen übrigends nicht als HTML-Code. Laut Quelltext ist dort keine
Leerzeile zwischen Willkommenstext und Tabelle.
+++++++++++++++++++++++++++++++++++++++++++++
Hier mein Quellcode :
[....]
echo "<br>Hier können Sie sich Ihre SMS ansehen.<br>";
$db_server = "10.3.1.28";
$db_name = "sms_empfang";
$db_user = $f1_name;
$db_passwort = $f1_pass;
$db = @MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine
Verbindung zur Datenbank herstellen");
$db_select = @MYSQL_SELECT_DB($db_name);
$result = mysql_query("SELECT * FROM $f1_db");
$menge = mysql_num_rows($result);
echo "<b>$menge SMS gefunden<br></b>";
// Okay, bis hier ists gut. Der Text "xx SMS gefunden wird am Seitenanfang
dargestellt.
$f1_getid=1;
$highest= mysql_query("SELECT id FROM $f1_db");
while($row = mysql_fetch_row($highest)) {
if ($row[0]>$f1_getid){
$f1_getid=$row[0];
}
}
// Die Operation hier oben dürfte für die Darstellung irrelevant sein.
echo "<p align=center>
";
while($row = mysql_fetch_row($result)){
if ($row[4]==0){
echo "<tr><th width=40 align=center>$row[0]</th><th width=200
align=center>$row[1]</th><th width=120 align=center>$row[3]</th>";
echo "<th width=120 align=center>";
echo "ungelesen";
echo "</th>";
}
else {
echo "<tr><td width=40 align=center>$row[0]</td><td width=200
align=center>$row[1]</td><td width=120 align=center>$row[3]</td>";
echo "<td width=120 align=center>";
echo "gelesen";
echo "</td>";
}
echo "</tr></table>";
}
}
// Genau genommen gehört da noch eine "form action" zu. Dachte zuerst, die ist
schuld an dem Problem und hab sie einfach komplett auskommentiert. Diese
Zeilen sind jetzt hier nicht mehr drin. Hat auch nicht geholfen.
+++++++++++++++++++++++++++++++++++++++++++++++++++
Tja, also falls mir jemand einen Tip geben kann, in welche Richtung ich da
suchen muß, wär das prima. Wie gesagt, meine erste Vermutung war "Form
action". Aber die is nun komplett auskommentiert und das Problem besteht.
Irgendwie scheint mir das Problem in der SQL-Abfrage zu liegen. Da ich selbst
erst seit 3 Tagen mit PHP/SQL arbeite und in dem Bereich Extrem-Newbie bin,
bin ich dankbar für alle Tips. Vielleicht ists ja auch ein HTML-Problem?
Hope for help,
Bernd
--
One OS to rule them all, one OS to find them.
One OS to bring them all, and in the darkness bind them
In the land of Redmond, where the shadows lie.
Show replies by date
* On Wed, 14 May 2003 at 8:52 +0200, Bernd Tannenbaum wrote:
Hab ein faszinierendes Problem in einer meiner Websites, das ich nicht in den
Griff bekomme. In einer Seite frage ich mit PHP Datensätze aus einer
SQL-Datenbank ab und stelle sie in einer Tabelle dar. Für jeden Datensatz
wird nun jedoch vor der Tabelle eine Leerzeile ausgegeben. Hab ich also 50
Datensätze anzuzeigen, so erscheinen auf der Website erstmal 50 Leerzeilen
und man muß ganz schön weit nach unten scrollen, um die Tabelle sehen zu
können.
[...]
echo "<p align=center>
";
while($row = mysql_fetch_row($result)){
if ($row[4]==0){
echo "<tr><th width=40 align=center>$row[0]</th><th width=200
align=center>$row[1]</th><th width=120 align=center>$row[3]</th>";
echo "<th width=120 align=center>";
echo "ungelesen";
echo "</th>";
}
else {
echo "<tr><td width=40 align=center>$row[0]</td><td width=200
align=center>$row[1]</td><td width=120 align=center>$row[3]</td>";
echo "<td width=120 align=center>";
echo "gelesen";
echo "</td>";
}
echo "</tr></table>";
^^^^^^^^
}
}
Für meinen Geschmack machst Du da zuviele Tabellen zu. Eigentlich
sollte Dir der Browser sowas um die Ohren fetzen :-) Die Dinger sind
einfach zu tolerant, dann kommt sowas raus. Stopf doch auch mal das
HTML-Resultat in den Validator[1], der wird das übernehmen.
[1] http://validator.w3.org/
/apm
--
GPG welcome, request public key: mailto:adalbert+key@lopez.at
Am Mittwoch, 14. Mai 2003 07:52 schrieb Bernd Tannenbaum:
while($row = mysql_fetch_row($result)){
if ($row[4]==0){
echo "<tr><th width=40 align=center>$row[0]</th>
hier wird innerhalb der While Schleife der Table Header immer wieder
definiert. http://selfhtml.teamone.de/html/referenz/elemente.htm#th.
So wie ich Dich verstehe, stellt $row[4] ja nur den Status da, ob
gelesen oder nicht, das heisst, es kann ja mehrmals vorkommen und nicht
immer an erster stelle.
align=center>$row[1]</th><th width=120 align=center>$row[3]</th>";
echo "<th width=120 align=center>";
echo "ungelesen";
echo "</th>";
}
echo "</tr></table>";
}
ok, hier beendest Du JEDE Zeile (richtig), aber auch jedesmal die
Tabelle !!! Das muss zwei zeilen tiefer hin.
cu
stonki
--
www.proftpd.de: Deutsche ProFTPD Dokumentation
www.krename.net: Der Batch Renamer für KDE
www.kbarcode.net: Die Barcode Solution für KDE
www.stonki.de
Hallo nochmal
Yo, is durch das auskommentieren entstanden.
Nun weiß ich auch, was Adalbert mit den vielen Tabellen meinte.
Sry, ist nur bei meinem kläglichen copy/paste-Vorgang verrutscht.
Am Mittwoch, 14. Mai 2003 09:14 schrieb Stefan Onken:
Am Mittwoch, 14. Mai 2003 07:52 schrieb Bernd Tannenbaum:
while($row = mysql_fetch_row($result)){
if ($row[4]==0){
echo "<tr><th width=40 align=center>$row[0]</th>
hier wird innerhalb der While Schleife der Table Header immer wieder
definiert. http://selfhtml.teamone.de/html/referenz/elemente.htm#th.
So wie ich Dich verstehe, stellt $row[4] ja nur den Status da, ob
gelesen oder nicht, das heisst, es kann ja mehrmals vorkommen und nicht
immer an erster stelle.
Stimmt. Hier nutze ich <th>, um die ungelesenen SMS dick darzustellen. Sollte
wohl lieber einen <font> oder sowas definieren um sauber zu bleiben.
align=center>$row[1]</th><th width=120 align=center>$row[3]</th>";
echo "<th width=120 align=center>";
echo "ungelesen";
echo "</th>";
}
echo "</tr></table>";
}
ok, hier beendest Du JEDE Zeile (richtig), aber auch jedesmal die
Tabelle !!! Das muss zwei zeilen tiefer hin.
Ja, stimmt. War aber nur ein fehlerhafter Kopiervorgang.
Also Sry an Stefan und Adalbert (Mann habt ihr das schnell gesehen, wow, lol).
Fehler inzwischen gefunden, siehe ander Mail.
--
One OS to rule them all, one OS to find them.
One OS to bring them all, and in the darkness bind them
In the land of Redmond, where the shadows lie.
Hallo,
am Mittwoch, 14. Mai 2003 um 08:55 schrieb Bernd Tannenbaum
Stimmt. Hier nutze ich <th>, um die ungelesenen SMS dick darzustellen. Sollte
wohl lieber einen <font> oder sowas definieren um sauber zu bleiben.
ich wuerde Dir eine kleine CSS Datei empfehlen. Und da dann zwei
Platzhalter definieren. Dann brauchst Du das nicht in dem PHP Code
aendern - und man kann (merke ich an mir) viel besser rumspielen :)
cu
stonki
--
Deutsche ProFTP Docs: http://www.proftpd.de, EFNET: #proftpd
KDE3 Renamer: http://www.krename.net
KDE3 Barcode und Label Solution: http://www.kbarcode.net
7715
Last active (days ago)
List overview
Download
4 comments
4 participants
tags
participants (4)
-
Adalbert Michelic
-
Bernd Tannenbaum
-
Stefan Onken
-
Stefan Onken
|
|