php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.10.2004, 08:48  
Gast
 
Beiträge: n/a
Standard Formmailer + check

Hi, ich will auf meiner seite dieses formular haben und es soll gemailt werden. allerdings soll man es erst dann mailen können wenn in beide felder etwas eingetragen wurde. zusätzlich soll wenn nur eines der felder nicht benutzt wurde dem user erspart bleiben das andere feld auch nocheinmal ausfüllen zu müssen.
ich dachte ich kann da mit value="<? echo $name; ?>" arbeiten aber das klappt nicht wirklich. hier mal mein code von der datei kontakt.php:

Code:
<html>
<head>
<title>
main
</title>


<style>
body {background-attachment:fixed}
</style>


</head>
<body background="main-hintergrund-gross.jpg" link="silver" alink="silver" vlink="silver">




<font color="white" size=2,5>[b]
<font face="Verdana, Arial">
<center>
Kontakt
</font>







<table width=400>
<tr>
<td><font color="white" size=2,5>
<font face="Verdana, Arial">
xxxxxx:



xxxxxx:




Fax:




Adresse:




E-Mail:

</td>
<td><font color="white" size=2,5>[b]
<font face="Verdana, Arial">

+43 xxx xxxxxxxx



+43 xxx xxxxxxxx




+43 xxx xxxxxxxx




xxxxplatz 10, 10xx Wien




xxx@xxx.at

</td>
</tr>

</table>



<table width=400> 
<tr>
<td>




<form action="kontakt.php" method="get">
[b]<font color="white" size=2,5>
<font face="Verdana, Arial">Mailen Sie uns auch direkt:
<textarea name="mail" cols="40" rows="10">
<?php echo $mail; ?>
</textarea>


Ihre E-Mailadresse:

<input type="text" name="absender" size="30" maxlength="50" value="<?php echo $absender; ?>">


<input type="submit" value="Mail abschicken">

<input type="hidden" name="topic" value="xxx">
</form>

</td>
</tr>
</table>


<?php

$sender = "xxx";
$empfaenger = "xxx";


if($sender == "")
{
echo "text";
}
else if($mail == "")
{
echo "sender";
}
else
{
echo "<font color=#ff0000>Gesendet</font>";
mail($empfaenger, $betreff, $mail, "From: $sender <$absender>");
}

?>


</body>
</html>
ach ja..hehe...das problem: weder wird gemailt noch sonst etwas gemacht wenn man etwas einträgt und "absendet" dann wird das form zurückgesetzt. ausserdem steht von beginn an die zeile vom value in den feldern....ich weisz schon dasz dies auch normal ist, aber sollte ich da nicht <?php...?> etwas machen können?

Danke im Voraus für alle Antworten
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.10.2004, 08:57  
Gast
 
Beiträge: n/a
Standard

Zuerst einmal kannst Du mit value="$variable"> die Felder vorbelegen.
Solange nichts eingetragen war, bleiben sie leer, bei Fehlern bleiben die Werte erhalten.

Dein anderes Problem löse ich so: Ins Formular kommt:

Code:
<input type=hidden name=required value="Feldname1,Feldname2">
Feldname1,... sind die Namen der Felder (NICHT VARIABLEN!), die Du als Pflichtfelder brauchst.

Nach dem Post kommt dann sowas hier:

