Problem bei der Ausgabe

L

librarian

Mitglied
Thread Starter
Dabei seit
21.08.2005
Beiträge
36
Reaktionspunkte
0
Hallo!
Bin ein PHP-Anfänger mit einem Problem, was bestimmt nicht so riesig ist, wenn der Grund dafür gefunden wurde…
Habe hier ein Skript, das nicht funktioniert, obwohl ich das gleiche schon mal geschrieben habe und das lief. (Genaugenommen habe ich das erste einfach kopiert und zu diesem modifiziert.)
Freue mich über jeden Lösungsversuch! :(
Hier ist das gute Stück:

Code:
<?php

if ($_POST[vorname] and $_POST[name] and $_POST[b_day] and $_POST[mat_nr] and $_POST[adresse] and $_POST[plz] and $_POST[wohnort] and $_POST[phon] and $_POST[email]) {

/*Bin ratlos,  irgendwie scheint PHP nicht als Sprache erkannt zu werden, ab „Folgende Daten ...“ wird alles Nachfolgende ausgegeben, bis auf die „<br>“s...  Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden oder nicht.*/

  echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '. $_POST[vorname],' '.$_POST[name],'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse],'<br>PLZ - '.$_POST[plz],'<br>Wohnort - '.$_POST[wohnort],'<br>Telefon - '.$_POST[phon],'<br>Email - '.$_POST[email]. ;
 }

else {
'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

if (!$vorname) {
echo '<br>Vorname';
}
if (!$name) {
echo '<br>Vorname';
}
if (!$adresse) {
echo '<br>Vorname';
}
if (!$plz) {
echo '<br>Vorname';
}
if (!$Wohnort) {
echo '<br>Vorname';
}
if (!$phon) {
echo '<br>Vorname';
}
if (!$email) {
echo '<br>Vorname';
}}

?>
 
Auf die schnelle

else {
'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

Hier fehlt doch der echo Befehl.
 
Hi,

liest sich viel besser, wenn Du hier im Forum angibst, dass es PHP Code ist:

PHP:
<?php

if ($_POST[vorname] and $_POST[name] and $_POST[b_day] and $_POST[mat_nr] and $_POST[adresse] and $_POST[plz] and $_POST[wohnort] and $_POST[phon] and $_POST[email]) {

/*Bin ratlos, irgendwie scheint PHP nicht als Sprache erkannt zu werden, ab „Folgende Daten ...“ wird alles Nachfolgende ausgegeben, bis auf die „<br>“s... Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden oder nicht. Deshalb wird auch alles
angezeigt, da es die ganzen Variablen bei Deiner Version ja nicht gibt. */

echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '. $_POST[vorname],' '.$_POST[name],'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse],'<br>PLZ - '.$_POST[plz],'<br>Wohnort - '.$_POST[wohnort],'<br>Telefon - '.$_POST[phon],'<br>Email - '.$_POST[email]. ;
}

else {
/* wie schon gesagt fehlt hier „echo “ */ 'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

/* Du hast nirgends die Variablen benannt:

z.B.:*/

$vorname = $_POST['vorname'];

/* seit einigen PHP-Versionen werden per POST übergebene Variablen nicht
einfach übernommen, sondern müssen so wie oben neu angelegt werden. */
if (!$vorname) {
echo '<br>Vorname';
}
if (!$name) {
echo '<br>Vorname';
}
if (!$adresse) {
echo '<br>Vorname';
}
if (!$plz) {
echo '<br>Vorname';
}
if (!$Wohnort) {
echo '<br>Vorname';
}
if (!$phon) {
echo '<br>Vorname';
}
if (!$email) {
echo '<br>Vorname';
}}

?>
 
Zuletzt bearbeitet:
der Teil hat auch Fehler:
echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '. $_POST[vorname],' '.$_POST[name],'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse],'<br>PLZ - '.$_POST[plz],'<br>Wohnort - '.$_POST[wohnort],'<br>Telefon - '.$_POST[phon],'<br>Email - '.$_POST.;

sollte so heissen:

echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '. $_POST[vorname].' '.$_POST[name].'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse].'<br>PLZ - '.$_POST[plz].'<br>Wohnort - '.$_POST[wohnort].'<br>Telefon - '.$_POST[phon].'<br>Email - '.$_POST[email];

