udbr: Mit php erstellte Tabelle positionieren

Hallo,

ich fuchse mich gerade in php ein und bastle eine Homepage für meinen Verein.

Hier möchte ich ein Anmeldeformular in php erstellen.

Es funtioniert soweit auch ganz gut... nur ist die Tabelle immer in der linken
oberen Ecke. Ich bin mir auch nicht sicher wie ich diese Tabelle in ein Formular einbinden kann.

Hier mal ein Teil des Codes:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php

$eventz1 = "OM Hallentunier am" ;
$datumz1 = "12.04.2007" ;

$eventz2 = "Stadtmeisterschaft 7 am" ;
$datumz2 = "15.03.2007" ;

$eventz3 = "Hallentunier am" ;
$datumz3 = "26.04.2006" ;

$eventz4 = "Angrillen am" ;
$datumz4 = "01.05.2006" ;

$eventz5 = "Kohlgang am" ;
$datumz5 = "24.05.2006" ;

$eventz6 = "Beach am" ;
$datumz6 = "20.07.2006" ;

$teilnahme = "Ich werde teilnehmen: " ;
$teilnahme = "$teilnahme<input type=radio name=teilnahme value=ja  />";
$teilnahme ="$teilnahme ja / ";
$teilnahme ="$teilnahme<input type=radio name=teilnahme value=nein  />";
$teilnahme ="$teilnahme nein ";
$bemerkung ="<input type=text name=bemerkung value=Bemerkung size=20 maxlength=50 />";

echo '<table "border="1">';

echo "<tr>";
 echo "<td>". $eventz1 . "</td>";
 echo "<td>". $datumz1 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";

echo "<tr>";
 echo "<td>". $eventz2 . "</td>";
 echo "<td>". $datumz2 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";
 echo "<tr>";
 echo "<td>". $eventz3 . "</td>";
 echo "<td>". $datumz3 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";

echo "<tr>";
 echo "<td>". $eventz4 . "</td>";
 echo "<td>". $datumz4 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";

echo "<tr>";
 echo "<td>". $eventz5 . "</td>";
 echo "<td>". $datumz5 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";

echo "<tr>";
 echo "<td>". $eventz6 . "</td>";
 echo "<td>". $datumz6 . "</td>";
 echo "<td>". $teilnahme . "</td>";
 echo "<td>". $bemerkung . "</td>";
 echo "</tr>";

echo "</table>";

?>

<body bgcolor="#FFFAE6">

<h3>Hallo <?php echo $benutzer ?> ,melde Dich bitte hier kurz f&uuml;r die folgenden Events an !
         </h3>
<form action="eventform.php" method="POST">
<input type="hidden" name="subject" value="Event-Formular">

