 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
26.04.2008, 16:24
|
#1
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Addition dynamisch in PHP
Hallo,
wie krieg ich eine "dynamische" Addition mit PHP hin? Normalerweise hat man ja "feste" Werte zum Addieren wie $a + $b = $c.
Nun möchte ich aber z.B. die Gesamtpreise diverser Artikel in einen Gesamtbetrag zusammenfassen. Das Problem ist, dass die Gesamtpreise der einzelnen Artikel allesamt einzeln aufgeführt bzw. aufgelistet werden und zwar mit folgender Formatierung
Code:
printf($fmt6,$key,$key,$DS[1],$_SESSION[$DS[0]],$DS[2],number_format($gesamt,2,',',' '));
Die Einzeltotale der betreffenden Artikel sind in $gesamt aufgeführt. Also Artikel A = $gesamt, dann Artikel B = $gesamt usw.!
Nun listet es mir ja die verschiedenen $gesamt auf und die möchte ich nun in ein $gesamt2 zusammenfassen können. Nun hab ich keine konkrete Idee wie man dies umsetzen könnte.
Danke für jegliche Vorschläge!
|
|
|
26.04.2008, 16:50
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
$gesamt2 += $gesamt;
|
|
|
26.04.2008, 17:06
|
#3
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Danke für den Tipp, aber das geht so nicht, da man dies so verstellen muss:
$gesamt2 = $gesamt + $gesamt + $gesamt usw.
2 Artikel A sind Euro 25 ($gesamt)
3 Artikel B sind Euro 40 ($gesamt)
usw.
Alle Artikel zusammen sind Euro 65 ($gesamt2)
Jedes $gesamt ist ein separater Artikel. Das obige Beispiel soll die Problematik anzeigen. Natürlich geht das so nicht, wenn alle mit $gesamt angezeigt wird, wie jetzt. Nun stellt sich die Frage, ob man da mit dem Key der Artikel arbeiten muss?
|
|
|
26.04.2008, 22:04
|
#4
|
|
TP-Moderator
Registriert seit: Nov 2005
Ort: Köln
|
steffenk meinte (höchstwahrscheinlich  ), dass Du jedes Mal wenn Du $gesamt berechnest bzw. ausgibst, diese Zeile ausführst:
$gesamt2 += $gesamt;
So addierst Du in der Variablen $gesamt2 alle Gesamt-Werte hoch.
|
|
|
26.04.2008, 22:50
|
#5
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Wenn Du einen Warenkorb in der Session ablegst, kannst Du auch etwas in dieser Art benutzen:
PHP-Code:
<?php
session_start();
$artikel_A = 'Hose';
$artikel_B = 'Jacke';
$artikel_C = 'Hemd';
// Artikel in den Warenkorb legen
$_SESSION['warenkorb'][$artikel_A] = 12;
$_SESSION['warenkorb'][$artikel_B] = 27.95;
$_SESSION['warenkorb'][$artikel_C] = 9.50;
// Werte im Array $_SESSION['warenkorb'] addieren
// Gibt "49.45" aus
echo array_sum( $_SESSION['warenkorb'] );
?>
Das hat den Vorteil, dass Werte nicht vermischt werden und man so bequem einzelne Posten wieder aus dem Warenkorb entfernen kann, was sich direkt auf den Gesamtpreis auswirkt.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.
|
|
|
28.04.2008, 20:15
|
#6
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Hallo steffenk, Deine Version klappt gut, ausser nur, dass es mir nur die letzte aufgeführte Artikelzeile addiert bzw. aufführt, aber die restlichen anderen Artikelzeilen nicht hinzufügt. Ich habs folgendermassen mal eingebaut:
Codeschnipsel:
Code:
$ges +=$gesamt;
printf($fmt7,$ges);
Wie krieg ich das noch hin, dass es mir alle Gesamttotale dieser html-Tabelle zusammenzählt?
Wäre da so ein Konstrukt in Richtung wie folgt denkbar:
$ges = 0;
$ges += anzahl * einzelpreis;
Oder gibt's da noch eine bessere Lösung?
|
|
|
28.04.2008, 20:43
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
was soll ich sagen - die Schnipsel die Du zeigst lassen nicht darauf schliessen wie Du Deine Schleife gestaltet hast.
Ausserdem empfehle ich Dir aussagekräftige Variablennamen zu benutzen. Ich bekomme das Grausen bei Code, wo Vars wie $fmt, $v, $sK, $vlTp etc vorkommen.
|
|
|
29.04.2008, 14:21
|
#8
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Sorry steffenk, hier mal den ganzen Codeabschnitt:
Code:
<?php
$fp = fopen("produkte.csv","r");
$sep = ";";
$fmt1 = "<tr align='left'><th>Artikelnummer</th><th>Bezeichnung</th><th>Anzahl</th><th>Einzelpreis</th><th>Gesamtpreis</th><th> </th><th> </th></tr>";
$fmt6 = "<form action='korb_1.php' method='get'><tr align='left'><td><input type='hidden' name='id' value='%s'>%s</td><td>%s</td><td><input type='text' name='anzahl' value='%s' size='4'></td><td style='text-align:left'>%s</td><td style='text-align:right'>%s</td><td><input type='submit' name='change' value='Anzahl ändern'></td><td><input type='submit' name='delete' value='löschen'></td></tr></form>";
$fmt7 = "<tr align='left'><th> </th><th> </th><th> </th><th>Gesamtbetrag:</th><th style='text-align:right'>%s</th><th> </th><th> </th></tr>";
$zeile = fgets($fp,100);
echo "<table id='katalog' border='0'>";
printf($fmt1); //Überschriften der Rubriken
while($zeile = fgets($fp,1024)){
$DS = explode($sep,$zeile);
$key = substr($zeile,0,strpos($zeile,$sep));//Key holen
if(!isset($_SESSION[$DS[0]])) continue;
$gesamt = $_SESSION[$DS[0]] * str_replace(',','.',$DS[2]);//Anzahl mal Einzelpreis
printf($fmt6,$key,$key,$DS[1],$_SESSION[$DS[0]],$DS[2],number_format($gesamt,2,',',' '));
}
$ges = 0;
while($ges)
{
$ges = $_SESSION[$DS[0]] * str_replace(',','.',$DS[2]);
$ges +=$gesamt;
printf($fmt7,number_format($ges,2,',',' '));//Tabellenausgabe
}
echo "</table>";
fclose($fp);
?>
Alles läuft prima, ausser nun mit der while-Schleife, mit welcher ich dann versuchen möchte alle Gesamtpreise in ein Gesamttotal zu addieren. Es betrifft nun einzig folgende while-Schleife:
Code:
$ges = 0;
while($ges)
{
$ges = $_SESSION[$DS[0]] * str_replace(',','.',$DS[2]);
$ges +=$gesamt;
printf($fmt7,number_format($ges,2,',',' '));//Tabellenausgabe
}
Da bin ich mir nicht sicher, wie ich nun den richtigen Ansatz anpacken muss. 
|
|
|
29.04.2008, 14:35
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Du benutzt auch 2mal die selbe Variable
PHP-Code:
$ges = 0; while($ges) { $gesamt = $_SESSION[$DS[0]] * str_replace(',','.',$DS[2]); $ges +=$gesamt; printf($fmt7,number_format($gesamt,2,',',' '));//Tabellenausgabe } echo 'Total: '.number_format($ges,2,',',' ');
wobei das Zweifelhaft ist: while($ges) {..}
|
|
|
04.05.2008, 18:56
|
#10
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
ich hab nun versucht in der bestehenden Schleife das Gesamttotal aller $gesamt in $ges einzubauen. Wobei ich nun nicht sicher bin, ob man das so "einfach" lösen kann. Hier mal das neue Codeschnipsel:
Code:
echo "<table id='katalog' border='0'>";
printf($fmt1); //Überschriften der Rubriken
while($zeile = fgets($fp,1024)){
$DS = explode($sep,$zeile);
$key = substr($zeile,0,strpos($zeile,$sep));//Key holen
if(!isset($_SESSION[$DS[0]])) continue;
$gesamt = $_SESSION[$DS[0]] * str_replace(',','.',$DS[2]);//Anzahl mal Einzelpreis
printf($fmt6,$key,$key,$DS[1],$_SESSION[$DS[0]],$DS[2],number_format($gesamt,2,',',' '));
$ges = 0;
$ges +=$gesamt;
}
printf($fmt7,number_format($ges,2,',',' '));//Tabellenausgabe
echo "</table>";
Ich möchte die Variable $ges, welche ich mit 0 definiert habe, mit sämtlichen $gesamt auffüllen bzw. aufaddieren, die weiter oben im Code generiert werden. Der ganze Code läuft prima, ausser nun dieser Teil
$ges = 0;
$ges +=$gesamt;
oder müsste man da mit einer zusätzlichen Schleife arbeiten? Mit einer for-Schleife hab ich es auch schon probiert, ging aber nicht oder ich hab was verbockt.
|
|
|
04.05.2008, 19:26
|
#11
|
|
TP-Moderator
Registriert seit: Nov 2005
Ort: Köln
|
Durch $ges = 0; setzt Du die Variable in jedem Schleifendurchlauf wieder auf 0 zurück. Dieser Teil sollte also außerhalb der Schleife stattfinden, wenn ich Dich richtig verstanden habe
|
|
|
04.05.2008, 20:13
|
#12
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Das $ges sollte bei jedem Durchlauf alle $gesamt addieren und schliesslich ausgeben. Das wäre bzw. sollte der Sinn meines Vorhabens sein bzw. das $ges passt sich jedem Durchlauf an und zeigt jeweils das Total aller $gesamt an.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:21 Uhr.
|
 |