also statt Kommas nach den Variablen sollten da Punkte stehen...
 
Noch immer Problem bei Ausgabe

Also, ich habe versucht die Variablen zu benennen, ich habe das fehlende "echo" eingesetzt und die Kommas gegen Punkte ausgetauscht.
- Aber das alles hat leider nicht den Fehler behoben...
Ich vermute, daß der Fehler kurz vor oder nach dem ersten Kommentar liegt, weil hier die falsche Ausgabe beginnt (sogar schon in der Mitte des Kommentars ab: "s... Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden...
Woran liegt denn das?)
 
Probiers mal so:

PHP:
<?php

if ($_POST["vorname"] && $_POST["name"] && $_POST["b_day"] && $_POST["mat_nr"] && $_POST["adresse"] && $_POST["plz"] && $_POST["wohnort"] && $_POST["phon"] && $_POST["email"]){

	echo "<br>Folgende Daten wurden abgespeichert: <br> Name - ".$_POST["vorname"]." ".$_POST["name"]."<br>Stra&szlig;e & Hausnummer - ".$_POST["adresse"]."<br>PLZ - ".$_POST["plz"]."<br>Wohnort - ".$_POST["wohnort"]."<br>Telefon - ".$_POST["phon"]."<br>Email - ".$_POST["email"];

}else{

	echo "Vervollst&auml;ndigen Sie bitte folgende Angabe/n:";

	if (!$_POST["vorname"]){
		echo "<br>Vorname";
	}
	if (!$_POST["name"]){
		echo "<br>Name";
	}
	if (!$_POST["adresse"]){
		echo "<br>Adresse";
	}
	if (!$_POST["plz"]){
		echo "<br>Postleitzahl";
	}
	if (!$_POST["wohnort"]){
		echo "<br>Wohnort";
	}
	if (!$_POST["phon"]){
		echo "<br>Telefon";
	}
	if (!$_POST["email"]){
		echo "<br>E-Mail";
	}
}

?>
 
Zuletzt bearbeitet:
Hab's probiert, das Problem besteht immer noch, wie zu Beginn beschrieben...

Das hier ist übrigens mal zum Vergleich das ursprüngliche Skript, das auch funktioniert, ein etwas anderer Zusammenhang, aber im Grunde fast dasselbe...
(Kein besonders origineller Text, aber auf den kommt's im Moment ja auch nicht an.)

Code:
<?php
 
 if ($_POST[vorname] and $_POST[nachname] and $_POST[email] and $_POST[feedback]) {
  echo '<br>Vielen Dank '.$_POST[vorname],' '.$_POST[nachname],'.<br>  Wir haben ihre Email-Adresse '.$_POST[email],' aufgenommen, Sie nehmen damit an unserem w&ouml;chentlichen Gewinnspiel teil.  <br> Gewinner werden per Email benachrichtigt.  Zu gewinnen ist jeweils ein Jahresabonnement unserer Printausgabe.' ;
  if ($feedback == "sehr gut") {
  echo '<br>Vielen Dank f&uuml;r die  sehr gute Bewertung!';
  } elseif ($feedback == "gut") {
  echo '<br>Vielen Dank f&uuml;r die gute Bewertung!';
  } elseif ($feedback == "schlecht") {
  echo '<br>Also nee!';
  } elseif ($feedback == "sehr schlecht") {
  echo '<br>Na, h&ouml;r&acute;n Sie mal!';
}} 

 else {
 echo 'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';
  
 if (!$vorname) {
 echo '<br>Vorname';
}
 if (!$nachname) {
 echo '<br>Nachname';
}
 if (!$email) {
 echo '<br>Email';
}
 if (!$feedback) {
 echo '<br>Feedback';
}}

?>
 
Und noch eine Frage: Wie bekommt man das Fenster, in dem der PHP-Code besser zu lesen ist?
 
librarian schrieb:
Und noch eine Frage: Wie bekommt man das Fenster, in dem der PHP-Code besser zu lesen ist?
mit dem button über dem texteingabefeld... das kleine dokument weit rechts wo klein "PHP" drin steht!
oder einfach mit dem Tag:

[ PHP ]hier kommt dann der code rein![/ PHP ]

(wenn dus anwendest musst du aber die leerzeichen in den eckigen klammern weglassen)
 
Zuletzt bearbeitet:
Screenshot vom Problem bei der Ausgabe

Da das Problem noch immer besteht und ich meine Hausarbeit in 13 Tagen in der FH abliefern muß, hier noch ein Screenshot von der fehlerhaften Ausgabe. Vielleicht erkennt jemand so um welchen Fehler es sich handelt...
Weiß nicht mehr, was ich noch probieren soll.
 

Anhänge

  • screenshot_php_ausgabe.JPG
    screenshot_php_ausgabe.JPG
    52,1 KB · Aufrufe: 65
So ist schon mal der PHP-Code syntaktisch OK, wenn ich's noch mal schnell "real" testen soll, gib den den HTML-source
PHP:
<?php

if ($_POST[vorname] && $_POST[name] && $_POST[b_day] && $_POST[mat_nr] && $_POST[adresse] && $_POST[plz] && $_POST[wohnort] && $_POST[phon] && $_POST[email]) {

/*Bin ratlos, irgendwie scheint PHP nicht als Sprache erkannt zu werden, ab „Folgende Daten ...“ wird alles Nachfolgende ausgegeben, bis auf die „<br>“s...Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden oder nicht.*/

echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '.$_POST[vorname].' '.$_POST[name].'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse].'<br>PLZ - '.$_POST[plz].'<br>Wohnort - '.$_POST[wohnort].'<br>Telefon - '.$_POST[phon].'<br>Email - '.$_POST[email];
}

