Formular in PHP mit Berechnung
Heiko Hirsch
- php
0 Moe0 *Alex*0 Heiko Hirsch0 Klaus20 Heiko Hirsch0 EKKi
1 romy0 Bernd-BigMac-Hero
Hallo,
ich möchte ein einfaches Formular gestalten mit folgenden Inhalten:
Bestellnummer 1: | Anzahl | = Preis
Bestellnummer 2: | Anzahl | = Preis
So könnte jetzt z.B. nur Bestellnummer 1 ausgefüllt werden.
Am Ende soll der Preis automatisch berechnet werden
Wenn der Preis über 20 Euro ist sollen 20% abgezogen werden.
Und die Adresse soll eingegeben werden.
Das ganze wird verschickt über dieses Script:
if($dateiname) {
$trenner = md5(uniqid(time()));
$header .= "\n";
$header .= "MIME-Version: 1.0";
$header .= "\n";
$header .= "Content-Type: multipart/mixed; boundary=$trenner";
$header .= "\n\n";
$header .= "This is a multi-part message in MIME format";
$header .= "\n";
$header .= "--$trenner";
$header .= "\n";
$header .= "Content-Type: text/plain";
$header .= "\n";
$header .= "Content-Transfer-Encoding: 8bit";
$header .= "\n\n";
$header .= $Text;
$header .= "\n";
$header .= "--$trenner";
$header .= "\n";
$header .= "Content-Type: ".$_FILES['anhang']['type']."; name=$dateiname_mail";
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=$dateiname_mail";
$header .= "\n\n";
$dateiinhalt = fread(fopen($dateiname, "r"), filesize($dateiname));
$header .= chunk_split(base64_encode($dateiinhalt));
$header .= "\n";
$header .= "--$trenner--";
// Keinen Anhang, nur Mail
} else {
$header .= "\nContent-Type: text/plain";
$header .= "\nContent-Transfer-Encoding: 8bit";
$header .= "\n\n".$Text;
}
//-> Alles ok, Mail verschicken.
mail($empfaenger,$pbetreff[(int)$_POST['betreff']],'', $header);
$gesendet = true;
Mein Problem ist folgendes:
Die Berechnung habe ich manuell über Javascript hinbekommen
Die Prüfung bekomme ich auch hin (ob Daten vorhanden sind)
Wie kann ich den berechneten Wert prüfen ob er höher als 20€ ist.
Hat irgendjemand ein kleines Formular parat oder eine URL das ich das ganze nocheinmal theoritisch durchgehen kann was ich hier falsch mache?
Liebe Grüße
Heiko
HI
Ich versteh ehrlich gesagt dein Problem noch nicht so ganz, was mir aber sofort aufgefallen ist ist , dass du die Berechnung per JavaScript durchführst und scheinbar auch direkt in dein PHP-Skript übernimmst. Das solltest du in keinem Fall tun, da man Formulare immmer beeinflussen kann und sie somit nicht sicher sind.
Gruß
Moe
Hallo Heiko
- Wie kann ich den berechneten Wert prüfen ob er höher als 20€ ist.
if(berechneterWert > 20)tueAnweisung();
Hat irgendjemand ein kleines Formular parat oder eine URL das ich das ganze nocheinmal theoritisch durchgehen kann was ich hier falsch mache?
Du hast von keinem FEHLER erzählt, nur von mangelndem Know-How.
Kann es sein, dass Du nicht so richtig weißt, was Du da tust? Ist das vielleicht eine Hausaufgabe in einem PHP-Kurs?
Einen schönen Start in die Woche!
*Alex*
Kann es sein, dass Du nicht so richtig weißt, was Du da tust? Ist das vielleicht eine Hausaufgabe in einem PHP-Kurs?
Einen schönen Start in die Woche!
Nein, nein es ist keine "Hausaufgabe" sondern ich möchte für einen Bekannten der ein Fotogeschäft hat so ein Formular einstellen.
Er glaubt das Leute Fotos übers Internet nachbestellen.
In das Formular soll der Kunde eintragen können:
1. Ankreuzen beim passenden Format (z.b. 9*13) und dahinter die Nummer des Fotos eingeben und die Stückzahl.
Am Ende hat der Kunde z.B. 5 Fotos 9*13 nachbestellt zu je z.B. 6 Euro und 7 Fotos mit Format XY für je 3 euro.
Am Ende soll dann festgestellt werden,
AHA du Kunde hast mehr als 20 Euro zusammen dafür bekommst du 20% Rabatt.
Und lieber Kunde trage hier deine Adresse ein.
Das ganze soll dann als Mail bei ihm ankommen.
Ich schaffe nicht
Also wie du schon gesagt hast, es liegt eher am fehlenden Wissen, trotz tagelanger Recherche mit google und Bücher oder am fehlenden Talent das gelesene umzusetzen.
Ich weiß nicht bin aber auf jeden Fall verzweifelt, da ich gesagt habe "logisch bekomme ich sowas hin, ist doch ein Kinderspiel", obwohl er nochmal gesagt hat "oder soll ich einen Profi fragen".
Tja so hab ich Pech gehabt, wenn mir nicht was einfällt oder irgendwo eine Fee auftaucht und sagt:
Hier nimm dieses Skript
werde ich eingestehen müssen, das ich weder im Stande noch in der Lage dazu bin ein Formular das über html-Grundkurs und selfhtml-Kapitel Formulare hinausgeht zu erstellen.
Kann es sein, dass Du nicht so richtig weißt, was Du da tust? Ist das vielleicht eine Hausaufgabe in einem PHP-Kurs?
Einen schönen Start in die Woche!
Nein, nein es ist keine "Hausaufgabe" sondern ich möchte für einen Bekannten der ein Fotogeschäft hat so ein Formular einstellen.
Er glaubt das Leute Fotos übers Internet nachbestellen.In das Formular soll der Kunde eintragen können:
Du brauchst erst mal ein
Welche der Punkte sind unklar?
Du brauchst erst mal ein
- html Formular
- mit PHP addierst du die Werte
- und dann wird das Formular verschickt.
Welche der Punkte sind unklar?
Danke für die Antwort.
Mir geht es darum ob jemand ein vorgefertigtes Skript für mich hat, mit einer Spalte wo ich eintragen kann "Stückzahl" und "Bestellnummer" und am Ende rechnet er "Stückzahl x Preis (der vorher festgelegt ist).
Danke
Mahlzeit,
Mir geht es darum ob jemand ein vorgefertigtes Skript für mich hat, mit einer Spalte wo ich eintragen kann "Stückzahl" und "Bestellnummer" und am Ende rechnet er "Stückzahl x Preis (der vorher festgelegt ist).
Du vermischst hier ständig HTML-Formulare mit (sinnvollerweise serverseitigen) Skripten für die Auswertung der Eingaben. Ich kenne KEIN Skript[1], das eine "Spalte" besitzt, in die man etwas eintragen könnte.
Wo genau liegt jetzt eigentlich Dein Problem? Kannst Du die Daten, die Dein PHP-Skript vom HTML-Formular geschickt bekommt, nicht verarbeiten? Weißt Du nicht, wie Du die Verarbeitung zu programmieren hast? Dann solltest Du Dir vielleicht die Grundlagen von PHP zu Gemüte führen.
Normalerweise sehen Multiplikationen und Additionen so ähnlich aus wie in fast jeder anderen Programmiersprache:
$foo = $bla + $fasel;
$endbetrag = $foo * $bar;
MfG,
EKKi
[1] (lasse mich jedoch gern vom Gegenteil überzeugen)
Wo genau liegt jetzt eigentlich Dein Problem? Kannst Du die Daten, die Dein PHP-Skript vom HTML-Formular geschickt bekommt, nicht verarbeiten? Weißt Du nicht, wie Du die Verarbeitung zu programmieren hast? Dann solltest Du Dir vielleicht die Grundlagen von PHP zu Gemüte führen.
Hallo,
mir ist es klar, das mein Formular aus html + php bestehen muß und an eine cgi Schnittstelle die Daten übermittelt.
Kunde trägt ein:
Stück Bestellnummer Preis
2 49494 20
Ein Stück kostet 10 Euro er hat 2 bestellt also 20 Euro.
So er ist über 15 Euro, also werden ihm nochmal 5% abgezogen.
Also 20 Euro - 5% = 19€
Unten soll er noch seine Adressdaten eingeben, diese sollen geprüft werden auf Korrekte eingabe und dann wird das ganze an eine cgi Schnittstelle übermittelt, die es dann per Mail schickt.
Mahlzeit,
mir ist es klar, das mein Formular aus html + php bestehen muß und an eine cgi Schnittstelle die Daten übermittelt.
Jein. Ein Formular besteht nur aus HTML. Ziel eines Formulars kann natürlich ein PHP-Skript sein. Das verarbeitet dann die übergebenen Daten (berechnet z.B. den Preis, zieht Rabatt ab und schickt eine Email) und gibt anschließend eine Ausgabe zurück - und das kann dann wieder HTML sein.
Vielleicht ist für Dich das Thema Affenformular ganz interessant?
Kunde trägt ein:
Stück Bestellnummer Preis
2 49494 20
Ein Stück kostet 10 Euro er hat 2 bestellt also 20 Euro.
So er ist über 15 Euro, also werden ihm nochmal 5% abgezogen.Also 20 Euro - 5% = 19€
Wenn Du also genau weißt, was Du willst und das auch darstellen kannst - was GENAU ist Dein Problem? Dass Du nicht weißt, wie Du mit PHP rechnen kannst? Dass Du nicht weißt, wie Du das Ergebnis verschicken sollst?
Bitte schildere Dein Problem genauer - es kann hier keiner in Deinen Kopf schauen oder Deine Gedanken lesen und Glaskugeln sind auch nicht allzu verbreitet ...
Unten soll er noch seine Adressdaten eingeben, diese sollen geprüft werden auf Korrekte eingabe und dann wird das ganze an eine cgi Schnittstelle übermittelt, die es dann per Mail schickt.
Dann gestalte das Formular entsprechend, gib als Ziel ein PHP-Skript an und lass dieses dann genau die Rechnungen und den Mailversand erledigen (letzteres hast Du ja sogar schon, wenn ich mich recht erinnere).
MfG,
EKKi
Mahlzeit,
Narf! Der Link sollte natürlich so aussehen: Affenformular
MfG,
EKKi
Mahlzeit,
Danke.
Habe glaube ich mittlerweile langsam die Lösung:
Schritt eins: Erstellen der Tabelle
Schritt zwei: html Befehle für Tabelle
Schritt drei: Kalkulieren der in html vorhandenen Variablen
Schritt vier: Prüfen ob Betrag über gewisser Höhe ist
Schritt fünf: Das ganze an die cgi-Schnittstelle die 1&1 zur Verfügung steht weiterleiten, dort kommt Sie als Mail an.
Vielen Dank soweit.
Hier mein erster Quellcode:
<table border="1">
<tr>
<th>Größe</th>
<th>Stück</th>
<th></th>
<th>Euro</th>
<th>
</tr>
<tr>
<td>13x18</td>
<td><select size=1
name="13x18nr.1"><option>0<option>1<option>2<option>3<option>4<option>5<option>6<option>7<option>8<option>9</select></td>
<td><input name="13x18nr1-nummer" size=8 maxlenght=8></td>
<td>
<?php
$a = 13x18nr.1 * 5
echo $a;
?>
Mahlzeit,
Habe glaube ich mittlerweile langsam die Lösung:
Ich glaube eher nicht. Mir scheint, Du hast wirklich prinzipielle und strukturelle Verständnisprobleme. Bitte eigne Dir die Grundlagen von HTTP, HTML und PHP an.
Schritt eins: Erstellen der Tabelle
Schritt zwei: html Befehle für Tabelle
Es gibt in HTML keine Befehle. Du kannst eine HTML-Seite erstellen, in der eine Tabelle vorkommt, das ist richtig.
Schritt drei: Kalkulieren der in html vorhandenen Variablen
Es gibt in HTML keine Variablen. Ich wiederhole mich zum zweiten Mal: HTML ist keine Programmiersprache.
Schritt vier: Prüfen ob Betrag über gewisser Höhe ist
Was mit PHP ohne weiteres möglich ist:
if ($betrag > $gewisse_hoehe) {
tue_dieses();
tue_jenes();
}
Schritt fünf: Das ganze an die cgi-Schnittstelle die 1&1 zur Verfügung steht weiterleiten, dort kommt Sie als Mail an.
Was ist das für eine CGI-Schnittstelle (Nicht jeder hier ist Kunde bei 1&1 und/oder kennt die dort vorhandenen Funktionalitäten!)? Und wieso kommen sie dort als Mail an? Normalerweise bekommen CGI-Skripte Parameter vom Webserver zur Verfügung gestellt und verarbeiten diese dann auf irgendeine Art und Weise. Als ERGEBNIS dieser Verarbeitung kann dann in der Tat eine Mail verschickt werden.
name="13x18nr.1"><option>0<option>1<option>2<option>3<option>4<option>5<option>6<option>7<option>8<option>9</select></td>
Hier fehlen die schließenden <http://de.selfhtml.org/html/formulare/auswahl.htm#listen@title=</option>>-Tags. Bitte validiere Deinen HTML-Code.
<?php
$a = 13x18nr.1 * 5
"13x18nr1." ist AFAIK kein gültiger Variablenname. Abgesehen davon: wo genau weist Du Deiner "Variablen" einen Wert zu?
PHP-Code wird vom Webserver ausgeführt (s.o. "Grundlagen von PHP") - der Browser bekommt davon nichts zu sehen. Insbesondere könnte er, selbst wenn er ihn bekäme, damit nichts anfangen.
MfG,
EKKi
Was ist das für eine CGI-Schnittstelle (Nicht jeder hier ist Kunde bei 1&1 und/oder kennt die dort vorhandenen Funktionalitäten!)? Und wieso kommen sie dort als Mail an? Normalerweise bekommen CGI-Skripte Parameter vom Webserver zur Verfügung gestellt und verarbeiten diese dann auf irgendeine Art und Weise. Als ERGEBNIS dieser Verarbeitung kann dann in der Tat eine Mail verschickt werden.
Ich vermute das er sowas ähnliches meint.
Er schickt wohl Daten an dieses "CGI-Skript" und dieses Skript schickt ihm eine Mail.
Die andere Möglichkeit nutzt man heutzutage nicht mehr, das Mails direkt per Mail weitergeleitet werden.
Hier mein erster Quellcode:
»
Und was macht dein Quellcode genau?
Bei mir bringt er Fehlermeldungen.
Hallo Heiko,
ich möchte ein einfaches Formular gestalten mit folgenden Inhalten:
Bestellnummer 1: | Anzahl | = Preis
Bestellnummer 2: | Anzahl | = Preis
Am Ende soll der Preis automatisch berechnet werden
Wenn der Preis über 20 Euro ist sollen 20% abgezogen werden.
Und die Adresse soll eingegeben werden.
Das ganze wird verschickt über dieses Script: [...]
Mein Problem ist folgendes:
- Die Berechnung habe ich manuell über Javascript hinbekommen
- Die Prüfung bekomme ich auch hin (ob Daten vorhanden sind)
- Wie kann ich den berechneten Wert prüfen ob er höher als 20€ ist.
Du vermischst Javascript und PHP. Wenn ich es richtig verstehe, möchtest du, dass eine Kunde das Formular ausfüllt und gleich in einem weiteren Feld der Gesamtbetrag zusammengerechnet wird. Du kannst dies in Javascript genauso machen, wie du die Formularfelder prüfst. Entweder über einen Button, der bei onClick die entsprechenden Felder addiert und bei einem Wert höher 20 wieder 5% abzieht oder du kannst auch einen anderen Eventhandler benutzen.
Aber eigentlich ist das nicht sinnvoll. Sicherer und logischer (weil es auch mit abgeschalteten Javascript funktioniert) ist, dass du alles über PHP machst. D.h. dein Formular nimmt erstmal nur Daten auf und sendet diese nach dem Bestätigen (ohne Javascriptprüfungen) an eine z.B. check.php. Diese prüft nun auf Vorhandensein der Daten, rechnet die Beträge zusammmen und prüft ggf. Adressdaten. Wenn alles ok ist, zeigst du damit einfach eine Bestätigungseite an, wo dem Kunden nochmal explizit mitgeteilt wird, welche Daten er eingegeben hat, wie sich nun die Gesamtsumme zusammensetzt, welche Positionen er bestellt hat. Klickt er ok, geht es zur z.B. mail.php und diese versendet dann die Daten. Im Fehlerfalle schickst du ihn zurück zum Ausgangsformular und zeigst gleich noch die Fehler an, die du gefunden hast.
Das ist natürlich nicht nur mit einem Skript zu lösen, welches du kopieren kannst. Dazu musst du selbst aktiv werden.
Hilfreich ist bestimmt Wissen über:
[Link:http://de3.php.net/manual/de/ref.session.php@title=- Sessions]
[Link:http://de3.php.net/manual/de/ref.strings.php@title=- Stringfunktionen]
Du kannst dir die Funktionalität natürlich auch kaufen oder ggf. auch kostenlos finden, aber dann müsstest du Wissen im Einstellen und Konfigurieren solcher Skripte haben und wie du diese in deine bestehenden Sourcen einbindest. EIn Beispiel ist http://um-fritz.de/artikel
ciao
romy
Hallo,
ich möchte ein einfaches Formular gestalten mit folgenden Inhalten:Bestellnummer 1: | Anzahl | = Preis
Bestellnummer 2: | Anzahl | = PreisSo könnte jetzt z.B. nur Bestellnummer 1 ausgefüllt werden.
Was möchtest du genau machen?
Du hast also ein Formular in dem Du Werte einträgst?
z.B. 4 Stück und willst das das Formular etwas berechnet?
Oder wie genau?