Formular Pflichtfelder

andres1

Grünschnabel
hallo
ich habe ein auf: http://www.kartonarchitekturzeitschrift.ch/bestellen.php formular am laufen. ich möchte nun auch pflichtfelder einbauen. leider bin ich kein php crack. ich habe versucht folgenden code einzubauen:
PHP:
if($_POST["Versender"]=="")//Pflichtfeld"Namen" 
$error[]="BittegebenSieIhrenNamenein!"; 
if($_POST["Adresse"])//Pflichtfeld"Adresse" 
$error[]="BittegebenSieIhre Adresseein!"; 
if($_POST["Ort"]=="")//Pflichtfeld"PLZ/Ort" 
$error[]="BittegebenSieIhrenPLZ/Ortein!"; 
if($_POST["Telefon"])//Pflichtfeld"Telefon" 
$error[]="BittegebenSieIhre Telefon Nr.ein!";

fehlermeldung:Parse error: syntax error, unexpected T_STRING in /mnt/sites/kartonarchitekturzeitschrift.ch/web/bestellen.php on line 32

fragen:
- was bedeutet diese fehlermeldung konkret?
- kann das grundsätzlich so funktionieren?
- fehlt da noch was?

bester gruss

hier der ganze code:
PHP:
<?php
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'info@kartonarchitekturzeitschrift.ch';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"von Karton Website" <info@kartonarchitekturzeitschrift.ch>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Bestell Formular';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.kartonarchitekturzeitschrift.ch/danke.php';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)

{
 $strMailtext = "";
 
if($_POST["Versender"]=="")//Pflichtfeld"Namen" 
$error[]="BittegebenSieIhrenNamenein!"; 
if($_POST["Adresse"])//Pflichtfeld"Adresse" 
$error[]="BittegebenSieIhre Adresseein!"; 
if($_POST["Ort"]=="")//Pflichtfeld"PLZ/Ort" 
$error[]="BittegebenSieIhrenPLZ/Ortein!"; 
if($_POST["Telefon"])//Pflichtfeld"Telefon" 
$error[]="BittegebenSieIhre Telefon Nr.ein!";


 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}


?>

<? include("header.php"); ?>
<a name="top"></a>
<div id="container">
<a href="http://www.kartonarchitekturzeitschrift.ch"><img src="grafik/banner.gif" alt="karton banner"  border="0" /></a>
<div id="banner2">
<img src="grafik/banner2.gif" alt="banner2"  border="0" align="right" />
</div>
<div id="navi">
<? include("navi.php"); ?>

</div>

<div id="content">
<br/>
<p class="color0" ><strong>KARTON</strong><br/>
Architektur im Alltag der Zentralschweiz</p>
<hr class="ruler0" />

<h2>Karton Bestellen</h2>


<div id="box">
<!--         <h1>Bestell Formular</h1> -->
        
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
            <!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
            <fieldset>
				
				<label>JA, ich abonniere KARTON f&uuml;r ein Jahr f&uuml;r SFr. 25.00 (inkl. Versand)</label>
				<input class="btn" type="checkbox" name="KARTON abonnieren" value="ja" /><br/> <br/> <br/> 
                
                <label>Herr</label><input class="btn" type="radio" name="Geschlecht" value="Herr" /><br/>
                
                <label>Frau</label><input class="btn" type="radio" name="Geschlecht" value="Frau" /><br/><br/>
				
				<label>Ihr Name:</label>
                <input type="text" name="Versender" /><br/>
				
				<label>Adresse:</label>
                <input type="text" name="Adresse" /><br/>
                
                <label>PLZ/Ort:</label>
                <input type="text" name="Ort" /><br/>
                
                <label>Ihre Telefon Nr.:</label>
                <input type="text" name="Telefon" /><br/>
				
				<label>Ihre E-Mail:</label>
                <input type="text" name="E-Mail" /><br/><br/>

				<label>Mitteilung:</label>
                <textarea name="Mitteilung" rows="5" cols="20"></textarea><br/>

            <!-- Ende der Beispielangaben -->
   <br/>
            <label>&nbsp;</label><input class="btn" type="submit" value="Senden" />
            <label>&nbsp;</label><input class="btn" type="reset" value="Zur&uuml;cksetzen" />