else {
echo 'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

if (!$vorname) {
echo '<br>Vorname';
}
if (!$name) {
echo '<br>Vorname';
}
if (!$adresse) {
echo '<br>Vorname';
}
if (!$plz) {
echo '<br>Vorname';
}
if (!$Wohnort) {
echo '<br>Vorname';
}
if (!$phon) {
echo '<br>Vorname';
}
if (!$email) {
echo '<br>Vorname';
}}

?>
 
Mensch Kerl! :D
Dein Screenshot sagt alles: Du rufts PHP auf, ohne es vom Webserver parsen zu lassen. Soll heißen, als HTML-File. Dann wird der PHP-Code natürlich als Text dargestellt. Deine Datei muss im DocumentRoot (Verzeichnis in dem die Webdokumente liegen, normalerweise htdocs oder www) des Webservers liegen.

Du musst in der Adresszeile [noparse]http://localhost/pfad_zur_datei/datei.php[/noparse]eingeben.

zur Info:
PHP ist eine serverseitige Skriptsprache, das heisst du sendest eine Anfrage an das PHP-Skript, PHP arbeitet die Anfrage ab und gibt dem Webserver die Ergebnisse als HTML zurück.
 
Hans Wurst schrieb:
Mensch Kerl! :D
Dein Screenshot sagt alles: Du rufts PHP auf, ohne es vom Webserver parsen zu lassen. Soll heißen, als HTML-File. Dann wird der PHP-Code natürlich als Text dargestellt. Deine Datei muss im DocumentRoot (Verzeichnis in dem die Webdokumente liegen, normalerweise htdocs oder www) des Webservers liegen.

Du musst in der Adresszeile [noparse]http://localhost/pfad_zur_datei/datei.php[/noparse] eingeben.

zur Info:
PHP ist eine serverseitige Skriptsprache, das heisst du sendest eine Anfrage an das PHP-Skript, PHP arbeitet die Anfrage ab und gibt dem Webserver die Ergebnisse als HTML zurück.

UND windows! :)
 
HTML:
UND windows!
:D
 
Also hier das HTML-Formular und die PHP-Datei (alles im htdocs-Ordner, bzw. dem Server localhost) gespeichert, andere Skripte funktionieren bei mir auch, keine Ahnung warum dieses nicht.

HTML:
<html>
<head>
<title>Studentendaten</title>
       <LINK REL="stylesheet" HREF="dummie.css" TYPE="text/css">
       
