Warenkorb - Artikelanzahl ändern

  • Themenstarter Themenstarter grandmasterbibo
  • Beginndatum Beginndatum
G

grandmasterbibo

Hallo,

ich bin dabei einen Warenkorb zu erstellen und versuche nun die Möglichkeit einzubauen die Artikelanzahl nachträglich zu ändern bzw. wenn bei Artikelanzahl eine 0 eigetragen wird, den Artikel aus dem Warenkorb zu löschen.
aber irgendwie klappt das nicht - die Artikelanzahl bleibt immer gleich.
PHP:
$auflistung=mysql_query("SELECT * FROM warenkorb where session_id='$session_id'") or die("Error".mysql_error());
$n=0;
while ($zeile=mysql_fetch_array($auflistung))
 {
 $produkt_id=$zeile[1];
 $korb_name=$zeile[3];
 $menge=$zeile[4];
 $gesamtpreis=$zeile[5];
 $einzelpreis=$zeile[6];
 $artikelnummer=$zeile[7];
 
echo ("</tr>
<tr>
    <td><form action='shop.php?anzeige_korb=1' method='post' name=korb[$n]>
    <input size=3 name=mengenfeld[$n] value=".$menge.">
	<input type=hidden name=update value=1>
	<input type=hidden name=produkt_id[$n] value=".$produkt_id.">
	<input type=hidden name=preis[$n] value=".$gesamtpreis."></td>
    <td>".$korb_name."</td>
    <td>".$artikelnummer."</td>
    <td>".$einzelpreis."</td>
    <td>".$gesamtpreis."</td>
</tr>
<tr>");
$n=$n+1;
}

//wenn bei Anzahl 0 eingetragen wird Artikel löschen
if ($update==1 AND $mengenfeld[$n]==0)
{
mysql_query("DELETE FROM warenkorb where produkt_id='$produkt_id[$n]' AND session_id='$session_id'");
}

//wenn bei Anzahl keine 0 eingetragen wird Artikel updaten
if ($update==1 AND $mengenfeld[$n]!=0)
{
mysql_query("UPDATE warenkorb SET menge ='$mengenfeld[$n]' where produkt_id='$produkt_id[$n]' AND session_id='$session_id'");
}
Vielen Dank für Eure Hilfe.
 
Ich bin mir nicht sicher aber versuch mal anstatt deines
Code:
mysql_query("UPDATE warenkorb SET menge ='$mengenfeld[$n]' where produkt_id='$produkt_id[$n]' AND session_id='$session_id'");

mal das hier

Code:
mysql_query("UPDATE warenkorb SET menge ='".$mengenfeld[$n]."' where produkt_id='$produkt_id[$n]' AND session_id='$session_id'");
 
</form> Tag und Submitbutton sind vorhanden.
Um die Sache nicht noch unübersichtlicher zu machen wollte ich hier nur den "problematischen" Teil posten und habe sie weggelassen.
Die Sache mit register_globals sollte ich mir wohl mal in einer ruhigen Minute genauer anschauen (bin noch nicht sehr lange dabei).
Aber erstmal wollte ich die Sache funktionsfähig bekommen, und dann noch mal nach Sicherheitsaspekten überarbeiten.

zu ExtremeSnail:

Dein Vorschlag hat leider auch keine Veränderungen mit sich gebracht.
Aber trotzdem Danke für Deine Antwort
 
Re: Re: Warenkorb - Artikelanzahl ändern

Hilft das weiter?

Code:
mysql_query("UPDATE warenkorb SET menge ='".$_POST['mengenfeld[$n]']."' `WHERE produkt_id='".$_POST['produkt_id[$n]']."' AND session_id='".$_POST['session_id']."'");

Ich weiß es leider auch nciht daher kann cih nur hier anbieten was ich einfach mal versuchen würde.
 
Original geschrieben von grandmasterbibo
</form> Tag und Submitbutton sind vorhanden.
Um die Sache nicht noch unübersichtlicher zu machen wollte ich hier nur den "problematischen" Teil posten und habe sie weggelassen.
Ok, dass ist sehr löblich, in Zukunft evtl. einfach ein [...] an Stellen setzen, wo Auslassungen sind ;)


Die Sache mit register_globals sollte ich mir wohl mal in einer ruhigen Minute genauer anschauen (bin noch nicht sehr lange dabei).
Aber erstmal wollte ich die Sache funktionsfähig bekommen, und dann noch mal nach Sicherheitsaspekten überarbeiten.
Dann nimm dir die ruhige Minute genau jetzt, denn ohne das Wissen dazu wirst du es wahrscheinlich nicht "funktionsfähig bekommen".
 
Hallo Tim,

ich habe mir die Erläuterungen zu register_globals durchgelesen, und kam in etwa zu demselben Ergebnis wie ExtremeSnail.
Die While Schleife spar ich mir jetzt mal, da ich daran nichts geändert habe.
PHP:
if (!empty($_POST['$update']))
{
mysql_query("UPDATE warenkorb SET menge ='".$_POST['$mengenfeld[$n]']." where produkt_id='".$_POST['$produkt_id[$n]']."' AND session_id='".$session_id."'");
}
(+ natürlich die DELETE mysql_query in selber Form, aber auch die lass ich an dieser Stelle mal weg).

Wie ich schon befürchtet hatte funktioniert auch das nicht.
Hättest Du noch irgendwelche Ideen ?

Und noch eine grundsätzliche Frage:
Wo wäre diese if-Abfrage am besten aufgehoben -
vor der der while-Schleife, nach der while-Schleife, mittendrin oder ist das völlig egal?

Gruss
Bibo
 
Wie wär's denn wenn Du die $ in den eckigen Klammern weglässt?

Also:
PHP:
 if (!empty($_POST['update'])) 
{ 
mysql_query("UPDATE warenkorb SET menge ='".$_POST['mengenfeld[$n]']." where produkt_id='".$_POST['produkt_id[$n]']."' AND session_id='".$session_id."'"); 
}
 
Ich hab mir das Thema hier jetzt nicht genau durchgelesen, aber mir fällt bei den SQL-Anweisung folgendes auf:

PHP:
"...".$_POST['produkt_id[$n]']."...";

... wird schon an sich nicht laufen da Einträge innerhalb von ' ... ' nicht geparsed werden, oder seh ich das falsch? Mir ist so, als hätte ich das so hier schon des öfteren gelesen.
Vielleicht funktioniert es ja wenn du die Variablen in etwa so änderst:
PHP:
"...".$_POST[$produkt_id[$n]]."...";
 
Zurück