

Anmelde-Formular

Tobias 23. November 2004, 10:08
Liebe Mithalmis,
mein Problem ist mir ja ein bisschen peinlich, aber ich habe nach stundenlangem knöstern nichts gefunden, was mir absolutem PHP-Greenhorn helfen kann.
Ich habe ein Formular, in dem man Zeitschriftenausgaben nachbestellen kann. Das funktioniert indem ich einen Input-Feld habe, in das die Anzahl der nachzubestellenen Hefte eingetragen werden kann.
Das sieht, verkürzt, so aus.:
<input type="text" size="2" maxlength="2" name="issue[1999-05]" value="0" />
<input type="text" size="2" maxlength="2" name="issue[1999-06]" value="0" />
(usw.)
Auf der folgenden Seite wird nun Ausgegeben, wie viele Exemplare der einzelnen Ausgaben ausgewählt wurden, wenn denn die Anzahl größer Null ist. Das mache ich so.:
<?
if(isset($_POST["issue"]))
{
while(list($ausgabe, $anzahl) = each($_POST["issue"]))
if($anzahl > 0)
{
echo ("$anzahl Exemplare $ausgabe".$line."<br />\n<input type=\"hidden\" name=\"issue[$ausgabe]\" value=\"$anzahl\" />\n");
}
else {
echo ("");}}
?>
Das funktioniert auch wunderbar. Nun möchte ich aber das alle $anzahl zusammengerechnet werden, damit ich dann eine Gesamtanzahl habe, die ich mit dem Preis pro nachbestellter Ausgabe multiplizieren kann. Die Frage ist wahrscheinlich saudumm, aber ich komm nicht dahinter.
Es wird Zeit, dass ich strukturiert PHP lerne und nicht weiter so eine Frickelei veranstalte.
Vielen Dank zunächst!
Gruß,
Tobias
Juggler 23. November 2004, 11:37
Hi Tobias,
du solltest IMO lernen, mit dem Manual umzugehen. Das ist nämlich ein gutes Nachschlagewerk, wenn mal eine Funktion "fehlt".
Es gibt nämlich für viele Aufgaben schon fertige Funktionen. Wie zum Beispiel für die hier geforderte Summe aller Einträge eines Arrays: array_sum()
http://de.php.net/array_sum
MfG
Juggler
Tobias 23. November 2004, 14:54
Danke, Juggler.
Ich bekomm's aber trotzdem nicht gebacken. Ich habe den oben stehenden Code-Schnipsel vor Ewigkeiten zuammengebastelt. Jetzt hab ich ihn erweitert und er funktioniert auch mit meinen neuen Anforderungen immer noch, so wie er soll.
Das Problem ist, ich habe keine Ahnung, wie ich aus dem was ich da schon habe, die $anzahl in ein Array übergebe, dass ich dessen "Inhalt" ich mit array_sum() dann berechnen kann. Alles was danach kommt (berechnung, Übergabe an Formmailer, etc.) ist wiederum wahrscheinlich kein Problem.
Ich habe bisher mich nur mit HTML und CSS beschäftigt und habe sozusagen das bisschen PHP, was ich brauche immer "geschenkt" bekommen, oder mühsam zusammen gestückelt. Insofern wäre ich froh, wenn mir einer mit meinem Problem konkret helfen könnte.
Mit dem PHP-lernen muß ich mir was einfallen lassen, mit den Büchern die ich bisher versucht habe funktioniert das nämlich bei mir nicht so wirklich. Vielleicht muss ich doch mal 'nen VHS-Kurs darin machen.
Danke & Gruß,
Tobias
Stoni 23. November 2004, 16:35
Du hast doch bereits ein Array in $_POST["issue"]. Das brauchst du nur noch zusammenrechnen:$gesamtanzahl = array_sum($_POST["issue"]);> Mit dem PHP-lernen muß ich mir was einfallen lassen, mit den Büchern die ich bisher versucht habe funktioniert das nämlich bei mir nicht so wirklich. Vielleicht muss ich doch mal 'nen VHS-Kurs darin machen.
Egal was, mach's schnell. ;-)
Pauli 23. November 2004, 17:46
> Mit dem PHP-lernen muß ich mir was einfallen lassen...
=>
http://schattenbaum.net/php/
Einmal durchackern, nicht nur lesen. Danach kommt man mit dem PHP Manual oder zur Not auch selfphp oder eine "PHP Befehlsreferenz" halbwegs weiter :-).
Bin auch noch Anfänger.
Pauli
Tobias 23. November 2004, 19:17
Danke, Stoni!
In diese Richtung hatte ich erfolglos experimentiert. Experimentiert deshalb, weil ich keine Ahnung habe und versuche mir aus dem schon gegebenen die Lösung zu erschliessen.
Aber mein Ehrgeiz ist geweckt, die Lösung ist ja eigentlich simpel und ich war zu verpeilt um sie zu erkennen. Ich wollte praktisch aus dem Array noch ein neues bilden, um das dann zu verwenden. Das ist natürlich Humbug, aber wenn man keine Ahnung hat ist es halt auch schlecht mit dem Erkennen von eigenen Denkfehlern.
Beste Voraussetzungen um anzufangen.
Danke nochmals euch dreien!
Gruß,
Tobias