</head>
<body>
      <H2 id="feedback" align="center">studentische Daten</H2>
      <form action="eingabe4.php" method="post">
          
      <p align="center">Bitte f&uuml;llen Sie alle folgenden Felder mit den entsprechenden Daten aus:</p>
      <TABLE align="center">
         <TR>
             <TD><P>Vorname</P></TD>
             <TD><input type="text" size="40" name="vorname"></TD>
         </TR>
         <TR>
             <TD><P>Name</P></TD>
             <TD><input type="text" size="40" name="nachname"></TD>
         </TR>
         <TR>
             <TD><P>Geburtsdatum</P></TD>
             <TD><input type="text" size="40" name="b_day"></TD>
         </TR>
         <TR>
             <TD><P>Matrikelnummer</P></TD>
             <TD><input type="text" size="40" name="mat_nr"></TD>
         </TR>
         <TR>
              <TD><P>Stra&szlig;e & Hausnummer</P></TD>
              <TD><input type="text" size="40" name="adresse"></TD>
         </TR>
         <TR>
              <TD><P>PLZ</P></TD>
              <TD><input type="text" size="10" name="plz"></TD>
         </TR>
         <TR>
              <TD><P>Wohnort</P></TD>
              <TD><input type="text" size="40" name="wohnort"></TD>
         </TR>
         <TR>
              <TD><P>Telefon</P></TD>
              <TD><input type="text" size="20" name="phon"></TD>
         </TR>
         <TR>
              <TD><P>Emailadresse</P></TD>
              <TD><input type="text" size="20" name="email"></TD>
         </TR>
         </TABLE>
      <p>   
         <input type="submit" name ="submit" value="Speichern">
      </p>
</form>

</body>
</html>

PHP:
<HTML>
<HEAD>
<TITLE>Fernsehzeitung</TITLE>
      <link rel="stylesheet" type="text/css" href="dummie.css">     
</HEAD>
<BODY><p align="center">
 <?php

if ($_POST[vorname] && $_POST[name] && $_POST[b_day] && $_POST[mat_nr] && $_POST[adresse] && $_POST[plz] && $_POST[wohnort] && $_POST[phon] && $_POST[email]) {

/*Bin ratlos, irgendwie scheint PHP nicht als Sprache erkannt zu werden, ab „Folgende Daten ...“ wird alles Nachfolgende ausgegeben, bis auf die „<br>“s...Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden oder nicht.  Genaugenommen beginnt die Ausgabe immer nach dem ersten „<br>“ in der Datei - auch wenn das im Kommentar steht...*/

echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '.$_POST[vorname].' '.$_POST[name].'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse].'<br>PLZ - '.$_POST[plz].'<br>Wohnort - '.$_POST[wohnort].'<br>Telefon - '.$_POST[phon].'<br>Email - '.$_POST[email];
}

else {
echo 'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

if (!$vorname) {
echo '<br>Vorname';
}
if (!$name) {
echo '<br>Vorname';
}
if (!$adresse) {
echo '<br>Vorname';
}
if (!$plz) {
echo '<br>Vorname';
}
if (!$Wohnort) {
echo '<br>Vorname';
}
if (!$phon) {
echo '<br>Vorname';
}
if (!$email) {
echo '<br>Vorname';
}}

?> 
</p>
</BODY>
</HTML>
 
So, hier noch etwas überarbeitet, funzt soweit. Trotzdem: Dein Screenshot zeigt eindeutig, dass das Skript nicht geparst wurde. Falls du mit irgendeinem Editor arbeitest der eine Vorschau-Funktion bietet, nutze diese nicht! Die meisten gehen mit Webserver-Prefixes nicht richtig um. Daher ist der bessere Weg den Browser zu öffnen und den http://pfad einzugeben.

html:
HTML:
<TABLE align="center" cellpadding="2" cellspacing="0">
    <TR>
      <TD><label>Vorname</label></TD><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>