Code:
if (isset($submit) && ($submit="SENDEN"))
{
 unset($submit);
 $mydata = eplode(',', $required);
 $fehler = 0;
 for ($i=0;$i<count($mydata);$i++)
 {
  if ($$mydata[$i] == '')
  {
   if ($i == '0') echo "

";
   $fehlertext .= "".$mydata[$i]." muß angegeben werden.
";
   $fehler++;
  }
 }
 if ($fehler > 0)
 {
  echo "<div style='margin-left:50px;padding:4px;'>
<font size=3 face=tahoma,verdana,arial color=red>Es ";
  if ($fehler == 1) echo "ist";
               else echo "sind";
  echo " ".$fehler." Fehler aufgetreten.</font>

";
  echo "<font size=2>".$fehlertext."</font>";
  echo "

<big>Bitte klicken Sie <a style=width:30px;font-size:14px; href=javascript:history.back(-1);><U>hier</U></a>, und korrigieren Sie Ihre Angaben.</big></div>";
  unset($fehlertext);
  $fehler = 0;
  exit;
 }
 else
 {
[[[Email vorbereiten und senden]]]
 }
 
Alt 20.10.2004, 09:08  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Zitat:
Hi, ich will auf meiner seite dieses formular haben und es soll gemailt werden. allerdings soll man es erst dann mailen können wenn in beide felder etwas eingetragen wurde. zusätzlich soll wenn nur eines der felder nicht benutzt wurde dem user erspart bleiben das andere feld auch nocheinmal ausfüllen zu müssen.
ich dachte ich kann da mit value="<? echo $name; ?>" arbeiten aber das klappt nicht wirklich. hier mal mein code von der datei kontakt.php:

Code:
Code:
<html>
<head>
<title>
main
</title>


<style>
body {background-attachment:fixed}
</style>


</head>
<body background="main-hintergrund-gross.jpg" link="silver" alink="silver" vlink="silver">




<font color="white" size=2,5>[b]
<font face="Verdana, Arial">
<center>
Kontakt
</font>







<table width=400>
<tr>
<td><font color="white" size=2,5>
<font face="Verdana, Arial">
xxxxxx:



xxxxxx:




Fax:




Adresse:




E-Mail:

</td>
<td><font color="white" size=2,5>[b]
<font face="Verdana, Arial">

+43 xxx xxxxxxxx



+43 xxx xxxxxxxx




+43 xxx xxxxxxxx




xxxxplatz 10, 10xx Wien




xxx@xxx.at

</td>
</tr>

</table>



<table width=400>
<tr>
<td>




<form action="kontakt.php" method="get">
[b]<font color="white" size=2,5>
<font face="Verdana, Arial">Mailen Sie uns auch direkt:
<textarea name="mail" cols="40" rows="10">
<?php echo $mail; ?>
</textarea>


Ihre E-Mailadresse:

<input type="text" name="absender" size="30" maxlength="50" value="<?php echo $absender; ?>">


<input type="submit" value="Mail abschicken">

<input type="hidden" name="topic" value="xxx">
</form>

</td>
</tr>
</table>


<?php

$sender = "xxx";
$empfaenger = "xxx";


if($sender == "")
{
echo "text";
}
else if($mail == "")
{
echo "sender";
}
else
{
echo "<font color=#ff0000>Gesendet</font>";
mail($empfaenger, $betreff, $mail, "From: $sender <$absender>");
}

?>


</body>
</html>
ach ja..hehe...das problem: weder wird gemailt noch sonst etwas gemacht wenn man etwas einträgt und "absendet" dann wird das form zurückgesetzt. ausserdem steht von beginn an die zeile vom value in den feldern....ich weisz schon dasz dies auch normal ist, aber sollte ich da nicht <?php...?> etwas machen können?

Danke im Voraus für alle Antworten
Hmm, super, ein so langes Script zu posten, die relevanten Teile hätten gereicht...

Code:
# zuerst ein bisschen initialisieren
if (isset ($_REQUEST['absender']) and (strlen ($_REQUEST['absender']) > 0)) {
    $absender = $_REQUEST['absender'];
} else {
    $absender = null;
}
if (isset ($_REQUEST['mail']) and (strlen ($_REQUEST['mail']) > 0)) {
    $absender = $_REQUEST['mail'];
} else {
    $mail = '';
}
if ($mail != '' and $absender != '') {
    # hier dann das Mail-Kommando und und eine Dankeschön-Seite
} else {
    # hier nochmals Deine Eingabeseite mit evtl. einer Fehlerbeschreibung
}
Wenn keine Mail verschickt wird (woher weißt Du das?), ist vielleicht das Mail-Kommando deaktiviert oder kein sendmail installiert/konfiguriert?

--

Marco
marsch ist offline  
Alt 20.10.2004, 09:13  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von marsch
Hmm, super, ein so langes Script zu posten, die relevanten Teile hätten gereicht...
weswegen Du es gleich nochmal gepostet hast, gell
 
Alt 20.10.2004, 10:38  
Gast
 
Beiträge: n/a
Standard

also erst mal danke für eure schnellen antworten, ABER
mir geht es ja auch darum eure lösungen zu verstehen...hehe

ich fang mal mit marsch an:
Wenn ich das richtig verstanden habe, dann prüfst du zuerst ob absender gesetzt wurde und ob es keine 0 ist (was ja bei GET möglich ist afaik)...wenn also absender richtig gesetzt wurde, dann weist du den wert von absender der variable $absender zu.

dann das gleiche mit mail

dann sagst du wenn $mail und $absender nicht null sind wird gemailt und wenn nicht halt nochmals die eingabe seite


richtig oder?


----------------------------------------------

nun humer

du gibst beim form ein hidden feld dazu in dem die NAMEN der anderen zwei felder stehen.

jetzt kommen für mich probleme:

deine erste if bedingung verstehe ich nur halb.....
du prüfst ob $submit gesetzt ist und ob es den wert senden hat. nun weisz ich nicht welchen wert $submit hat bzw woher du es hast

jedenfalls....wenn $submit gesetzt ist und den wert "senden" hat dann löscht du $submit dann machst du aus den namen der 2 felder des forms (aus dem hidden feld required) mit explode ein array namens $mydata und der var. $fehler weist du den wert 0 zu. <- warum das alles?
ich mein was ist die idee dahinter

jetzt wird es schwierig für mich:dann sagst du weiter: sloange i kleiner (in dem fall) 2 ist und wenn eines der 2 felder leer ist oder 0 weist du der var. $fehlertext eben diesen satz zu und erhöhst $fehler um 1. (aha jetzt beim schreiben wird mir die sache mit dem $fehler klar)

weiter im text: wenn jetzt $fehler größer 0 ist (sprich ein fehler aufgetreten ist) dann unterscheidest du ob einer oder 2 gibst den jeweiligen text dazu aus mit einem back link und der bitte um korrektur.

------

desalb mach ich das....hehe vorher war mir keiner eurer wege klar jetzt beide Die Denkweise ist wohl das schwierigste am Anfang.

Leider funktioniert weder das eine noch das andere script beide geben fehlermeldungen wie folgt aus:

@humer
Zitat:
muß angegeben werden.
"; $fehler++; } } if ($fehler > 0) { echo "


Es "; if ($fehler == 1) echo "ist"; else echo "sind"; echo " ".$fehler." Fehler aufgetreten.

"; echo "".$fehlertext.""; echo "

Bitte klicken Sie hier, und korrigieren Sie Ihre Angaben.
"; unset($fehlertext); $fehler = 0; exit; } else { [[[Email vorbereiten und senden]]] } ?>
das erscheint unter dem form

@marsch
Zitat:
0)) { $absender = $_REQUEST['absender']; } else { $absender = null; } if (isset ($_REQUEST['mail']) and (strlen ($_REQUEST['mail']) > 0)) { $absender = $_REQUEST['mail']; } else { $mail = ''; } if ($mail != '' and $absender != '') { echo "test positiv"; } else { echo "test negativ"; } ?>
Das erscheint unter dem Form


