Stefan: Formular an falscher Position

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&uuml;gen</td>  
      <td>input type="radio" name= "Auswahl" value="Neu" /></td>  
      <td>&Auml;ndern</td>  
      <td><input type="radio" name= "Auswahl" value="Korrektur"/></td>  
      <td>L&ouml;schen</td>  
      <td><input type="radio" name= "Auswahl" value="Entfernen" /></td>  
   </tr>  
 </table>  
  
   <input type="submit" value="Ausf&uuml;hren" />  
  
 </form>  
  

  1. @@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&uuml;hren" />

    Warum verst&uuml;mmelst du deinen Text? Sollte man nicht tun, sondern ü verwenden.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Ist gelöst - danke.

      Es lag am CSS

      1. 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

        --
        Eifersucht ist so alt wie die Menschheit: Als Adam einmal spät heimkam, zählte Eva sofort seine Rippen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo Martin,

          danke für den Hinweis.

          Kannst du bitte eine korrekte Beispielzeile aus diesem Code posten?

          Viele Grüße
          Stefan

          1. @@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)
            
            1. 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

              1. 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

                --
                Wie kann es sein, dass ich von 100 Gramm Schokolade zwei Kilo zunehme?
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. @@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'

                  --
                  „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
                  1. Danke, jetzt habe ich es verstanden.

                    Gruß
                    Stefan