php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.08.2006, 10:12  
Erfahrener Benutzer
 
Registriert seit: 16.03.2004
Beiträge: 170
Kori
Standard If wird nicht in Anspruch genommen?

PHP-Code:
<?php
if (senden) {
$betreff "Betreff";

$an "deine-mail@adresse.de";

$von "$email";

$date date("d.m.Y");

$inhalt "Homepage: $home\nMail: $email\nText1: $text1\nText2: $text2\nText3: $text3\n";

@
mail ($an,$betreff,$inhalt,"From: ".$von);
echo 
"Bestellung erfolgreich!!!";

############################
#jetzt kommt der Teil der Auto-Response#
###########################

$von="deine-mail@adresse.de";
$vtext="Deine Bestellung ist soeben bei mir angekommen.
Ich werde mich so schnell wie möglich um deine Bannerbestellung kümmern!

Mfg, Kevin Fischer
[1]
Du hast folgendes eingegeben:
Homepage: $home
Mail: $email
Text1: $text1\n Text2: $text2\n Text3: $text3\n"
;
$bestaetigung="Deine Mail ist angekommen!";
$betreff "Danke für deine Bestellung!!";
mail ($email,$bestaetigung,$vtext,"From: ");
}
?>

<form action="" method="post">
<table><tr>
<td>Homepage:</td>
<td><input type="text" name="home"></td>
</tr>
<tr>
<td>E-Mail:  </td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Text 1:</td>
<td><input type="text" name="text1"></td>
</tr>
<td>Text 2:</td>
<td><input type="text" name="text2"></td>
</tr>
<td>Text 3 (falls vorhanden):</td>
<td><input type="text" name="text3"></td>
</tr>
<td><input type="submit" name="senden" value=">>Bestellung abschicken!<<"></td>
</form>
<td></td>
Folgendes:

Habs einfach mal grob kopiert und in nur ein Formular zusammen geprescht, problem ist, wenn ichs öffne steht dort schon "Bestellung verschickt" sollte aber erst wenn "senden" gedrückt wird, aber das klappt mit dem if zweig noch nicht, wisst ihr vllt warum?

mfg
Kori ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.08.2006, 10:18  
Gast
 
Beiträge: n/a
Standard

Ein error_reporting(E_ALL); am Anfang des Scriptes würde dir verraten, dass "senden" eine undefinierte Konstante ist.

Und dass dein Script immer noch register_globals=on benötigt, ist einfach nur grausam!

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
4. 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).
5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. 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 07.08.2006, 10:18  
XLB
Erfahrener Benutzer
 
Registriert seit: 31.07.2005
Beiträge: 1.126
PHP-Kenntnisse:
Fortgeschritten
XLB
Standard

Müsste wohl ...

PHP-Code:
   if (isset($_POST['senden']))
   {
       .... 
... heissen.

Rücke deinen Code mal ein und verwende die PHP-Tags ...
XLB ist offline  
Alt 07.08.2006, 10:20  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

mach mal in action von deinem Form-Tag auch was rein.

Z.B. -> <?php echo $_SERVER['PHP_SELF']; ?>

und

Code:
if(senden) {
sollte glaub besser

Code:
if(isset($_POST['senden'])) {
heissen

Edit:
ausserdem solltest du bei den Formulardaten auf register_globals achten

register_globals
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 07.08.2006, 10:24  
Gast
 
Beiträge: n/a
Standard

@PsychoEagle
Auch dir sei ein error_reporting(E_ALL); nahegelegt, wenn du tatsächlich so programmierst.

Gruß
phpfan
 
Alt 07.08.2006, 10:30  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von phpfan
@PsychoEagle
Auch dir sei ein error_reporting(E_ALL); nahegelegt, wenn du tatsächlich so programmierst.

Gruß
phpfan
Sorry, hatte das isset() vergessen. Habs editiert (wobei jemand schneller war wie ich )

error_reporting hab ich immer an. Zumindestens, so lang das Projekt noch nicht vollkommen abgeschlossen ist, bzw. ich mit meinen Änderungen nicht fertig bin.
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
 


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


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:16 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.