bitte nochmals um hilfe bzw richtigstellungen falls ich etwas nicht verstanden habe....
Danke Euch vielmals


P.S.: das mit value="$feldname" klappt auch nicht...steht dann $mail bzw $absender im jew. textfeld
 
Alt 20.10.2004, 11:01  
Gast
 
Beiträge: n/a
Standard

<? echo $feldname; ?> wirkt Wunder
 
Alt 20.10.2004, 11:21  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Michigras
<? echo $feldname; ?> wirkt Wunder
Zitat:
Zitat von Waldfee
ich dachte ich kann da mit value="<? echo $name; ?>" arbeiten aber das klappt nicht wirklich
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
BACKLINK CHECK und SICHERHEIT von zentraler CSV-Datei ff-webdesigner.de PHP-Fortgeschrittene 16 27.11.2008 20:25
Frage zu Formmailer airkiller PHP Tipps 2008 9 15.07.2008 11:41
Fehlermeldung You have an error in your SQL syntax; check... blu21 Datenbanken 2 18.09.2006 15:34
Formmailer lavey242 PHP Tipps 2006 5 06.05.2006 12:39
[Erledigt] Problem mit Formmailer PHP Tipps 2005-2 13 04.09.2005 14:16
Fehler bei Formmailer PHP Tipps 2005-2 1 10.07.2005 14:02
2 tabellen - check ob in der 1. das in der 2. is möchtegernchegga PHP Tipps 2005-2 2 07.07.2005 19:35
Formmailer geht bei der email zuschickung nicht richtig PHP Tipps 2005 2 02.06.2005 22:54
[Erledigt] Im Intranet einen Formmailer benutzen ?!?! Server, Hosting und Workstations 3 16.12.2004 21:47
[Erledigt] Intranet Formmailer Server, Hosting und Workstations 4 15.12.2004 12:34
php formmailer in html dok. PHP Tipps 2004-2 5 21.11.2004 03:47
[Erledigt] Weshalb beträgt die Dateigrösse auf 2MB beim Formmailer... PHP Tipps 2004-2 2 19.11.2004 15:22
domain check lindner PHP Tipps 2004-2 2 19.11.2004 12:48
Formmailer Kundennummer vergeben PHP Tipps 2004 1 01.11.2004 20:22
[Erledigt] Formmailer anpassen PHP Tipps 2004 7 21.09.2004 10:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formmailer test, formmailer with check, formmailer pflichtfeld, formmailer mit check, php formmail pflichtfeld, formmailer pflichtfelder dankeschön seite

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.