Du musst die aktuelle Zeile via Hiddenfield oder so mit übergeben und diese dann halt löschen aus den Arrays...
if (isset($_POST['reset'])) {
//Zeile in allen Arrays löschen mit dem übergebenen $n
}
Hallo miteinander!
Ich bin sicher, Ihr könnt mir wieder mal helfen.
Ich habe einen Shop erstellt und beim Warenkorb ein kleines Problem: die Artikel werden auf einer vorhergehenden Seite ausgesucht und per Session auf diese Seite (Warenkorb.php) übertragen. Hier klappt bisher alles, die Artikel werden korrekt dargestellt, so weit ist alles okay.
Jetzt möchte ich die Möglichkeit einbauen, einzelne Artikel wieder zu löschen, also einzelne Zeilen aus der HTML-Tabelle komplett zu leeren. Dafür habe ich ein Formular mit einem Löschen-Button eingebaut. Jetzt habe ich eine völlige Leere im Gehirn und weiß nicht weiter, wie muss ich die Löschen-Funktion jetzt programmieren?
Hier das Skript mit dem Löschen-Button:
<?php
session_start();
$Menge = explode("#", $_SESSION['Menge']);
$ArtikelNr = explode("#", $_SESSION['ArtikelNr']);
$Artikel = explode("#", $_SESSION['Artikel']);
$Preis1 = explode("#", $_SESSION['Preis1']);
$max = count($Artikel);
$n = 1;
$Summe = 0;
while ($n < $max) {
$Gesamt = $Menge[$n] * $Preis1[$n];
echo "<tr><form action='Warenkorb.php' method='post'>";
echo "<td>", $Menge[$n], "</td>";
echo "<td>", $ArtikelNr[$n], "</td>";
echo "<td>", $Artikel[$n], "</td>";
echo "<td>", $Preis1[$n], "</td>";
echo "<td>", number_format($Gesamt, 2, ",", "."), "</td>";
echo "<td><input name='submit' type='reset' value='Posten löschen'></td>";
echo "</form></tr>";
$Summe = $Summe + $Gesamt;
$n++;
}
echo "<tr>";
echo "<td> </td>";
echo "<td> </td>";
echo "<td> Summe (inkl. MwSt) </td>";
echo "<td>", number_format($Summe, 2, ",", "."), "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
?>
Ist wahrscheinlich wieder nur eine Kleinigkeit, aber wie gesagt, mein Gehirn ist leer... Ich hoffe, Ihr könnt mir helfen.
Danke und Gruß
Kero14
Du musst die aktuelle Zeile via Hiddenfield oder so mit übergeben und diese dann halt löschen aus den Arrays...
if (isset($_POST['reset'])) {
//Zeile in allen Arrays löschen mit dem übergebenen $n
}
Hallo nochmal,
ich stehe immer noch auf der Leitung...
Habe jetzt noch ein "unset" mit eingebaut, jetzt werden aber immer ALLE Zeilen gelöscht, nicht nur die eine gewünschte.
Hier nochmal mein Skript, wie es jetzt aussieht:
<?php
session_start();
$Menge = explode("#", $_SESSION['Menge']);
$ArtikelNr = explode("#", $_SESSION['ArtikelNr']);
$Artikel = explode("#", $_SESSION['Artikel']);
$Preis1 = explode("#", $_SESSION['Preis1']);
$max = count($Artikel);
$n = 1;
$Summe = 0;
while ($n < $max) {
$Gesamt = $Menge[$n] * $Preis1[$n];
if (isset($_POST['submit'])) {
unset ($Menge[$n],$ArtikelNr[$n],$Artikel[$n],$Preis1[$n]);
}
echo "<tr><form action='step05.php' method='post'>";
echo "<td>", $Menge[$n],"</td>";
echo "<td>", $ArtikelNr[$n], "</td>";
echo "<td>", $Artikel[$n], "</td>";
echo "<td>", $Preis1[$n], "</td>";
echo "<td>", number_format($Gesamt, 2, ",", "."), "</td>";
echo "<td><input name='submit' type='submit' value='Posten löschen'></td>";
echo "</form></tr>";
$Summe = $Summe + $Gesamt;
$n++;
}
echo "<tr>";
echo "<td> </td>";
echo "<td> </td>";
echo "<td> Summe (inkl. MwSt) </td>";
echo "<td>", number_format($Summe, 2, ",", "."), "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
?>
Muss die if...unset-Schleife woanders hin? Habe schon einiges ausprobiert, aber nur an dieser Stelle bekomme ich überhaupt eine Reaktion.
Hilfe!!!
Achtung - Du baust bei jedem Artikel den selben submitbutton.
Definier ihn so:
echo "<td><input name='submit".$n."' type='submit' value='Posten löschen'></td>";
Dann kannst Du in der Schleife abfragen
if (isset($_POST['submit'.$n])) {
unset ($Menge[$n],$ArtikelNr[$n],$Artikel[$n],$Preis1[$n]);
}
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Moin miteinander,
vielen Dank, damit bin ich der Lösung einen Schritt näher... glaube ich...
Jetzt passiert aber folgendes: wenn ich z.B. zwei Artikel im Warenkorb habe, also zwei Zeilen in meiner HTML-Tabelle gefüllt habe und eine davon lösche: alles super, Inhalt ist weg!
Lösche ich nun auch noch den zweiten Artikel / die zweite Zeile, verschwindet der auch... aber der erste Artikel kommt zurück!?!
Ich kann also immer nur einen Artikel löschen, lösche ich den nächsten, sind alle anderen wieder da.
Langsam verzweifle ich, das kann doch nicht so schwer sein!
Weiß jemand, wie ich das Problem lösen kann?
Gruß
Kero
das liegt wohl an folgendem:
Du hast ja kein echtes Array, sondern einen String getrennt mit #
Für die Form explodest Du das in ein Array.
Nach dem Löschvorgang musst Du das Array wieder zu dem String imploden, sonst änderst Du ja nur was an Deinem temporären Array![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Ähm, okay... auf was habe ich mich da eingelassen???
Erstmal danke für Deine schnelle Antwort, ich schaue mal weiter und gucke, ob ich was zustande bringe. Und melde mich wahrscheinlich wieder...
Gruß
Kerstin
einfach am Ende einfügen:
$_SESSION['Menge']=implode("#",$Menge );
usw.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)