Zu blöd für PHP? Oder selfhtml meine letzte Rettung.
Heiko Hirsch
- php
Hallo,
mittlerweile mein dritter Post zu diesem Thema. Ich weiß:
Was möchte ich:
Die Bestellung soll _vor_ dem Versand per Mail vom Kunden kontrolliert werden können.
Im Moment klickt der Kunde und die Bestellung wird am Bildschirm angezeigt und direkt per Mail verschickt.
Weiß einer eine Lösung, das die Bestellung nocheinmal vom Kunden kontrolliert werden kann, bevor Sie abgeschickt wird? Und wie schaffe ich es das die Eingaben vor Absenden kontrolliert werden, also z.B. ob Name korrekt eingegeben ist? Wenn ich das per javascript mache, kommen keine Variablen mehr in der PHP-Datei an.
Ich glaube es ist so gar nicht möglich, da ich die Variablen vom html Formular in PHP übernommen habe und dort weitere Berechnungen durchführe??
Mit Affenformularen komme ich nicht weiter, da ich diverse Berechnungen in der PHP-Datei habe.
Kann mir wer weiterhelfen?
Vielleicht hilft dem einen oder anderen auch mein Skript. Es kann Berechnungen, zieht Rabatt ab und schickt die Bestellung per Mail.
Datei: Bestellung.htm<<
<head>
<title>Rechnungsdaten</title>
</head>
<h1 align="center">Rechnungsdaten</h1>
<form method="post" action="rechnung-post.php">
<table border="0" cellpadding="4">
<tr>
<td> </td>
<td>Anrede:</td>
<td><input type="text" name="anrede" size="10"></td>
</tr>
<tr>
<td> </td>
<td>Vorname:</td>
<td><input type="text" name="vorname" size="25"></td>
</tr>
<tr>
<td> </td>
<td>Nachname:</td>
<td><input type="text" name="nachname" size="25"></td>
</tr>
<tr>
<td> </td>
<td>Strasse:</td>
<td><input type="text" name="anschrift" size="25"></td>
</tr>
<tr>
<td> </td>
<td>PLZ/Ort:</td>
<td><input type="text" name="plzort" size="25"></td>
</tr>
<tr>
<td> </td>
<td>Telefonnummer:</td>
<td><input type="text" name="telefon" size="25"></td>
</tr>
<tr>
<td>Position</td>
<td>Anzahl</td>
<td>12 Stellige jpg-Nr die sich<br> in Klammern auf der Rückseite<br> der Fotos befindet </td>
<td>Einzelpreis</td>
</tr>
<tr>
<td>13x18</td>
<td><input type="text" name="anz1" size="3"></td>
<td><input type="text" name="bez1" size="20"></td>
<td>5 Euro</td>
</tr>
<tr>
<td>13x18</td>
<td><input type="text" name="anz2" size="3"></td>
<td><input type="text" name="bez2" size="20"></td>
<td>5 Euro</td>
</tr>
<tr>
<td> </td>
Bestellwert ab 20 Euro keine Versandgebühr
Bestellwert ab 25 Euro Abzüglich 10%
<td>
<input type="submit" value="Abschicken" name="B1"></td>
<td>
<input type="reset" value="Zurücksetzen" name="B2"></td>
</tr>
</table>
</form>
datei: rechnung-post.php<<
<?php
$anrede = $_POST["anrede"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$anschrift = $_POST["anschrift"];
$plzort = $_POST["plzort"];
$telefon = $_POST["telefon"];
define ("MWST",19);
define ("WAEHRUNG"," Euro");
$bez1 = $_POST["bez1"];
$bez2 = $_POST["bez2"];
$anz1 = $_POST["anz1"];
$anz2 = $_POST["anz2"];
$ep1 = 5;
$ep2 = 5;
$preis1 = $anz1*$ep1;
$preis2 = $anz2*$ep2;
define ("bestellwert",20);
define ("rabattwert",25);
$geldsumme = $preis1+$preis2;
if ($geldsumme < 20) {$geldsumme=$geldsumme + 2.3; };
if ($geldsumme >= 25) {$geldsummen2=$geldsumme /100 * 10;};
$geldsumme3=$geldsumme-$geldsummen2;
$tara = $geldsumme3/100*MWST;
?>
<head>
<style type="text/css">
<!--
.u {border-bottom-width:2px; border-bottom-style:solid; border-bottom-color:#000000; }
.f {font-weight: bold;}
-->
</style>
</head>
<body>
<h1>Bestellung</h1>
<p align="right"><?php echo date("Y-m-d").", ".date("H:i")." Uhr" ?></p>
<?php echo "<b>$anrede<br>$vorname $nachname <b><br><hr>" ?>
<?php echo "<b>$anschrift<br>$plzort </b><br><hr>" ?>
<br>
<table width="100%">
<tr>
<td class="u"><?php echo "$anz1 " ?></td>
<td class="u"><?php echo "$bez1 " ?></td>
<td class="u">à <?php echo "$ep1 ".WAEHRUNG." = " ?></td>
<td class="u" align="right"><?php echo number_format($preis1,2).WAEHRUNG ?></td>
</tr>
<tr>
<td class="u"><?php echo "$anz2 " ?></td>
<td class="u"><?php echo "$bez2 " ?></td>
<td class="u">à <?php echo "$ep2 ".WAEHRUNG." = " ?></td>
<td class="u" align="right"><?php echo number_format($preis2,2).WAEHRUNG ?></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td class="f">Summe</td>
<td class="f" align="right"><?php echo number_format($geldsumme3,2).WAEHRUNG ?></td>
<td> </td>
<td> </td>
<td class="f"></td>
<td class="f" align="right"><?php if ($geldsumme3 <= 20.01)
echo "Da der Endbetrag unter 20 Euro liegt berechnen wir 2,30 Euro für Porto und Versand (Im Preis enthalten)";?>
</td>
<td> </td>
<td> </td>
<td class="f"></td>
<td class="f" align="right"><?php if ($geldsumme3 >= 25)
echo "Da der Endbetrag über 25 Euro liegt haben wir 10% Rabatt abgezogen)";?>
</td>
// betrag über 25 euro minus zehn % rabatt
<?php
$subject = "Bestellung";
$from = "mail@mail.de"; // hier die mail adresse eintragen
$to = "mail@mail.de"; // hier nochmal die mail adresse eintragen
$message = "Bestellung von " .$anrede. "\n\n"
.$vorname. "\n\n"
.$nachname. "\n\n"
.$anschrift. "\n\n"
.$plzort. "\n\n"
.$anz1. "Stück zu je 5 Euro " .$bez1. " Bestellnummer und Preis der Position 13x18 in Euro = " .$preis1. "\n\n"
.$anz2. "Stück zu je 5 Euro " .$bez2. " Bestellnummer und Preis der Position 13x18 in Euro = " .$preis2. "\n\n"
.$geldsumme3. "Endbetrag in Euro ".
"";
$laengeemail = strlen($email);
mail ($to,$subject,$message,"From: $from");
echo "<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">";
echo "<center>";
en
echo "<br><br>";
echo "</center>";
?><br>
<center><b><a href="javascript:history.back()">zurück</a><br>
<?php
?>
</tr>
<tr>
<td> </td>
<td> </td>
<td>
</tr>
</TABLE>
</body>
Hallo,
hallo auch
Ich glaube es ist so gar nicht möglich, da ich die Variablen vom html Formular in PHP übernommen habe und dort weitere Berechnungen durchführe??
doch es ist möglich
pseudocode
1 wenn formularabgeschicktwert = garnix
echo formular
submit formularabgeschickt = 1
2 wenn formularabgeschickt = 1 und fehler = einige
echo falsche daten, bitte tu dies und jenes
echo formular
submit formularabgeschickt = 1
3 wenn formularabgeschickt = 1 und fehler = keine
echo prüfen sie ihre daten
echo formular
submit formular abgeschickt = 1 und endgültigabgeschickt = 1
4 wenn formularabgeschickt = und fehler = keine und endgültigabgeschickt = 1
echo danke dass sie dieses überlange formular überhaupt ausgefüllt haben
Mit Affenformularen komme ich nicht weiter, da ich diverse Berechnungen in der PHP-Datei habe.
affenformulare sind genau das richtige für dich - reduziere das problem auf 1 oder 2 felder (vorname, nachname) und probiers aus bis es funktioniert
wenns dann funktioniert: erweitere es um ein feld und mach weiter
es gibt keinen grund, dich hier verrückt zu machen und zu glauben, dass diverse berechungen dein formular mit der vorgeschlagenen lösung unmöglich machen - das wird fast überall so gehandhabt, warum also sollte es bei dir also nicht funktionieren - ich sehen keinen grund?
ggf verwirrt dich eben wirklich der umfang und der unübersichliche tabellencode - wie gesagt, beschränke dich für den anfang auf 2 felder und gut ist
affenformulare sind genau das richtige für dich - reduziere das problem auf 1 oder 2 felder (vorname, nachname) und probiers aus bis es funktioniert
Hallo,
Du hast schon Recht. Nahezu alle Online Shops bieten die Möglichkeit die Daten vor dem absenden zu kontrollieren.
affenformulare sind genau das richtige für dich - reduziere das problem auf 1 oder 2 felder (vorname, nachname) und probiers aus bis es funktioniert
Hallo,
Du hast schon Recht. Nahezu alle Online Shops bieten die Möglichkeit die Daten vor dem absenden zu kontrollieren.
wie gesagt, dein problem ist denke ich nicht dass du nicht wüsstest, was du willst, sondern dass du bereits so viel code hast, dass du nicht mehr siehst, wie einfach es ist
wenn du das formular in ein include auslagerst, hast du schon viel gewonnen
wenn du das formular in ein include auslagerst, hast du schon viel gewonnen
Oh wenn du mir irgendwie auf die Sprünge helfen könntest....
Oh wenn du mir irgendwie auf die Sprünge helfen könntest....
fang mit der simplen variante ohne fehlerprüfung an
file 1, das formular selbst als include
input (hidden) status - wert 1
input vorname
input nachname
file 2, das script
if status = nix (!isset/empty)
include formular
else if status = 1
echo "danke fürs abschicken des formulars"
---
wenn das wie gewünscht funktioniert, bau eine fehlerprüfroutine ein
if status = 1
machmeinefehlerprüfung
if fehler = 1
fehler_vorname = <span class="error">Kein Vorname angegeben</span>
echo formular
else
echo "danke"
usw
das include fürs formular könnte zb so aussehen - dass echos für variable drinnen sind, die nicht vorhanden sind, spielt ansich keine rolle
wenn du das formular aufrufst und die werte leer sind, ist es leer - wenn du das formularm mit fehler = xyz aufrufst, dann wird der fehler dargestellt und sonst nicht
<form [...]>
<fieldset>
<legend>Ihre Daten</legend>
<div class="odd">
<label>Vorname</label> <input name="vorname" value="<?php echo $value_vorname; ?>" /> <?php echo $fehler_vorname; ?>
</div>
<div class="even">
[...]
</div>
</fieldset>
</form>
Oh wenn du mir irgendwie auf die Sprünge helfen könntest....
fang mit der simplen variante ohne fehlerprüfung an
Hallo,
Danke für eure zahlreichen Mails, aber leider verstehe ich davon nur Bahnhof :(
Mahlzeit,
Danke für eure zahlreichen Mails, aber leider verstehe ich davon nur Bahnhof :(
1. sind die Postings hier keine Mails und
2. zitiere ich aus der Forums-Hauptseite:
---8<---8<---8<---
Von dir als Teilnehmer erwarten wir HTML-Grundkenntnisse(*), sowie die Bereitschaft, zunächst erst einmal mit der bereichsübergreifendes Kapitel Suchfunktion im Archiv nach ähnlichen Problemen zu suchen. Lies unsere FAQ, dort sind häufig gestellte Fragen direkt beantwortet.
Zum Mitmachen im SELFHTML Forum haben wir einige grundsätzliche Verhaltensregeln, die du in der Seite Forums-Hilfe nachlesen kannst. Wir erwarten, dass du die Seite Charta des Forums kennst und die dort genannten Regeln einhältst.
--->8--->8--->8---
(*) Wobei es konkret ja eher um PHP-Grundkenntnisse geht
"Davon verstehe ich nur Bahnhof" hilft Deinen Lesern in keinster Weise weiter. Du erwartest nicht ernsthaft, dass Dir irgendjemand helfen kann oder will, wenn Du Dich mit der Materie, um die es in Deiner Frage geht (nämlich PHP) scheinbar noch nicht einmal in Ansätzen auseinander gesetzt hast - denn scheinbar überfordern Dich selbst einfachste Ratschläge und Tipps sowie elementarste Zusammenhänge. Erarbeite Dir zunächst die Grundlagen von PHP und berücktsichtige in Deiner nächsten Frage die Tipps für Fragende - dann kann Dir auch sicher geholfen werden.
MfG,
EKKi
Hallo
Erarbeite Dir zunächst die Grundlagen von PHP und berücktsichtige in Deiner nächsten Frage die Tipps für Fragende - dann kann Dir auch sicher geholfen werden.
@Heiko: Oder, und das ist ernst gemeint, beauftrage jemanden dafür, das, was du nicht kannst, für dich zu erledigen. Der Mensch hat, nicht von ungefähr, vor einigen tausenden von Jahren die Arbeitsteilung "erfunden"[1]. Wenn du also nicht fähig oder nicht willens bist, dich in ein Thema einzuarbeiten, überlasse die damit zusammenhängenden Aufgaben jemandem, der es kann.
[1] Jetzt bitte nicht mit staatenbildenden Insekten anfangen! ;-)
Tschö, Auge
Ich finde das Posting von Heiko sehr interessant,
ein Forum kann nicht der Ersatz für geistige Arbeit sein.
Man muß sich schon ein wenig anstrengen.
Wenn alle Menschen mit allen Fragen sofort in Foren posten würden, das gäbe ein Chaos.
Es ist wie auf einer Arbeit. Man bekommt Aufgaben und muß Sie erledigen. Wenn man Kleinigkeiten nicht versteht kann man fragen.
Wenn man große Zusammenhänge nicht begreift muß man lernen.
Nochmal an Heiko. Hast Du schon mal PHP Foren besucht?
Hello,
ein Forum kann nicht der Ersatz für geistige Arbeit sein.
Aber ein guter Katalysator. Man wird, Fragen mit einigermaßen Inhalt und intelligente Forumsteilnehmer vorausgesetzt, von Anderen in andere Denkbahnen gelenkt, bekommt Hinweise zu Beispielen und auf Fehler, die man selber vermutlich nicht so schnell entdeckt hätte.
Wenn alle Menschen mit allen Fragen sofort in Foren posten würden, das gäbe ein Chaos.
Das wird in den nächsten hundert Jahren bestimmt nicht geschehen. Wenn es 3-4% werden, haben wir schon ein erhebliches Wachstum der intelligenten Auseinandersetzung geschafft.
Erst wenn es keine Menschen mehr gibt, die den Spruch "wwenn das alle machen würden ..." drauf haben, dann wäre MIR schon viel wohler.
Ein harzliches Glückauf
Tom vom Berg
Hallo
Ich finde das Posting von Heiko sehr interessant,
Naja, es sind ja derer mehrere. :-)
ein Forum kann nicht der Ersatz für geistige Arbeit sein.
Man kann sich, bei entsprechendem Niveau, auch ohne selbst zu posten, reichlich Wissen rausziehen. Einfach nur durch mitlesen und ausprobieren.
Es ist wie auf einer Arbeit. Man bekommt Aufgaben und muß Sie erledigen. Wenn man Kleinigkeiten nicht versteht kann man fragen.
Wenn man große Zusammenhänge nicht begreift muß man lernen.
Ja eben, das war EKKis Aussage. Der Hilferuf in Heikos davorliegendem Posting weist darauf hin, dass er sich überfordert fühlt. Da heißt es, sich Zeit zu nehmen, um zu lernen, oder, um eine Aufgabe, die _jetzt_ ansteht, auch jetzt zu erledigen, sie jemandem zu übertragen, der die Phase des Lernen (auch wenn man nie auslernt) schon hinter sich hat.
Tschö, Auge
Hallo
ein Forum kann nicht der Ersatz für geistige Arbeit sein.
Man kann sich, bei entsprechendem Niveau, auch ohne selbst zu posten, reichlich Wissen rausziehen.
Gemeint ist sowohl das eigene Niveau als auch das des (nicht nur dieses) Forums.
Tschö, Auge
Mahlzeit,
mittlerweile mein dritter Post zu diesem Thema.
Wieso bleibst Du dann nicht in Deinem Ursprungspost? Es hat schon Sinn, dass Doppelpostings hier nicht gern gesehen sind: so ist es nicht nur für potentielle Antworter schwieriger, das Thema zu verfolgen, darüber hinaus findet der geneigte Leser mittels der Forumssuche hauptsächlich Threads, in denen keine Lösung vorhanden ist ... was ist daran so schwer zu verstehen?
- Affenformular ist die Lösung und
- Lese dir die Handbücher durch.
Beides habe ich erfolglos versucht:
Das glaube ich nicht. Du verwendest weder ein Affenformular noch scheinst Du irgendein Handbuch wirklich gründlich gelesen zu haben - na gut, vielleicht gelesen ... aber verstanden nicht so wirklich, oder?
Fang doch mal - wie suit vorschlug - ganz einfach an (ohne Anspruch auf Korrektheit oder Vollständigkeit):
<?php
[code lang=php]
function Formular_pruefen() {
if ($_POST['foo'] != '' && $_POST['bar'] != '') {
$submit_button = '<input type="submit" name="button" value="Absenden">';
}
}
function Formular_absenden() {
// was auch immer
}
$submit_button = '<input type="submit" name="button" value="Check">';
if (isarray($_POST)) {
switch ($_POST['button']) {
case 'Check':
Formular_pruefen();
break;
case 'Absenden':
Formular_absenden();
break;
}
}
~~~?>
<html>
<head>
<title>Affenformular</title>
</head>
<body>
<form action="<?php echo $\_SERVER['PHP\_SELF']; ?>" method="post">
<label for="foo">Foo:</label><input type="text" name="foo" id="foo" value="<?php echo htmlspecialchars($\_POST['foo']); ?>">
<label for="bar">Bar:</label><input type="text" name="bar" id="bar" value="<?php echo htmlspecialchars($\_POST['bar']); ?>">
<?php echo $submit\_button; ?>
</form>
</body>
</html>[/code]
Pass das ggf. auf Deine Verhältnisse an und probier es aus. Wenn diese einfach Version funktioniert, kannst Du weitere Felder hinzufügen, optional eine Javascript-Prüfung einbauen usw. ... aber mach nicht den 2. - 37293. Schritt vor dem 1.!
> Was möchte ich:
> Die Bestellung soll \_vor\_ dem Versand per Mail vom Kunden kontrolliert werden können.
Dann verschick sie einfach nicht. Bzw. mach es vom Status der Erfassung abhängig, ob die Maske erneut angezeigt wird oder eine Mail rausgeht.
> Im Moment klickt der Kunde und die Bestellung wird am Bildschirm angezeigt und direkt per Mail verschickt.
Ja klar - weil das irgendwer genau so programmiert hat. Von alleine macht kein Computer irgendwas ...
> Weiß einer eine Lösung, das die Bestellung nocheinmal vom Kunden kontrolliert werden kann, bevor Sie abgeschickt wird? Und wie schaffe ich es das die Eingaben vor Absenden kontrolliert werden, also z.B. ob Name korrekt eingegeben ist?
Indem Du einfach das ausgefüllte Formular erneut am Bildschirm anzeigst? Will sagen: indem Du als Formularziel einfach das Formular selbst angibst - das nennt sich dann "Affenformular" (aber darüber hattest Du Dich ja schon informiert, nicht wahr?).
> Wenn ich das per javascript mache, kommen keine Variablen mehr in der PHP-Datei an.
Das wage ich doch sehr stark zu bezweifeln.
> Ich glaube es ist so gar nicht möglich, da ich die Variablen vom html Formular in PHP übernommen habe und dort weitere Berechnungen durchführe??
Du verwendest ja auch kein Affenformular. Klar, dass man dann irgendwann durcheinanderkommt, wenn man mehrere Dateien hat, die sich mit exakt dem selben Formular beschäftigen.
> Mit Affenformularen komme ich nicht weiter, da ich diverse Berechnungen in der PHP-Datei habe.
Das Argument ist Schwachsinn. Du hast schlicht und ergreifend nicht verstanden, wie ein Affenformular funktioniert. Deswegen verwendest Du auch keins.
> Kann mir wer weiterhelfen?
Du selbst. Aber dabei wird Dir gern geholfen. Versuch einfach mal systematisch an das Problem heranzugehen, es zu abstrahieren und zu vereinfachen und vor allem: berücksichtige die Dir gegebenen Ratschläge und lies Dir die genannten Links bzw. Artikel durch. Dir wurde schon mehrfach von verschiedener Seite geraten, Dich mit Affenformularen zu beschäftigen, aber Du tust es nicht. Warum nicht?
> Vielleicht hilft dem einen oder anderen auch mein Skript. Es kann Berechnungen, zieht Rabatt ab und schickt die Bestellung per Mail.
Nein. Dein Skript hilft überhaupt nicht - weil das, was es kann, für Dein Problem vollkommen irrelevant ist. Und das, was es eben nicht kann, genau das ist, was Du benötigst. Also fang neu an.
MfG,
EKKi
--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
mittlerweile mein dritter Post zu diesem Thema. Ich weiß:
- Affenformular ist die Lösung und
- Lese dir die Handbücher durch.
Beides habe ich erfolglos versucht:
Versuch's mal mit diesem Tutorial:
http://www.php-kurs.com/formularauswertung-mit-php.htm
Siechfred
Hello,
Versuch's mal mit diesem Tutorial:
http://www.php-kurs.com/formularauswertung-mit-php.htm
Ganz hüsch geamacht, wobei auch fälschlciherweise $_SERVER['PHP_SELF'] für die Selbstreferenzierung des Formulars Verwendung findet. Im betroffenen Kontext wäre aber $_SERVER['SCRIPT_NAME'] die richtige Wahl, der Sicherheit zuliebe...
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
.