Formular an falscher Position
Stefan
- html
0 Gunnar Bittersmann
0 Stefan1 Der Martin
0 Stefan
Hallo,
das Formular erscheint links neben der durch PHP erzeugten Tabelle (ausgelesen aus Mysql-DB) Es soll aber darüber (alternativ auch darunter) erscheinen.
Ich probiere und suche schon lange herum - woran liegt es ? Wer kann mir helfen?
Danke und viele Grüße
Stefan
<?php
include("dbconnect.php");
$abfrage = "SELECT ID, Menge, Bezeichnung, Stifter, Jahr FROM Tombola ORDER BY Stifter";
$ergebnis = mysql_query($abfrage);
echo "<table border=0 rules=none align=left>";
/*echo "<th width=20px bgcolor=red align=left>ID</th>";*/
echo "<th width=30px bgcolor=red align=left>Menge</th>";
echo "<th width=250px bgcolor=red align=left>Bezeichnung</th>";
echo "<th width=250px bgcolor=red align=left>Stifter</th>";
echo "<th width=30px bgcolor=red align=left>Jahr</th>";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr>";
/* echo "<td width=20px align=left>",$row->ID,"</td>"; */
echo "<td width=30px>",$row->Menge,"</td>";
echo "<td width=250px>",$row->Bezeichnung,"</td>";
echo "<td width=200px>",$row->Stifter,"</td>";
echo "<td width=30px>",$row->Jahr,"</td>";
}
echo "</table>";
mysql_close();
?>
<form method="post" action="webseite/aktion.php">
<table class="dsR9" border="0" cellspacing="2" cellpadding="0">
<tr>
<td>Hinzufügen</td>
<td>input type="radio" name= "Auswahl" value="Neu" /></td>
<td>Ändern</td>
<td><input type="radio" name= "Auswahl" value="Korrektur"/></td>
<td>Löschen</td>
<td><input type="radio" name= "Auswahl" value="Entfernen" /></td>
</tr>
</table>
<input type="submit" value="Ausführen" />
</form>
@@Stefan:
nuqneH
das Formular erscheint links neben der durch PHP erzeugten Tabelle (ausgelesen aus Mysql-DB) Es soll aber darüber (alternativ auch darunter) erscheinen.
Ich probiere und suche schon lange herum - woran liegt es ?
Vermutlich an dem Teil, den du uns vorenthältst – dem Stylesheet.
Vorenthalten kannst du uns allerdings serverseiteigen Code (PHP). Der interessiert bei einem clientseitigen Problem überhaupt nicht. Da ist nur das HTML interessant, was beim Browser ankommt.
echo "<table border=0 rules=none align=left>";
/*echo "<th width=20px bgcolor=red align=left>ID</th>";*/
ALLE Darstellungsangaben solltest du mit CSS tätigen. Also KEINE mit HTML, d.h. keine Attribute wie @border, @align, @width und @bgcolor verwenden.
Im Übrigen ist der Wert der @width-Attribute falsch, der sollte eine Zahl (ohne Einheit) sein.
<input type="submit" value="Ausführen" />
Warum verstümmelst du deinen Text? Sollte man nicht tun, sondern ü verwenden.
Qapla'
Ist gelöst - danke.
Es lag am CSS
Hallo,
Ist gelöst - danke.
Es lag am CSS
ja klar, woran sonst? - Abgesehen davon, dass dein PHP-Script auch ungültiges HTML erzeugt:
echo "<table border=0 rules=none align=left>";
/*echo "<th width=20px bgcolor=red align=left>ID</th>";*/
echo "<th width=30px bgcolor=red align=left>Menge</th>";
echo "<th width=250px bgcolor=red align=left>Bezeichnung</th>";
echo "<th width=250px bgcolor=red align=left>Stifter</th>";
echo "<th width=30px bgcolor=red align=left>Jahr</th>";
Ich will mich hier nicht damit aufhalten, dass die Attributwerte eigentlich in Anführungszeichen stehen sollten; hier bestehen die Attributwerte ausnahmsweise nur aus Buchstaben und Ziffern, so dass diese Nachlässigkeit erlaubt ist. Nicht erlaubt ist aber th als Kindelement von table ohne ein tr dazwischen.
Ciao,
Martin
Hallo Martin,
danke für den Hinweis.
Kannst du bitte eine korrekte Beispielzeile aus diesem Code posten?
Viele Grüße
Stefan
@@Stefan:
nuqneH
Kannst du bitte eine korrekte Beispielzeile aus diesem Code posten?
Was ist so schwer daran,
Nicht erlaubt ist aber th als Kindelement von table ohne ein tr dazwischen.
umzusetzen, also eine richtitige Tabellenstruktur table/*/tr/(th|td) zu erzeugen?
Also echo '[code lang=html]<tr>
';[/code] einzuschieben?
Das End-Tag </tr>
ist zwar nicht Pflicht, aber dennoch guter Stil.
Außerdem ist die Unterteilung in thead (Tabllenkopf) und tbody sinnvoll.
Und mit PHP nur die Zeilen generieren, die nicht statischen Inhalt haben. Dabei bietet sich auch die alternative Syntax für Kontrollstrukturen an:
<table>
<thead>
<tr>
<th>ID</th>
<th>Menge</th>
<th>Bezeichnung</th>
<th>Stifter</th>
<th>Jahr</th>
</tr>
</thead>
<tbody>
<?php [code lang=php]while($row = mysql_fetch_object($ergebnis)):
~~~ ?>
<tr>
<td><?php `echo $row->ID;`{:.language-php} ?></td>
<td><?php `echo $row->Menge;`{:.language-php} ?></td>
<td><?php `echo $row->Bezeichnung;`{:.language-php} ?></td>
<td><?php `echo $row->Stifter;`{:.language-php} ?></td>
<td><?php `echo $row->Jahr;`{:.language-php} ?></td>
</tr>
<?php `endwhile;`{:.language-php} ?>
</tbody>
</table>[/code]
Qapla'
--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
Hallo Gunnar,
da habe ich mich wohl etwas unglücklich ausgedrückt. Ich bezog meine Anfarge auf korrekten code auf diese Aussage:
"Ich will mich hier nicht damit aufhalten, dass die Attributwerte eigentlich in Anführungszeichen stehen sollten; hier bestehen die Attributwerte ausnahmsweise nur aus Buchstaben und Ziffern, so dass diese Nachlässigkeit erlaubt ist."
Das habe ich nicht so ganz verstanden (bin Anfänger). Das mit der Tabelle hatte ich verstanden und auch schon vor deinem Posting korrigiert - trotzdem vielen Dank.
Doch da mit den Attributwerten interessiert mich schon sehr. Vielleicht kann mir jemand das anhand des Start-Quellcodes einmal genau aufzeigen? Vielen Dank.
Freundliche Grüße
Stefan
Hallo Stefan,
"Ich will mich hier nicht damit aufhalten, dass die Attributwerte eigentlich in Anführungszeichen stehen sollten; hier bestehen die Attributwerte ausnahmsweise nur aus Buchstaben und Ziffern, so dass diese Nachlässigkeit erlaubt ist."
Das habe ich nicht so ganz verstanden (bin Anfänger).
war das so unklar?
Es ist in der HTML-Spezifikation festgelegt, dass Attributwerte in Anführungszeichen stehen _sollten_; wenn der Attributwert nur aus Buchstaben und/oder Ziffern besteht, dürfen die Anführungszeichen aber auch weggelassen werden. Empfohlen sind sie "der Ordnung halber" trotzdem.
In XHTML gibt es diese Großzügigkeit übrigens nicht, hier _müssen_ Attributwerte grundsätzlich in Anführungszeichen stehen.
Doch da mit den Attributwerten interessiert mich schon sehr. Vielleicht kann mir jemand das anhand des Start-Quellcodes einmal genau aufzeigen? Vielen Dank.
Dein PHP-Code gibt beispielsweise folgendes HTML aus:
<table border=0 rules=none align=left>
Was sehen wir? Alle Attributwerte ohne Anführungszeichen. Okay, ist in traditionellem HTML erlaubt, aber nicht schön. Eigentlich möchten wir es so sehen:
<table border="0" rules="none" align="left">
Die einzige Crux ist nun die korrekte Notation von Anführungszeichen innerhalb des PHP-Strings, denn dort würden sie ja den String beenden. Daher müssen sie entsprechend maskiert werden, indem ihnen ein Backslash vorangestellt wird:
echo "<table border=\"0\" rules=\"none\" align=\"left\">";
Man kann sich auch davonstehlen, indem man im HTML einfache Anführungszeichen notiert, in PHP doppelte. Oder umgekehrt, wobei das in PHP ein Bedeutungsunterschied ist!
So long,
Martin
@@Der Martin:
nuqneH
Es ist in der HTML-Spezifikation festgelegt, dass Attributwerte in Anführungszeichen stehen _sollten_; wenn der Attributwert nur aus Buchstaben und/oder Ziffern besteht, dürfen die Anführungszeichen aber auch weggelassen werden. Empfohlen sind sie "der Ordnung halber" trotzdem.
Zum Nachlesen: [HTML401 §3.2.2]
Man kann sich auch davonstehlen, indem man im HTML einfache Anführungszeichen notiert, in PHP doppelte. Oder umgekehrt, wobei das in PHP ein Bedeutungsunterschied ist!
Man kommt gänzlich ohne Anführungszeichen aus.
Qapla'
Danke, jetzt habe ich es verstanden.
Gruß
Stefan