Update Funktion im Warenkorb (ausgabe durch Schleife)
Heiner
- php
Hallo,
ich lasse mir meinen Warenkorb über eine while Schleife ausgeben.
Nun möchte ich eine Update-Funktion einbauen, damit sich die Anzahl der zu bestellenden Artikel ändern lässt.
Das mache ich mit einem Formular.
Mein Problem ist, das immer nur der letzte Artikel angesprochen wird und nicht der tatsächliche bei dem ich mich befinde.
Das liegt wohl an der Schleife.
Habe schon darüber nachgedacht einen <a href> einzubauen, doch leider kann ich ja dann den in das Input Feld geschriebenen Wert
nicht mitübergeben...
Weiss jemand wie ich dieses Problem lösen kann?
Bin echt am verzweifeln.
Der Gruß
Hallo Heiner,
Das mache ich mit einem Formular.
Das liegt wohl an der Schleife.
jein, das liegt daran dass Dein Formularfeld immer den gleichen Namen hat und er demzufolge alle übermittelt und dann logischerweise die letzte Überschreibung gültig ist.
Die Lösung ist also entweder ein array
name = "blabla[]"
oder Du baust Dir selbst einen index dran
name = "blabla <? =$i?>"
Habe schon darüber nachgedacht einen <a href> einzubauen, doch leider kann ich ja dann den in das Input Feld geschriebenen Wert
nicht mitübergeben...
könntest Du schon, müsstest es aber mit Javascript machen und dass ist IMHO keine gute Lösung.
ciao
romy
Hallo Romy,
vielen Dank für deine Antwort. Ich blicke nicht so ganz wie du das mit dem Array meinst...
Hier mal mein ein Teil von meiner Schleife. Wie muss ich das da einbauen???
--------------------------------------------------------------------
$sql = "SELECT * FROM warenkorb WHERE BID='$bid'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
<tr>
<td class="td">
<form action="'.$PHP_SELF.'" method="GET" name="form1">
<input type="text" value="'.$row['anzahl'].'" name="anzahl">
<input type=image src="aktualisieren.gif" alt="Akutalisieren">
<input type="hidden" value="'.$row['artikelnr'].'" name="artikelnr">
<input type="hidden" value="'.$row['BID'].'" name="bid">
<input type="hidden" value="1" name="send"></td>
</tr></form>
}
--------------------------------------------------------------------
Viele Grüsse
Heiner
Hallo Heiner,
»»mysql_query($sql);
while($row = mysql_fetch_array($result)){
<tr>
<td class="td">
<form action="'.$PHP_SELF.'" method="GET" name="form1">
<input type="text" value="'.$row['anzahl'].'" name="anzahl[]">
^^^^^^^^^^^^^^^^^^^^
<input type=image src="aktualisieren.gif" alt="Akutalisieren">
<input type="hidden" value="'.$row['artikelnr'].'" name="artikelnr[]">
^^^^^^^^^^^^^^^^^^^^^^^
<input type="hidden" value="'.$row['BID'].'" name="bid[]">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<input type="hidden" value="1" name="send"></td>
</tr></form>
}
auf der Auswertungsseite kannst Du dann das array direkt ansprechen
d.h Du prüfst , welches gesetzt ist und sprichst es dann mit $array[$i]
oder so ähnlich an
ciao
romy
Hallo Romy,
vielen Dank nochmal für deine Antwort. Leider
raff ich´s immer noch nicht so ganz, aber egal...
Viele Grüsse
Heiner
Hallo Heiner,
vielen Dank nochmal für deine Antwort. Leider
raff ich´s immer noch nicht so ganz, aber egal...
sorry, hab nur theoretisches Wissen, hab es selbst auf diese Weise noch nie gelöst.
Aber Fakt ist: durch name="name[]" erzeugst Du pro Schleifendurchlauf ein array mit den verschiedenen Inhalten name[1] = "Bier" ; name[2] = "Wein"
usw.
Problemstellung: auf der Auswertenseite musst Du jetzt das Richtige ansprechen.
ich kenne noch keine wirklich effiziente Lösung.
(mit Javascript wäre alles kein Problem, man kann sich aber nicht darauf verlassen, dass dies auch eingeschaltet ist)
Vielleicht solltest Du die ganze Problematik anders angehen
zB. viele kleine Formen bauen, dann wird nur das geänderte abgeschickt
-> ist glaube ich nicht effizient
oder lass den User, wenn er was ändern will dies nicht direkt sondern auf einer neuen Seite machen. ZB. er klickt auf bearbeiten und kommt auf eine Seite mit Textfeldern, die kann er ändern und das ganze abschicken.
es gint sicherlich auch noch andere Möglichkeiten
hih
ciao
romy
Vielen vielen Dank für die nützlichen Tips Romy :)
ih!
Liebe Grüsse
Heiner