</fieldset>
        </form>
        
 </div>

</div>
<div id="footer">
&nbsp;
</div>
</div>
<script type="text/javascript">
    initMenu();
</script>
<? include("footer.php"); ?>
 
- was bedeutet diese fehlermeldung konkret?
Einfach übersetzen und in der entsprechenden Zeile gucken ;) Zur Not nach dem Fehler suchen: http://www.php-fehlermeldungen.de/topicmenu1/index2.html
- kann das grundsätzlich so funktionieren?
Ja, so wird 's gemacht. Absenden, mit if Prüfen und eventuell zurück gehen und Pflichtfelder anzeigen.
- fehlt da noch was?
Wenn Pflichtfelder Fehlen sollte er nicht lossenden dürfen. Also noch eine if bevor abgesandt wurde.
 
Zeile 32 ist dein
PHP:
if($_POST["Adresse"])//Pflichtfeld"Adresse"

naja und wenn da nicht true oder false zufällig drinne steht (was ich nicht glaube), dann ist es eine "unerwarte Zeichenkette" (=unexpected T_STRING) denn er erwartet von dir ein true oder false (ich glaub 0 und 1 geht auch noch).
Versuch mal so:
PHP:
if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"
Denn die Funktion isset gibt true wenn die Variable deklariert ist und false wenn nicht, zurück.

MFG
Mark Paspirgilis

PS: Bewerte mal mich mal bitte positiv wenn es geholfen hat :D
 
Im groben:

HTML:
<form action="" method="post">
  <input name="pflicht">
</form>

In der selben Datei vorher:
PHP:
<?PHP
if ($_POST)
{
  // Feld "pflicht" prüfen ob es ausgefüllt wurde
  if (!$_POST["pflicht"][0])
  {
    // nicht ausgefüllt, Fehler eintragen
    $err[] = "Pflichtfeld nicht ausgefüllt!";
  }

  // Prüfen ob keine Fehler vorhanden sind
  if (!$err[0])
  {
    // keine da, mail senden aber bitte nichts ausgeben
    // entweder nach dem senden:
    header("Location: andere_seite.php");
    exit();
    // oder andere sachen ausgeben und anschließend:
    exit();
  }
  else
  {
    // fehlerausgabe
    foreach ($err as $s)
    {
      echo $s;
    }
  }
}


?>

Probier das mal. Auf die schnelle gemacht also keine Garantie.
 
Zuletzt bearbeitet:
Hallo
Ich weiss nicht mehr wo mir der kopf steht....
Ich habe nun versucht
PHP:
if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"  
$error[]="BittegebenSieIhre Adresseein!";
einzufügen. Fehler: Fatal error: Cannot use [] for reading in /mnt/sites/kartonarchitekturzeitschrift.ch/web/bestellen.php on line 33
ich vermute, dass die zeilen am falschen ort stehen oder fehlerhaft sind.
könntet ihr mir den Pflichtfelder code am richtigen ort einsetzen?
habt vielen dank.

PHP:
<?php


### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = 'info@kartonarchitekturzeitschrift.ch';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"von Karton Website" <info@kartonarchitekturzeitschrift.ch>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'Bestell Formular';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.kartonarchitekturzeitschrift.ch/danke.php';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)

