php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.09.2005, 14:27  
Erfahrener Benutzer
 
Registriert seit: 25.06.2005
Beiträge: 228
Marian
Standard Mail problem

Also ch ahbe folgendes Problem.
ich habe eine Art Mailscript geschreiben.

PHP-Code:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Rohrer Gruppe Version: 0.1</title>
</head>

<body bgcolor="#FFFFFF">

<form method="POST">
<center>

<table width="380" border="0">
<tr><td align="right" width="200">Name:</td><td colspan="2">
  <input type="text" size="20" name="T1" value=""></td></tr>
<tr><td align="right" width="200">Baustelle:</td><td colspan="2">
  <input type="text" size="20" name="T2" value=""></td><tr>
<tr><td align="right" width="200">Kostenstelle-Projektnummer:</td><td colspan="2">
  <input type="text" size="20" name="T3" value=""></td></tr>
<tr><td colspan="3"></td></tr>
<tr><td align="right">Lieferrant:</td><td>
  <input type="text" size="20" name="T4" value=""></td><td>
  <input type="checkbox" name="C1" value="ON"></td></tr>
<tr><td align="right">und/oder Ger&auml;tepool:</td><td>
  <input type="text" size="20" name="T5" value=""></td><td>
  <input type="checkbox" name="C2" value="ON"></td></tr>
<tr><td align="right">Liefertermin:</td><td>
  <input type="text" size="20" name="T6" value=""></td><td>
  <input type="checkbox" name="C3" value="ON"></td></tr>
<tr><td align="right">Einsatzdauer:</td><td>
  <input type="text" size="20" name="T7" value=""></td><td><span style="color:#FF0000">[b][i]![/i][b]</span></td></tr>
</table> 






<table border="0" cellspacing="0">
<tr>
 <td align="right">Ger&auml;t:</td><td>
 <input type="text" size="20" name="T8" value=""><input type="checkbox" name="C4" value="ON"></td>
 <td colspan="2"></td>
</tr>
<tr>
 <td align="right">Einsatzdauer:</td><td>
 <input type="text" size="20" name="T9" value=""><input type="checkbox" name="C5" value="ON"></td>
 <td align="right">Verbrauchsmaterial:</td><td>
 <input type="text" size="20" name="T10" value=""><input type="checkbox" name="C6" value="ON">
</tr>
<tr>
 <td></td><td>(von - bis)</td>
 <td align="right">Menge:</td><td>
 <input type="text" size="20" name="T11" value=""><input type="checkbox" name="C7" value="ON"></td>
</tr>
<tr>
 <td colspan="2"></td>
 <td align="right">Lieferrant:</td><td>
 <input type="text" size="20" name="T12" value=""><input type="checkbox" name="C8" value="ON"></td>
</tr>
<tr>
 <td colspan="2"></td>
 <td align="right">Liefertermin:</td><td>
 <input type="text" size="20" name="T13" value=""><input type="checkbox" name="C9" value="ON"></td>
</tr>
<tr>
 <td colspan="2"></td>
 <td></td><td>(TT.MM.JJJJ)</td>
</tr>
<tr>
 <td colspan="4" align="center">Ich habe die AGB's Gelsen und Akzeptiere sie:
  <input type="checkbox" name="a1" value="ON"></td>
</tr>
<tr>
 <td colspan="4" align="center"><input type="submit" value="Abschicken"><input type="reset"></td>
</tr>
</table>

</form>


</body>
</html>

<?php
$empf 
"Marian-e@web.de \n";       // An wen wird das Formular gesendet
$betr "Betreff\n";                //Betreff   
$name "$T1\n";                   // Name 
$Bau  "$T2\n";                   // Baustelle
$KP   "$T3\n";                   // Kostenstelle-Projektnummer
$Lir  "$T4\n";                   // Lieferant
$Gerp "$T5\n";                   // und/oder Gerätepool
$Lim  "$T6\n";                   // Liefertermin
$Eind "$T7\n";                   // Einsatzdauer
$Ger  "$T8\n";                   // Geräte
$Ein  "$T9\n";                   // Einsatzdauer2
$Vmat "$T10\n";                  // Verbrauchsmaterial
$Men  "$T11\n";                  // Menge
$Lif  "$T12\n";                  // Lieferant2
$Lit  "$T13\n";                  // Liefertermin
$all  "$empf $name $Bau $KP $Lir $Gerp $Lim $Eind $Ger $Ein $Vmat $Men $Lif $Lit";  


