php echo in html Tabelle schaffe ich nicht ...

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von mactrisha, 14.04.2004.

  1. mactrisha

    mactrisha Thread Starter MacUser Mitglied

    Beiträge:
    674
    Medien:
    2
    Zustimmungen:
    4
    MacUser seit:
    27.11.2003
    Hi all,

    in meinem PHP Script (siehe Auszug aus dem Script) wird über eine show form Funktion ein Formular erstellt und Adressdaten von zwei Leuten eingegeben, diese Daten werden dann über echo wieder ausgegeben. Formlos allerdings mit nur Schrift <p>. Wie kann ich die Daten, die über echo ausgegeben werden in Tabellenzellen laden lassen, damit ich Kontrolle über das Aussehen habe? Wünschenswert sind zwei Spalten. Geht das?

    PHP:
    if($_SERVER['REQUEST_METHOD']!='POST') {
    show_form();
    } else {
    if(empty(
    $_POST['first01']) ||
    empty(
    $_POST['first02']) ||
    empty(
    $_POST['last01']) ||
    empty(
    $_POST['last02']) ||
    empty(
    $_POST['streetandnumber01']) ||
    empty(
    $_POST['streetandnumber02']) ||
    empty(
    $_POST['plzandlocation01']) ||
    empty(
    $_POST['plzandlocation02']) ||
    empty(
    $_POST['telephonenumber01']) ||
    empty(
    $_POST['telephonenumber02']) ||
    empty(
    $_POST['birthdaydate01']) ||
    empty(
    $_POST['birthdaydate02']) ||
    empty(
    $_POST['status01']) ||
    empty(
    $_POST['status02'])) {
    echo 
    "<p><b><font color=CCCCCC>!!! Da sind noch einige Zeilen leer!";
    echo 
    " Bitte f&uuml;lle diese unbedingt aus. !!!</b></font></p>\n";
    show_form($_POST['first01'], $_POST['first02'], $_POST['last01'], $_POST['last02'], $_POST['streetandnumber01'], 
    $_POST['streetandnumber02'], $_POST['plzandlocation01'], $_POST['plzandlocation02'], $_POST['telephonenumber01'], 
    $_POST['telephonenumber02'], $_POST['birthdaydate01'], $_POST['birthdaydate02'], $_POST['status01'], $_POST['status02']);
    } else {
    echo 
    "<p><b>Ausdruck f&uuml;r:</p></b> <p><b>$_POST[first01] $_POST[last01],</p></b>\n <p>$_POST[streetandnumber01],</p>\n 
    <p>
    $_POST[plzandlocation01],</p>\n <p>Telefon $_POST[telephonenumber01],</p>\n <p>geboren am $_POST[birthdaydate01]</p>\n 
    <p>und</p>
    <p><b>
    $_POST[first02] $_POST[last02],</p></b>\n <p>$_POST[streetandnumber02],</p>\n <p>$_POST[plzandlocation02],</p>\n 
    <p>Telefon 
    $_POST[telephonenumber02],</p>\n <p>geboren am $_POST[birthdaydate02],</p>\n <p><b>Partner 1 ";
    echo 
    "ist ".
    join(" bis "$_POST['status01']);
    echo 
    ". <p></p>\n <p><b>Partner 2 ist ".
    join(" bis "$_POST['status02']);
    echo 
    ". </p></b> <p>Der Ausdruck ist nun fertig. Bitte jetzt drucken. </p>\n";
    }
    }
    ?>




    Salü,
    mactrisha.
     
  2. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Naja, Du ersetzt einfach die <p> Tags durch entsprechende Tabellen Tags (<tr> bzw.
    <td>). Damit erreichst Du eine Ausgabe in einer Tabelle.

    ... ich hoffe, ich habe Dich jetzt nicht völlig falsch verstanden. :rolleyes:
     
  3. mactrisha

    mactrisha Thread Starter MacUser Mitglied

    Beiträge:
    674
    Medien:
    2
    Zustimmungen:
    4
    MacUser seit:
    27.11.2003
    Nein, du hast mich schon richtig verstanden.

    Hi Delmar,

    ich habe die <p> Tags immer durch komplette <table> Tags ersetzt und dabei ist es immer zu expected ";' Fehlern gekommen, kann es daran gelegen haben, vermutlich weil doppelte Anführungszeichen in der Tabelle drin sind ??? (<table width="738" border="0" cellspacing="0" cellpadding='0" height="50"> ...), reicht es, wenn es <td> und <tr> tags sind? Das probier ich gleich mal. Danke vorerst, ich melde mich wieder. Ich habe es bisher schon geschafft, die Tabelle komplett nach Wunsch darzustellen, aber ich habe es bisher nie geschafft, jedes echo in eine eigene Tabellenzelle einlesen zu lassen. I´ll try it harder ...

    Salü,
    mactrisha.
     
  4. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Re: Nein, du hast mich schon richtig verstanden.

    &nbsp;

    Jupp, das ist wohl so. Ein String beginnt und endet in PHP - aber auch
    vielen anderen Sprachen - mit Anführungszeichen. Wenn Du innerhalb
    eines String diese benutzt, "denkt" der PHP Parser, dass der String zu
    Ende und sucht als nächstes nach dem Semikolon als Abschluss des
    Befehls. Aber Pustekuchen, denn es geht ja munter weiter mit dem
    String.

    Was also tun? Du musst dem PHP Parser deutlich machen, dass es
    sich bei den Anführungszeichen nicht um das Ende des Strings,
    sondern um gewünschte Zeichen innerhalb des Strings handelt. Diese
    bezeichnet man als Sonderzeichen. Dies machst Du, in dem Du vor
    jedes Anführungszeichen einen Backslash setzt.

    PHP:
    echo "<table border\"1\"> ...";

    Gleiches gilt auch bei anderen Sonderzeichen, die in PHP sonst eine
    eigene Bedeutung haben, wie z.B. das $-Zeichen für Variablen. Dies
    müsste ebenfalls als Sonderzeichen kenntlich gemacht werden.
     
  5. mactrisha

    mactrisha Thread Starter MacUser Mitglied

    Beiträge:
    674
    Medien:
    2
    Zustimmungen:
    4
    MacUser seit:
    27.11.2003
    Irgendwie peile ich das nicht ...

    Hi Delmar,

    also irgendwie peile ich das nicht. Solange zwischen den <p> Tags:

    PHP:
    echo "<p><b>$_POST[first01]</p></b>\n";
    steht, wird auch der im Formular:

    PHP:
    <input type="text" name="first01" value="<?echo $first01?>">
    eingegebene Text zurückgegeben, wenn ich jetzt in die mit Backslashes versehene Tabelle das $_POST['first01'] und alle anderen $_POST eingebe ...:

    PHP:
    echo "<table width=\"738\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"240\">
                    <tr height=\"50\">
                        <td width=\"148\" height=\"50\"></td>
                        <td width=\"147\" height=\"50\">Partner 1:</td>
                        <td width=\"148\" height=\"50\"></td>
                        <td width=\"147\" height=\"50\">Partner 2:</td>
                        <td width=\"148\" height=\"50\"></td>
                    </tr>
                    <tr>
                        <td width=\"148\"></td>
                        <td valign=\"top\" width=\"147\">
    $_POST['first01'],
                            <p>
    $_POST['last01'],</p>
                            <p>
    $_POST['streetandnumber01'],</p>
                            <p>
    $_POST['plzandlocation01'],</p>
                            <p>
    $_POST['telephonenumber01'],</p>
                            <p>
    $_POST['birthdaydate01']</p>
                        </td>
                        <td width=\"148\"></td>
                        <td valign=\"top\" width=\"147\">
    $_POST['first02'],
                            <p>
    $_POST['last02'],</p>
                            <p>
    $_POST['streetandnumber02'],</p>
                            <p>
    $_POST['plzandlocation02'],</p>
                            <p>
    $_POST['telephonenumber02'],</p>
                            <p>
    $_POST['birthdaydate02']</p>
                        </td>
                        <td width=\"148\"></td>
                    </tr>
                </table>"
    ;
    ... dann bekomme ich diese Meldung:

    Und Line 224 ist genau diese:

    PHP:
    <td valign=\"top\" width=\"147\">$_POST['first01'],
    Was mache ich denn da falsch? Entschuldige bitte.

    Salü,
    mactrisha.
     
  6. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    :D

    PHP kommt mit den einfachen Anführungszeichen, die Du innerhalb der
    Variablen verwendest durcheinander. Entweder, due lässt sie weg
    und schreibst stattdessen

    PHP:
    $_POST[first01]
    , oder Du bindest sie mit dem Verkettungsoperator "." in den String
    ein, dann kannst Du die Anführungszeichen drin lassen. Das würde
    dann so aussehen:

    PHP:
    echo "<td valign=\"top\" width=\"147\">" $_POST['first01'] . "</td>";
     
  7. mactrisha

    mactrisha Thread Starter MacUser Mitglied

    Beiträge:
    674
    Medien:
    2
    Zustimmungen:
    4
    MacUser seit:
    27.11.2003
    Hunderttausendmillionengigatrilliardenmal Danke.

    Hi Delmar,

    jetzt habe ich es, Danke:

    PHP:
    echo "<table width=\"738\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"240\">
                    <tr height=\"50\">
                        <td width=\"148\" height=\"50\"></td>
                        <td width=\"147\" height=\"50\">Partner 1:</td>
                        <td width=\"148\" height=\"50\"></td>
                        <td width=\"147\" height=\"50\">Partner 2:</td>
                        <td width=\"148\" height=\"50\"></td>
                    </tr>
                    <tr>
                        <td width=\"148\"></td>
                        <td valign=\"top\" width=\"147\"><p>
    $_POST[first01]</p>
                            <p>
    $_POST[last01]</p>
                            <p>
    $_POST[streetandnumber01]</p>
                            <p>
    $_POST[plzandlocation01]</p>
                            <p>
    $_POST[telephonenumber01]</p>
                            <p>
    $_POST[birthdaydate01]</p>
                        </td>
                        <td width=\"148\"></td>
                        <td valign=\"top\" width=\"147\"><p>
    $_POST[first02]</p>
                            <p>
    $_POST[last02]</p>
                            <p>
    $_POST[streetandnumber02]</p>
                            <p>
    $_POST[plzandlocation02]</p>
                            <p>
    $_POST[telephonenumber02]</p>
                            <p>
    $_POST[birthdaydate02]</p>
                        </td>
                        <td width=\"148\"></td>
                    </tr>
                </table>"
    ;
    Salü,
    mactrisha.
     
  8. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Dafür nicht! ;)
     
  9. mactrisha

    mactrisha Thread Starter MacUser Mitglied

    Beiträge:
    674
    Medien:
    2
    Zustimmungen:
    4
    MacUser seit:
    27.11.2003
    Vielleicht dafür?

    Hi Delmar,

    jetzt dachte ich, dass ich es kann, aber jetzt muss noch ein

    PHP:
    join(" bis "$_POST['fitstatus02']);
    in eine Tabelle, doch hier kann man die doppelten und einfachen Anführungszeichen nicht weglassen oder?

    Salü,
    mactrisha.
     
  10. Delmar

    Delmar MacUser Mitglied

    Beiträge:
    803
    Zustimmungen:
    1
    MacUser seit:
    28.09.2002
    Die einfachen Anführungszeichen in der Variable kannst Du weglassen. Die doppelten um
    das bis nicht! Hierbei handelt es sich nämlich um einen String (Zeichenkette).
    Diese müssen von doppelten Anführungszeichen eingeschlossen sein. Alternativ
    könntest Du aber auch schreiben:

    PHP:
    $glue " bis ";
    join($glue$_POST['fitstatus02'])
    Hier gibt es viele Möglichkeiten - welche man im Endeffekt benutzt ist wie so oft Ge-
    schmackssache. ;)

    Du kannst z.B. das $glue = " bis "; auch wie folgt schreiben $glue = ' bis '; - aber nicht
    $glue = bis;! Weiterhin kann man $_POST[fitstatus02] oder $_POST["fitstatus02"] oder
    $_POST['fitstatus02'] benutzen. Alles ziemlich verwirrend, aber mit der Zeit hat man
    heraus, was bzgl. Anführungszeichen geht und was nicht - dann entwickelt man auch
    nach und nach seinen eigenen Stil!
     
Die Seite wird geladen...

Diese Seite empfehlen