<p>
<input type=submit name="Send" value="Abschicken"> &nbsp; <input type=reset name="Clear" value="Loeschen">
</p>
</form>
</body>
</html>

  1. Hier mal ein Teil des Codes:

    dein php ist irrelevant - du kannst mit position oder margin/padding natürlich die rausrichung und abstände bei deiner tabelle ändern

    korrigere mich, wenn ich dich falsch verstanden habe

    1. Hier mal ein Teil des Codes:
      dein php ist irrelevant - du kannst mit position oder margin/padding natürlich die rausrichung und abstände bei deiner tabelle ändern

      korrigere mich, wenn ich dich falsch verstanden habe

      Was ich nur nicht wirklich verstehe... wie kann ich in dem php Code die Tabelle so positionieren das der Html - Teil dort drüber steht.

      Tabelle

      echo '<table  style="left:50py" "border="1">';

      echo "<tr>";
       echo "<td>". $eventz1 . "</td>";
       echo "<td>". $datumz1 . "</td>";
       echo "<td>". $teilnahme . "</td>";
       echo "<td>". $bemerkung . "</td>";
       echo "</tr>";
      ...

      Html

      <h3>Hallo <?php echo $benutzer ?> ,melde Dich bitte hier kurz f&uuml;r die folgenden Events an !
               </h3>

      So soll es nachher aussehen:

      Hallo Paul, melde Dich bitte ... an.

      OM Hallentunier am | 12.04.2008 | Ich nehme teil ja °/nein °

      Absenden

  2. Hallo udbr,

    Es funtioniert soweit auch ganz gut... nur ist die Tabelle immer in der linken
    oberen Ecke. Ich bin mir auch nicht sicher wie ich diese Tabelle in ein Formular einbinden kann.

    Zur besseren Übersicht habe ich Deinen Code ein wenig gekürzt:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <?php [...]
    echo '<table "border="1">';
    [...] ?>
    <body bgcolor="#FFFAE6">
    [...]
    <form action="eventform.php" method="POST">
    <input type="hidden" name="subject" value="Event-Formular">
    [...]

    Das Problem ist, daß Du mit "echo()" die Tabelle sofort ausgibst, und zwar noch bevor Du den body öffnest.
    Du kannst aber statt die Tabelle mit echo() auszugeben sie einfach in eine Variable speichern und diese dann im Formular mit echo() ausgeben. Hierbei könnte der Assignment Operator .= hilfreich sein, damit kannst Du dir ein wenig Schreibarbeit sparen.

    Grüße aus Stockholm,
    Götz

    --
    Losung für Freitag, 18. April 2008
    Meine Seele hängt an dir; deine rechte Hand hält mich. (Psalm 63,9)
    Der Aussätzige jammerte Jesus und er streckte die Hand aus, rührte ihn an und sprach zu ihm: Ich will's tun; sei rein! (Markus 1,41)
    (zur aktuellen Losung)
    1. Hallo Götz,

      Das Problem ist, daß Du mit "echo()" die Tabelle sofort ausgibst, und zwar noch bevor Du den body öffnest.

      Das verstehe ich (denke ich).

      Mit dem Assignment Operator habe ich nicht verstanden (schlechtes Englisch).

      Hierbei könnte der Assignment Operator .= hilfreich sein, damit kannst Du dir ein wenig Schreibarbeit sparen.

      Soll ich den die ges. Tabelle in eine Variable packen?
      Ich weiss noch nicht wie, aber selbst wenn, wie kann ich die dann links oder
      oben mit Abständen positionieren?

      1. Soll ich den die ges. Tabelle in eine Variable packen?
        Ich weiss noch nicht wie

        $variable_tabelle = '<table><tr>[...]</tr></table>';

        echo $variable_tabelle;

        wie kann ich die dann links oder oben mit Abständen positionieren?

        das ist ein css problem und hat nix mit php zu tun, das sagte ich bereits

        1. $variable_tabelle = '<table><tr>[...]</tr></table>';

          echo $variable_tabelle;

          Vielen Dank erst mal...

          So habe ich das jetzt versucht, geht aber nicht.
          Ich glaube ich habe eine Grundlage nicht verstanden.

          <head>
          <?php

          $variable_tabelle ='
           <table  "border="1">

          <tr>
            <td> $eventz1  </td>;
            <td> $datumz1  </td>;
            <td> $teilnahme  </td>;
            <td> $bemerkung  </td>;
            </tr>
           </table>';
           echo $variable_tabelle;
           ?>

          Gehört die Tabelle den jetzt noch in den php Teil oder nicht.
          Meine Var $eventz1 kennt er jetzt nicht mehr.

          1. Gehört die Tabelle den jetzt noch in den php Teil oder nicht.
            Meine Var $eventz1 kennt er jetzt nicht mehr.

            entferne alle strichpunkte zwischen ' und ' sowie alle zeilenumbrüche, die musst du anders machen wenn gewünscht

            und lies dich in die grundlagen von php ein ;)

            1. So müste es doch aussehen!!!!!!

              Geht aber nicht!

              Ich bekomme die Tabelle ausgegeben, wie gewünscht.Nur steht an Stelle des Variableninhalt, die Var selber in der Tabelle.

              Soll:
              OM Hallentuner | 12.04.2004 | ich nehme teil ja/nein

              Ist:
              $eventz1  |  $datumz1  | $teilnahme

              Was übersehe ich ?

              $variable_tabelle ='
               <table  "border="1">

              <tr>
                <td> $eventz1  </td>
                <td> $datumz1  </td>
                <td> $teilnahme  </td>
                <td> $bemerkung  </td>
                </tr>

              </table>';
               echo $variable_tabelle;

              1. Danke erst mal Götz und suit...

                ich bin im Moment etwas erschlagen, mir ist klar was ihr meint, aber kann das so noch nicht umsetzen, LEIDER. Währe gerne einen Schritt weiter gekommen.

                Ich werde mir Eure Antworten erst einmal in aller Ruhe durch sehen, ich denke dann verstehe ich auch mehr. Ansonsten poste ich hier noch mal.

              2. Ave udbr!

                Was übersehe ich ?

                Götz sein hinweis zu single quotes!

                $variable_tabelle ='
                <table  "border="1">

                <tr>
                  <td>'. $eventz1  .'</td>
                  <td>'. $datumz1  .'</td>
                  <td>'. $teilnahme  .'</td>
                  <td>'. $bemerkung  .'</td>
                  </tr>

                </table>';
                echo $variable_tabelle;

                Wenn du unbedingt an dieser Version festhalten möchtest.

                Oder besser

                $variable_tabelle ="
                <table border="1">

                <tr>
                  <td> $eventz1  </td>
                  <td> $datumz1  </td>
                  <td> $teilnahme  </td>
                  <td> $bemerkung  </td>
                  </tr>

                </table>";

                Grüße aus H im R an udbr,
                  Primus Enginus*

                --
                Und wenn´s dir nicht gefällt, http://dann.nimmet.net/mir-doch-egal!
                Der Valligator
                "Computer sagt Nein"
                1. Danke es funktioniert.

                  Aber...

                  Wenn ich jetzt das Formular senden möchte, werden die Var. nicht übergeben.

                  Ich habe versuchsweise mal eine Textfeld zusätztlich ohne php eingebaut. Das wird übertragen.

                  <form action="eventform.php" method="POST">
                  <input type="hidden" name="subject" value="Event-Formular">
                  <input type="hidden" name="access" value="irregeheim">

                  <?php echo $variable_tabelle ?>
                  <input type="text" name="test" />

                  <input type="submit" value="Abschicken">
                  </form>

                  Ich denke mal weil ich das Formular ja nur per echo anzeige und es nicht wirklich im Formular besteht.

                  Gibt es eine Möglichkeit dieses jetzt noch mit zu versenden?

                  1. Hallo udbr,

                    Ich habe versuchsweise mal eine Textfeld zusätztlich ohne php eingebaut. Das wird übertragen.

                    Ich denke mal weil ich das Formular ja nur per echo anzeige und es nicht wirklich im Formular besteht.

                    ich habe in einem Codestück in Deinem Ausgangsposting folgendes gefunden:
                    <input type=radio name=teilnahme value=ja />
                    Das ist natürlich kein gültiges XHTML. Attributwerte müssen immer in Anführungszeichen stehen, siehe auch die entsprechenden Abschnitte in SELFHTML oder in der XHTML Spezifikation.

                    Ich würde Dir also empfehlen den Code zuersteinmal auf Gültigkeit zu überprüfen, eventuelle Fehler zu beseitigen und dann nochmal zu testen.
                    Erst dann kann man wirklich gezielt nach Fehlern suchen.

                    Grüße aus Stockholm,
                    Götz

                    --
                    Losung für Samstag, 19. April 2008
                    Lehre uns bedenken, dass wir sterben müssen, auf dass wir klug werden. (Psalm 90,12)
                    Christus ist darum für alle gestorben, damit, die da leben, hinfort nicht sich selbst leben, sondern dem, der für sie gestorben und auferstanden ist. (2.Korinther 5,15)
                    (zur aktuellen Losung)
                  2. Hi,

                    Wenn ich jetzt das Formular senden möchte, werden die Var. nicht übergeben. [...]
                    Ich denke mal weil ich das Formular ja nur per echo anzeige und es nicht wirklich im Formular besteht.

                    Hae?
                    In einem Formular steht kein Formular.

                    Mach dir doch bitte erst mal klar, welche HTML-Ausgabe du erreichen willst - wie das Dokument aufgebaut sein soll (und zwar so, dass es ein fehlerfreies, gueltiges ist). Danach kannst du dir ueberlegen, wie das dynamisch mit PHP zu bewerkstelligen ist - aber derzeit scheint mir, dass dir der HTML-Part noch nicht klar ist.

                    MfG ChrisB

          2. Hallo udbr,

            $variable_tabelle ='
            <table  "border="1">
            [...]
              <td> $eventz1  </td>;
            [...]
            </table>';

            Meine Var $eventz1 kennt er jetzt nicht mehr.

            Doch, die Variable kennt er schon noch, nur kommt hier der Unterschied zwischen sogenannten "single quoted Strings" und "double quoted Strings" zum Tragen. Innerhalb von "single quoted Strings" werden Variablen nicht ersetzt, so daß man dort z.B. $single_quoted_string = 'a'.$variable.'b'; schreiben muß, um eine Variable einzufügen.

            Dazu kommt in Deinem Code hier noch, daß Du an den Zeilenenden immer noch Strichpunkte stehen hast, die Du jetzt aber nicht mehr brauchst.

            Grüße aus Stockholm,
            Götz

            --
            Losung für Freitag, 18. April 2008
            Meine Seele hängt an dir; deine rechte Hand hält mich. (Psalm 63,9)
            Der Aussätzige jammerte Jesus und er streckte die Hand aus, rührte ihn an und sprach zu ihm: Ich will's tun; sei rein! (Markus 1,41)
            (zur aktuellen Losung)
      2. Hallo udbr,

        Mit dem Assignment Operator habe ich nicht verstanden (schlechtes Englisch).

        von der PHP-Dokumentation gibt es auch eine deutsche Version. Aber an sich macht der Assignment Operator .= nicht viel. Schauen wir uns ein Beispiel an:

        $variable1 = 'a'; // Inhalt von $variable1: a  
        $variable1 = $variable1.'b'; // Inhalt von $variable1: ab  
          
        $variable2 = 'a'; // Inhalt von $variable2: a  
        $variable2 .= 'b'; // Inhalt von $variable2: ab  
        
        

        Du mußt also nicht jedesmal $variable.'...' schreiben, sondern nur .= um weitere Zeichen an eine Variable anzuhängen.

        Soll ich den die ges. Tabelle in eine Variable packen?

        Ja genau. Du führst am Anfang eine Variable $tabelle ein und hängst an diese Variable alles ran, was bisher mit echo() direkt ausgegeben wird.

        $tabelle = '<table border="1">';  
        $tabelle .= '<tr>';  
        $tabelle .= '<td>'.$eventz1.'</td>';  
        
        

        ... und so weiter.

        Im Formular gibst Du dann einfach mit echo($tabelle); an der Stelle, an der Du sie haben willst, die Tabelle aus.

        Ich weiss noch nicht wie, aber selbst wenn, wie kann ich die dann links oder
        oben mit Abständen positionieren?

        Für Abstände usw. ist CSS zuständig.

        Grüße aus Stockholm,
        Götz

        --
        Losung für Freitag, 18. April 2008
        Meine Seele hängt an dir; deine rechte Hand hält mich. (Psalm 63,9)
        Der Aussätzige jammerte Jesus und er streckte die Hand aus, rührte ihn an und sprach zu ihm: Ich will's tun; sei rein! (Markus 1,41)
        (zur aktuellen Losung)