if (
$a1 true)
{
mail ($empf$betr$all);
}
else
{
echo 
"es muss ein hecken gemacht werden um das formular abzuschicken";
}
?>
Jetzt ist mein Problem, das die mail auch verschickt wird, wenn ich das script lade, und nicht erst wenn ich auf abschicken klicke.
Eine If-abweisung habe ich gemacht, in der geprüft werden soll, ob die checkbox abgehakt ist, und wenn sie abgehakt ist, soll die mail verschickt werden. Doch da habe ich irgend einen fehler gemacht. Denn die if-anweisung ist immer erfüllt, ob abgehakt oder nicht.

Die checkboxen neben den textfeldern haben noch keine Funktion. Bin mir auch noch nicht sicher ob sie wieder weg kommen.
Geht nur darum, das die mail nur verschickt wird, wenn die AGB's akzeptiert sind.

Wenn ein geschultes auge mal gucken könnte, wo der fehler ist, wäre ich recht dankbar.

MFG Marian
Marian ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.09.2005, 14:33  
Gast
 
Beiträge: n/a
Standard

Vielleicht hilft ein einfaches Beispiel weiter.
PHP-Code:
<?php
if (isset($_POST['abc']) && isset($_POST['def']))
{
    echo 
'abc und def gesetzt';
}
else {
    echo 
'<html><body><form method="post" action="'.$_SERVER['PHP_SELF'].'">';
    echo 
'<input type="checkbox" name="abc" >';
    echo 
'<input type="submit" name="def" >';
    echo 
'</form></body></html>';
}
?>
 
Alt 25.09.2005, 16:09  
Erfahrener Benutzer
 
Registriert seit: 07.07.2005
Beiträge: 150
sysop
sysop eine Nachricht über ICQ schicken
Standard

if ($a1 = true) ist kein vergleich sondern eine feststellung, genauso könntest du schreiben $a = true;
__________________
gruss sys
sysop ist offline  
Alt 25.09.2005, 17:04  
Erfahrener Benutzer
 
Registriert seit: 25.06.2005
Beiträge: 228
Marian
Standard

@Bruchpilot
Aber dein bsp funktioniert nicht auf mein script.

@All
Wie vergleicht man denn ob eine checkbox abgehackt ist, und wie prüft man ob eine radio button aktiviert ist.

und kann ich

PHP-Code:
if (isset($_POST['abc']) && isset($_POST['def']))

mail ($empf$betr$all); 

else 

echo 
"es muss ein hecken gemacht werden um das formular abzuschicken"

?> 
schreiben.
Oder geht das net.
Marian ist offline  
Alt 25.09.2005, 17:54  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Das Beispiel war nur ein Wink mit dem Zaunpfahl, dass Du auf Feldnamen aus dem Form mit $_POST[] zugreifen sollst.
Wenn register_globals auf off steht, sind die Felder nicht einfach als Variablen bekannt. Und das ist auch gut so!


Bei einer Checkbox wird der Name übergeben wenn sie ausgewählt ist. Ansonsten nicht.
Mit (!empty($_POST['NameDerCheckbox'])) kannst Du prüfen, ob sie an ist.


Bei einem Radio-Button wird in $_POST['NameDesRadioButtons'] der mit value="xyz" angegebene Wert übergeben.

@sysop:
Was soll denn in PHP eine Feststellung sein?
Es ist eine normale Zuweisung.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 25.09.2005, 18:35  
Erfahrener Benutzer
 
Registriert seit: 25.06.2005
Beiträge: 228
Marian
Standard

Also
PHP-Code:
<?php
if (isset($_POST['a1'])) 
{  
mail ($empf$betr$all);  
}  
else  
{  
echo 
"es muss ein hecken gemacht werden um das formular abzuschicken";  
}  
?>
funktioniert im mom auch.
Marian ist offline  
Alt 25.09.2005, 18:57  
Gast
 
Beiträge: n/a
Standard

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Gruß
phpfan
 
Alt 25.09.2005, 22:17  
Erfahrener Benutzer
 
Registriert seit: 25.06.2005
Beiträge: 228
Marian
Standard

Jo.
Hast du schön erklärt.
Doch wenn man von PHP nicht die ahnung hat um richtig zu debuggen.
jo. Ich weiß dann muss mans lernen. und in tuts gucken.
Aber aus tuts kann man nicht lernen. Da kann man sich nur hilfe über sachen hohlen, die man eigendlich schon kann.

Ich habe bis jetzt noch keine tut gefunden, das isset ordentlich erklärt, was es macht, wo und wann man es verwendet, und was man macht, wenns net geht wie man es will. Und ich sehne mich immernoch nach nem tut was mir erklärt wofür $_POST gut ist, und wie man auf den stuss kommt, den man bei <form action=""> hinschreiben kann.

bei meinen scripts gibts action garnet. da gibts nur post oder get.

