Einige Probleme bei der PHP-Programmierung

Torgath

Mitglied
Als erstes will ich mal sagen, das ich ein absoluter Neuling im Programmieren bin. Obwohl ich zwar die viele Dinge verstehe, ist Programmieren ein Buch mit sieben Siegeln für mich!
Bitte fragt mich aber nicht, warum (als Neuling) in so einen schwierigen Teil (für mich) einsteige, da es einige wichtige Gründe dazu gibt. Jetzt brauch ich eure Hilfe!

Ich habe eine Datei: Test.html, mit untenstehenden Code.

Ein Problem ist mal, das bei den oberen Feldern, bei der Ausgabe immer noch die Variablen stehen, also so:

Ihr Name: $name
E-Mail: $email
etc...

Dann, hab ich das Problem, das (obwohl ichs genau so aus dem Buch abgeschrieben habe) bei der Ausgabe der Text:

FORMANSWER;
}
else
{
?>

auch ausgegeben wird!

Als nächstes, kommt immer, wenn ich auf "Absenden" oder "Neue Nachricht senden" drücke, kommt die Meldung, das die Seite nicht gefunden wurde!

<html>
<head>
<title>E-Mail-Formular</title>
</head>
<body link="yellow" vlink="lime" bgcolor="green" text="#ffffff" onload="window.setTimeout('uhr()',1000)">
<?php
if ($sent & $name) {
echo <<<FORMANSWER
Sie haben folgende Nachricht gesendet:<p />
<b>Ihr Name:</b> $name<br />
<b>E-Mail:</b> $email<br />
<b>Bewertung:</b> $rank<br />
<b>Ihre Nachricht:</b> <br />
<div style="background-color:#dddddd"> $message</div>
<b>Gekauft bei:</b> $purchase
<form method="post" action="$_SERVER['PHP_SELF']">
<input type="submit" value="Neue Nachricht senden?" />
</form>
FORMANSWER;
}
else
{
?>
<h3>Wie hat Ihnen das Buch bisher gefallen?</h3>
<form method="post" action="PHP_SELF">
<table>
<tr>
<td>Mein Name:</td>
<td><input type="text" name="name" size="50" /></td>
</tr>
<tr>
<td>Meine E-Mail:</td>
<td><input type="text" name="email" size="50" /></td>
</tr>
<tr>
<td>Bewertung:</td>
<td>
1<input type="radio" name="rank" value="1" />
2<input type="radio" name="rank" value="2" checked="checked"/>
3<input type="radio" name="rank" value="3" />
4<input type="radio" name="rank" value="4" />
5<input type="radio" name="rank" value="5" />
</td>
</tr>
<tr>
<td valign="top">Nachricht:</td>
<td>
<textarea cols="30" rows="6" name="message">
Ihre Nachricht...</textarea>
</td>
</tr>
<tr>
<td>Wo haben sie es gekauft?</td>
<td>
<select size="1" name="purchase">
<option value="Fachbuchhandel" />Fachbuchhandel
<option value="Kaufhaus" />Kaufhaus
<option value="Online" />Online
<option value="Verlag" />Verlag
<option value="Nur geliehen" />Nur geliehen
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Absenden" />
<input type="reset" />
<input type="hidden" name="sent" value="1" />
</td>
</tr>
</table>
</form>
<?php
}
/* end if */
?>
</body>
</html>

Danke schonmal für eure Hilfe!
 
Eine .html Datei ist nicht in der Lage, PHP Code zu interpretieren.
Damit Dein PHP Code interpretiert werden kann, solltest Du die Datei einfach in eine .php Datei umwandeln (also entweder umbennenen oder als .php Datei speichern).
Dann schaust Du einfach nochmal ob alles geht.
Wenn dann noch Probleme sind, kannst Du ja wieder nachfragen! ^^

redlama
 
Dann kommt nur das:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\programme\apache group\apache\htdocs\docs\send.php on line 16
 
Probier's mal so:
PHP:
<html>
  <head>
    <title>E-Mail-Formular</title>
  </head>
  <body link="yellow" vlink="lime" bgcolor="green" text="#ffffff" onload="window.setTimeout('uhr()',1000)">
    <?php
    if($sent && $name)
    {
      echo "Sie haben folgende Nachricht gesendet:<p />
      <b>Ihr Name:</b> $name<br />
      <b>E-Mail:</b> $email<br />
      <b>Bewertung:</b> $rank<br />
      <b>Ihre Nachricht:</b><br />
      <div style=\"background-color:#dddddd\"> $message</div>
      <b>Gekauft bei:</b> $purchase
      <form method=\"post\" action=\"$_SERVER['PHP_SELF']\">
      <input type=\"submit\" value=\"Neue Nachricht senden?\" />
      </form>
";
    }
    else
    {
      ?>
    <h3>Wie hat Ihnen das Buch bisher gefallen?</h3>
    <form method="post" action="PHP_SELF">
      <table>
        <tr>
          <td>
            Mein Name:
          </td>
          <td>
            <input type="text" name="name" size="50" />
          </td>
        </tr>
        <tr>
          <td>
            Meine E-Mail:
          </td>
          <td>
            <input type="text" name="email" size="50" />
          </td>
        </tr>
        <tr>
          <td>
            Bewertung:
          </td>
          <td>
            1<input type="radio" name="rank" value="1" />
            2<input type="radio" name="rank" value="2" checked="checked"/>
            3<input type="radio" name="rank" value="3" />
            4<input type="radio" name="rank" value="4" />
            5<input type="radio" name="rank" value="5" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            Nachricht:
          </td>
          <td>
            <textarea cols="30" rows="6" name="message">
            Ihre Nachricht...</textarea>
          </td>
        </tr>
        <tr>
          <td>
            Wo haben sie es gekauft?
          </td>
          <td>
            <select size="1" name="purchase">
              <option value="Fachbuchhandel">Fachbuchhandel</option>
              <option value="Kaufhaus">Kaufhaus</option>
              <option value="Online">Online</option>
              <option value="Verlag">Verlag </option>
              <option value="Nur geliehen">Nur geliehen</option>
            </select>
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" value="Absenden" />
            <input type="reset" />
            <input type="hidden" name="sent" value="1" />
          </td>
        </tr>
      </table>
    </form>
    <?php
    } // end if
    ?>
  </body>
</html>

redlama

EDIT: reptiler, damit dürfest Du recht haben, ich habe das mal verbessert.
 
Zuletzt bearbeitet:
Werden mehrere Argumente einer if-Bedingung nicht mittels && statt mit & verknuepft?
Z.B.: if ((x==10) && (y==20)) { ... }
Also ich mach das eigentlich immer so, und bin damit echt gluecklich.
 
reptiler hat gesagt.:
Werden mehrere Argumente einer if-Bedingung nicht mittels && statt mit & verknuepft?
Z.B.: if ((x==10) && (y==20)) { ... }
Also ich mach das eigentlich immer so, und bin damit echt gluecklich.

Ein & ist ein Binäres und genauso wie ein einfaches | ein binäres oder is(oder andersrum oO)
 
Ich glaube, ich habe den Fehler gefunden.
Versuch mal bitte das:
PHP:
<html>
  <head>
    <title>E-Mail-Formular</title>
  </head>
  <body link="yellow" vlink="lime" bgcolor="green" text="#ffffff" onload="window.setTimeout('uhr()',1000)">
    <?php
    if($sent && $name)
    {
      echo "Sie haben folgende Nachricht gesendet:<p />
      <b>Ihr Name:</b> $name<br />
      <b>E-Mail:</b> $email<br />
      <b>Bewertung:</b> $rank<br />
      <b>Ihre Nachricht:</b><br />
      <div style=\"background-color:#dddddd\"> $message</div>
      <b>Gekauft bei:</b> $purchase
      <form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">
      <input type=\"submit\" value=\"Neue Nachricht senden?\" />
      </form>
";
    }
    else
    {
      ?>
    <h3>Wie hat Ihnen das Buch bisher gefallen?</h3>
    <form method="post" action="PHP_SELF">
      <table>
        <tr>
          <td>
            Mein Name:
          </td>
          <td>
            <input type="text" name="name" size="50" />
          </td>
        </tr>
        <tr>
          <td>
            Meine E-Mail:
          </td>
          <td>
            <input type="text" name="email" size="50" />
          </td>
        </tr>
        <tr>
          <td>
            Bewertung:
          </td>
          <td>
            1<input type="radio" name="rank" value="1" />
            2<input type="radio" name="rank" value="2" checked="checked"/>
            3<input type="radio" name="rank" value="3" />
            4<input type="radio" name="rank" value="4" />
            5<input type="radio" name="rank" value="5" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            Nachricht:
          </td>
          <td>
            <textarea cols="30" rows="6" name="message">
            Ihre Nachricht...</textarea>
          </td>
        </tr>
        <tr>
          <td>
            Wo haben sie es gekauft?
          </td>
          <td>
            <select size="1" name="purchase">
              <option value="Fachbuchhandel">Fachbuchhandel</option>
              <option value="Kaufhaus">Kaufhaus</option>
              <option value="Online">Online</option>
              <option value="Verlag">Verlag </option>
              <option value="Nur geliehen">Nur geliehen</option>
            </select>
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" value="Absenden" />
            <input type="reset" />
            <input type="hidden" name="sent" value="1" />
          </td>
        </tr>
      </table>
    </form>
    <?php
    } // end if
    ?>
  </body>
</html>

redlama
 
Danke für eure Hilfe... es hat zwar nicht geklappt, war aber auch nur eine Übung... bin unterdessen ziemlich viel weiter...

Deshalb, vielen Dank, den Thread muss nicht mehr beachtet werden...
 
muss nimma beachtet werden - auch egal, aber der ein oder andere liest den thread ja jetzt, wo er eh oben ist doch noch ^^ also sollte man vielleicht einen anderen deiner Fehler hier mal noch bearbeiten

PHP:
 echo "Ihr Name: ".$name."<br>"
wäre sinnvoller wie ein:

PHP:
echo "<b>Ihr Name: $name
 
	  <b>E-Mail: $email
"
Weil wenn man schreibt
PHP:
echo"$variablenname"
ist das ergebnis logischerweise $variablenname - das was zwischen "..." steht ist für PHP ein STRING d.h. eine Zeichenkette. es ist (fast) egal was es ist wenns allerdings " sein soll muss man davor ein \ schreiben.

Ich weiß nicht, ob ein
PHP:
if($bla && $blubb)
überhaupt irgendwas bringt - wenn die frage ist, ob die beiden Variablen gesetzt sind, würde ich mit
PHP:
if(isset($blubb) && isset($bla))
arbeiten - das überprüft, ob die variablen gesetzt wurden.
 
Zurück