<form action="eingabe4.php" method="post"><h1 align="center">Studentische Daten</h1>
  <p align="center">Bitte f&uuml;llen Sie alle folgenden Felder mit den entsprechenden Daten aus:</p>
  
      <TD><input type="text" size="40" name="vorname"></TD>
    </TR>
    <TR>
      <TD><label>Name</label></TD>
      <TD><input type="text" size="40" name="nachname"></TD>
    </TR>
    <TR>
      <TD><label>Geburtsdatum</label></TD>
      <TD><input type="text" size="40" name="b_day"></TD>
    </TR>
    <TR>
      <TD><label>Matrikelnummer</label></TD>
      <TD><input type="text" size="40" name="mat_nr"></TD>
    </TR>
    <TR>
      <TD><label>Stra&szlig;e & Hausnummer</label></TD>
      <TD><input type="text" size="40" name="adresse"></TD>
    </TR>
    <TR>
      <TD><label>PLZ</label></TD>
      <TD><input type="text" size="10" name="plz"></TD>
    </TR>
    <TR>
      <TD><label>Wohnort</label></TD>
      <TD><input type="text" size="40" name="wohnort"></TD>
    </TR>
    <TR>
      <TD><label>Telefon</label></TD>
      <TD><input type="text" size="20" name="phon"></TD>
    </TR>
    <TR>
      <TD><label>Emailadresse</label></TD>
      <TD><input type="text" size="20" name="email"></TD>
    </TR>
	 <TR>
      <TD><label></label></TD>
      <TD> <input type="submit" name ="submit" value="Speichern"></TD>
    </TR>
  </TABLE>
</form>
</body>
</html>

php:
PHP:
<?php

if ($_POST[vorname] && $_POST[name] && $_POST[b_day] && $_POST[mat_nr] && $_POST[adresse] && $_POST[plz] && $_POST[wohnort] && $_POST[phon] && $_POST[email]) {

/*Bin ratlos, irgendwie scheint PHP nicht als Sprache erkannt zu werden, ab „Folgende Daten ...“ wird alles Nachfolgende ausgegeben, bis auf die „<br>“s...Unabhängig auch davon, ob die Daten (vorname, usw.) vom HTML-Formular gepostet wurden oder nicht.*/

echo '<br>Folgende Daten wurden abgespeichert: <br> Name - '.$_POST[vorname].' '.$_POST[name].'<br>Stra&szlig;e & Hausnummer - '.$_POST[adresse].'<br>PLZ - '.$_POST[plz].'<br>Wohnort - '.$_POST[wohnort].'<br>Telefon - '.$_POST[phon].'<br>Email - '.$_POST[email];
}

else {
echo 'Vervollst&auml;ndigen Sie bitte folgende Angabe/n:';

if (!$vorname) {
echo '<br>Vorname';
}
if (!$name) {
echo '<br>Nachname';
}
if (!$adresse) {
echo '<br>Adresse';
}
if (!$plz) {
echo '<br>PLZ';
}
if (!$Wohnort) {
echo '<br>Wohnort';
}
if (!$phon) {
echo '<br>Telefon';
}
if (!$email) {
echo '<br>E-Mail';
}
}

?>
 
librarian schrieb:
Da das Problem noch immer besteht und ich meine Hausarbeit in 13 Tagen in der FH abliefern muß, hier noch ein Screenshot von der fehlerhaften Ausgabe. Vielleicht erkennt jemand so um welchen Fehler es sich handelt...
Weiß nicht mehr, was ich noch probieren soll.

Was studierst Du den?
 
Studiere Bibliotheks- und Informationsmanagement, wobei derzeit mein Schwerpunkt eher bei Info-management liegt. Einer meiner Schwerpunkte ist IT, da hab ich bisher HTML, ein bißchen JavaScript, XML und UML gemacht. Und jetzt eben PHP.
 
Dankeschön Hans Wurst!
Jetzt funktioniert's. Liegt das jetzt an den doppelten Anführungsstrichen? Kannst Du mir erklären, warum das nun klappt?
Benutze übrigens immer Firefox zum Testen, kann das sein, daß der da Probleme macht? Andere meiner Skripte hat er aber ohne Probleme ausgegeben.
 
Gern geschehen...
du hattest einige syntaktische Fehler in deinem Skript, wundert mich etwas dass dein Server keinen error_code ausgegeben hat. Für den genauen Vergleich solltest du ruhig das alte Skript durchforsten - besonders Punkt Kommata und Leerzeichen beachten! Prinzipiell kannst du Variablen- Stringverknüpfungen in zwei Varianten schreiben:

Code:
echo "Vorname: ".$_POST['vorname']."<br />";
oder
echo 'Vorname: '.$_POST["vorname"].'<br />';

Beachte dabei die Unterschiede bei den Hochkommata, die sind sehr wichtig da - wenn diese Syntax nicht eingehalten wird - Folgecode nicht oder falsch behandelt werden kann.

PS: Firefox is'n Guter!
 
Zuletzt bearbeitet:
Zurück
Oben Unten