@PHPfan
ich weis das du nur helfen willst, aber so leicht funktioniert das nicht, wenn man erstmal chinesich liest, beim anblick des quellcodes.
Für einen, der kaum php kann, sieht ein quellcode etwa so aus: ahjkkfdkhjfgsakfagkgdsakgsadhfg <--- hat keinen sinn
Das ist das problem. Wenn man sich aus 100 tuts die befehle zusammengesucht hat, die dann benutzt, die Syntax net kennt, und mal drauf losprobiert, und alles nix wird, und man dann verzweifelt um hilfe fragt, und dann kommt so en tip wie man den quellcode richtig debuggt, dann hilft das sehr wenig.

Was isset macht weis ich bis jetzt noch net.
Mann bekommt zwar bsps, die auch gut sind, doch man kann sie nicht umsetzen auf sein eigenes script, weil man das bsp script nicht verstanden hat, und die richtige syntax nicht kennt.

Zitat:
Vielleicht hilft ein einfaches Beispiel weiter.
PHP:

<?php
if (isset($_POST['abc']) && isset($_POST['def']))
{
echo 'abc und def gesetzt';
}
else {
echo '<html><body><form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<input type="checkbox" name="abc" >';
echo '<input type="submit" name="def" >';
echo '</form></body></html>';
}
?>
Das hat mir z.b. erstmal garnis gesagt.
ne erklärung was er da gemacht hat, und warum er das gemacht hat, hätte mich es verstehen lassen, und ich hätte gewust, wie ich es umsetzen muss.
So habe habe ich die If-anweisung kopiert, und mal ausprobiert wie es klappen könnte, und ich ahbe ne klappende möglichkeit gefunden.
Den quellcode habe ich jetzt, aber verstanden habe ich ihn net, und wie er funktioniert auch nicht. Und warum ich ausgerechnet diesem quellcode und nicht irgend einen anderen benutzt habe weis ich auch nicht.
wenn ich mein nächstes script schreibe, und da wieder mit checkboxen arbeite, werde ich die frage vieleicht wieder stellen müssen, weil es ein anderer zusammenhang ist, bz ich die jetztige checkbox abfrage nicht 100 protzentig übernehmen kann, und nicht weis, wie ich sie anpasse, und wies funktioniert.

ich hoffe ich konnte mein problem verdeutlichen.
MFG Marian
Marian ist offline  
Alt 26.09.2005, 01:49  
Gast
 
Beiträge: n/a
Standard

Formularelemente mit name-Attribute werden als Name=Wert Paare an den Server geschickt. Und zwar immer, sofern sie überhaupt verschickt werden.
Php macht daraus dann $_POST['name'] oder $_GET['name']. Das sind zwei unterschiedliche Arten, die Daten zu, Server zu transportieren. Vergleiche <form method=post> / <form method=get>
<input name="abc"> => $_POST['abc'] oder $_GET['abc']
Die einzelnen Typen <input type="text"> <input type="radio"> <select><option> usw. werden sehr ähnlich aber ein wenig unterschiedlich bnehandelt.
print_r($_POST) bzw print_r($_GET) zeigt Dir, wie die Felder bei jeder Anfrage an den Server gefüllt sind, aka: Was an den Server geschickt wurde.
Spiel einfach ein wenig damit rum. Das ist mE die beste Methode, mit den Parametern umzugehen.
 
Alt 26.09.2005, 07:18  
Gast
 
Beiträge: n/a
Standard

http://de2.php.net/manual/de/reserved.variables.php
 
 


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
Problem mit mail() Blue-Dragon PHP Tipps 2008 17 05.07.2008 22:09
[Erledigt] problem keine ausgabe coraplanet PHP Tipps 2008 12 02.05.2008 18:51
mail() und boundary Problem Gef PHP Tipps 2006 4 02.03.2006 00:47
mail(); + Array = Problem PHP Tipps 2005-2 5 15.08.2005 16:45
mail von lokalem Server an SMTP im Netz -after_pop- Problem PHP-Fortgeschrittene 7 12.08.2005 14:40
Problem ! Mail mit PHP vom Freenet-Server pit62 PHP Tipps 2005 3 09.02.2005 09:22
Problem mit mail datei im mbox fomat PHP-Fortgeschrittene 3 08.02.2005 15:24
Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
Problem mit dem mail() PHP Tipps 2005 10 18.01.2005 21:13
mail() problem Trumpfass PHP Tipps 2004-2 3 20.12.2004 20:07
mail() Problem mit emailadresse mit "-" [gelöst] wishy PHP Tipps 2004-2 2 15.12.2004 11:36
Mail Problem PHP Tipps 2004-2 3 13.12.2004 22:43
Problem mit Formular + Mail To+ PHP-Seiten weiterleitung HTML, Usability und Barrierefreiheit 3 27.08.2004 11:06
Problem mit Mail PHP Tipps 2004 15 02.08.2004 22:55
mail() - problem PHP Tipps 2004 2 12.07.2004 00:17


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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.