{
 $strMailtext = "";
 
if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"  
$error[]="BittegebenSieIhre Adresseein!"; 

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>

<? include("header.php"); ?>
<a name="top"></a>
<div id="container">
<a href="http://www.kartonarchitekturzeitschrift.ch"><img src="grafik/banner.gif" alt="karton banner"  border="0" /></a>
<div id="banner2">
<img src="grafik/banner2.gif" alt="banner2"  border="0" align="right" />
</div>
<div id="navi">
<? include("navi.php"); ?>

</div>

<div id="content">
<br/>
<p class="color0" ><strong>KARTON</strong><br/>
Architektur im Alltag der Zentralschweiz</p>
<hr class="ruler0" />

<h2>Karton Bestellen</h2>


<div id="box">
<!--         <h1>Bestell Formular</h1> -->
        
        <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
            <!-- Hier die eigentlichen Formularfelder eintragen. Die folgenden sind Beispielangaben. -->
            <fieldset>
				
				<label>JA, ich abonniere KARTON f&uuml;r ein Jahr f&uuml;r SFr. 25.00 (inkl. Versand)</label>
				<input class="btn" type="checkbox" name="KARTON abonnieren" value="ja" /><br/> <br/> <br/> 
                
                <label>Herr</label><input class="btn" type="radio" name="Geschlecht" value="Herr" /><br/>
                
                <label>Frau</label><input class="btn" type="radio" name="Geschlecht" value="Frau" /><br/><br/>
				
				<label>Ihr Name:</label>
                <input type="text" name="Versender" /><br/>
				
				<label>Adresse:</label>
                <input type="text" name="Adresse" /><br/>
                
                <label>PLZ/Ort:</label>
                <input type="text" name="Ort" /><br/>
                
                <label>Ihre Telefon Nr.:</label>
                <input type="text" name="Telefon" /><br/>
				
				<label>Ihre E-Mail:</label>
                <input type="text" name="E-Mail" /><br/><br/>

				<label>Mitteilung:</label>
                <textarea name="Mitteilung" rows="5" cols="20"></textarea><br/>

            <!-- Ende der Beispielangaben -->
   <br/>
            <label>&nbsp;</label><input class="btn" type="submit" value="Senden" />
            <label>&nbsp;</label><input class="btn" type="reset" value="Zur&uuml;cksetzen" />
</fieldset>
        </form>
        
 </div>

</div>
<div id="footer">
&nbsp;
</div>
</div>
<script type="text/javascript">
    initMenu();
</script>
<? include("footer.php"); ?>
 
machs mal nich mit $error[] sonder deklarieren ganz oben $error = "";
und dann machst du $error .= "Fehlermitteilung...";
Wenn nötig machst du am ende der Zeichenkette noch \n oder so ran.
Also den Errortext als string speichern weil cih glaube du versuchst das Array falsch zumachen.
 
meinst du so?
PHP:
$error = "Adresse";

if($_POST)

{
 $strMailtext = "";
 
if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"  
$error. ="BittegebenSieIhre Adresseein!";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

so funktioniert das nicht.
bist du sicher dass nach $error. ein punkt folgt?
 
Hallo
PHP:
if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"  
$error[]="BittegebenSieIhre Adresseein!";
einzufügen. Fehler: Fatal error: Cannot use [] for reading in /mnt/sites/kartonarchitekturzeitschrift.ch/web/bestellen.php on line 33

Entschuldige aber der Fehler für diese Zeile ist ... Mumpitz.
"Cannot use [] for reading" wird nur angezeigt, wenn du versuchst ein Array mit $array[] zu lesen. Beispiel:
PHP:
$var = $array[];
Das geht selbstverständlich nicht.

Ein paar Leerzeichen in deinem Code und eine ordentliche Struktur würde das ganze Übersichtlicher machen. Macht jeder so. Beispiel:
PHP:
// Pflichtfeld "Adresse"
if (isset($_POST["Adresse"]))
{
  $error[] = "BittegebenSieIhre Adresseein!";
}

Dazu noch ein Link: http://php-coding-standard.de/mhtml/regel00.html
 
Zuletzt bearbeitet:
es tut mir very sorry aber ich verstehe einfach zu wenig von php.
ich denke das müsste trotzdem zu schaffen sein.
ich habe nun deine zeilen reinkopiert:
PHP:
if($_POST)

{
 $strMailtext = ""; 
 
Fehlerzeile 34: if(isset($_POST["Adresse"]))//Pflichtfeld"Adresse"
{
$error[]="Bitte geben Sie IhreAdresse ein!";
} 

while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}
aber immer noch fehler: Parse error: syntax error, unexpected T_STRING in /mnt/sites/kartonarchitekturzeitschrift.ch/web/bestellen.php on line 34

gibt es denn kein formular in dieser art welches ich nur noch anpassen müsste?
bester gruss
 
Zuletzt bearbeitet:
Zurück