Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Löschen eines Datensatzes im Warenkorb

Sali miteinander
Ich bin ein PHP-Neuling und habe ein Problem beim Löschen von Datensätzen im Warenkorb meines Shop-Systems.
Mein Shop ist so aufgebaut, das die Produkte die bestellt werden möchten in einer Datenbank warenkorb gespeichert werden. Will der User seinen Warenkorb anschauen so werden die Datensätze mit Hilfe der Sessionid ausgelesen.
Nun zu meiner Frage:
Wie kann ich das machen, dass wenn der User ein Produkt aus seinem Warenkorb löschen möchte?

Hier gehts zum Orginal Eintrag "Löschen eines Datensatzes im Warenkorb" im Forum

Antworten

wenn du einen Datensatz einfügen kannst, wo liegt dann das Problem beim Löschen? Verstehe die Problematik nicht!

*** Nobody ***


2.

Sali Nobody
Erst mal vielen Dank für deine Hilfe.
Nachdem der User auf Warenkorb gedrückt bekommt er seine Bestellliste. Jetzt möchte ich für jeden Datensatz einen Delete-Knopf. Wie mache ich dem Delete-Knopf klar was
in seinem Datensatz steht. Der Datensatz sieht ja immer wieder anders aus. Ich kann ja nicht Fix etwas eingeben.
Ich hoffe ich konnte Dir mein Problem etwas besser erkären


3.

Sali Nobody
Erst mal vielen Dank für deine Hilfe.
Nachdem der User auf Warenkorb gedrückt bekommt er seine Bestellliste. Jetzt möchte ich für jeden Datensatz einen Delete-Knopf. Wie mache ich dem Delete-Knopf klar was
in seinem Datensatz steht. Der Datensatz sieht ja immer wieder anders aus. Ich kann ja nicht Fix etwas eingeben.
Ich hoffe ich konnte Dir mein Problem etwas besser erkären


4.

dann folgender Tipp:

Du hast doch bestimmt eine eindeutige ID zu jedem Eintrag (Bestellnummer, etc). Dann kann Du doch an die URL einfach diese ID dranhängen. Beispiel:

<a href="delete.php?id=<? echo $bestellnummer; ?>"Löschen</a>

*** Nobody ***


5.

Die Idee mit der Bestellnr. ist gut. Leider aber habe ich immer noch ein Problem mit der übergabe der richtigen Bestellnr. bei mir artikelnr.
Um das Problem besser erklären zu können hier ein Teil des Skrips.
$session = session_id();
$query ="select artikelnr, name, groesse, franken, euro, anzahl, farben from warenkorb where sessionid = '".$session."'";
$ausgabe = mysql_query($query) or die (mysql_error());
while (list($artikelnr,$name,$groesse,$anzahl,$farben,$franken,$euro,) = mysql_fetch_row($ausgabe))
{
echo '<tr align=center>';
{
echo '<td>';
echo "$artikelnr";
echo '</td>';
echo '<td>';
echo "$name";
echo '</td>';
echo '<td>';
echo "$groesse";
echo '</td>';
echo '<td>';
echo "$franken";
echo '</td>';
echo '<td>';
echo "$euro";
echo '</td>';
echo '<td>';
echo "$anzahl";
echo '</td>';
echo '<td>';
echo "$farben";
echo '</td>';
echo '<td>';
echo '<a href="delete.php">Löschen</a>';
echo '</td>';
}
Das Problem ist doch jetzt, dass in $artikelnr mehrere Werte gespeichert sind wenn der User mehrere Produkte bestellen möchte.


6.

ich denke mal dass man es wie folgt machen kann, da pro user nur einmal der gleiche artikel im warenkorb ist:

delete from warenkorb where artikelnr = $artikelnr and sessionid = $sessionid

dann löscht es aus der datenbank die artikelnummer dieser sessionid. ich denke dass dies eindeutig ist, denn wie gesagt denke ich nicht, dass es möglich ist, den gleichen artikel 2 mal drin zu haben!


7.

sieht so aus:

echo '<a href="delete.php?artikelnr=$artikelnr">Löschen</a>';

*** Nobody ***


8.

Sali Nobody
Ich habe wie oben beschrieben den Link so eingefügt. Leider hat sich nachdem ich den Delete-Knopf gedrückt habe nichts getan. Aus diesem Grund wollte ich mir $aritkelnr mit echo ausgeben. Als Resultat bekam ich $artikelnr.
Vielleicht liegt es auch ein meiner delete.php. Ich hatte aber das gefühl das sie nicht schlecht aussieht aber auf das kann man sich auch nicht verlassen. Darum hier mein Skript mit dem echo "$artikelnr"; eigentlich include("warenkorb.php").
<?php
include("dbconnect.php");
@session_start();

$sessionid=session_id();
mysql_query("delete from warenkorb where sessionid = '".$sessionid."' and artikelnr ='".$artikelnr."'")
or die (mysql_error());
echo "$artikelnr";

Ich hoffe ich bin nicht total auf dem Holzweg.


9.

dein query ist nicht ganz richtig, da mit den ersten " das query beendet wird! versuchs mal damit:

mysql_query("delete from warenkorb where sessionid = '$sessionid' and artikelnr ='$artikelnr' ");


10.

Ich habe den Link wie oben geschrieben und übernommen. Leider hats so auch nicht funktioniert.
You have an error in your SQL syntax near ''$artikelnr' at line 1
Ich muss die Variablen mit '". schreiben den so löscht er mir wenigstens wenn where nur mit sessionid eingeschränkt wird den ganzen Warenkorb.
Wäre froh um eine neue Idee.


11.

Hallo Lola ;o)

Nicht so schwer machen das ganze. Du brauchst als erstes mal eine ID in der Tabelle vom Warenkorb.
Sprich ne Spalte mit auto_increment.
Das mit der Artikelnummer ist nicht schlecht als eindeutige ID. Funktioniert aber in der Praxis nicht immer. Meisst hat eine grüne Hose die selbe Artikelnummer wie eine rote Hose, und dann fangen die Probleme wieder an ;o)
Gibst du jetzt jedem Artikel im Warenkorb eine ID mit auf den Weg, wirst du flexibler sein. Auch löschen, ändern der Artikel im Warenkorb wird einfacher.

LINK : <a href="<?=$PHP_SELF?."clear=".$id; ?>">löschen</a>

Löschabfrage
if (isset($clear)){
$sql="DELETE FROM warenkorb WHERE id =".$clear;
mysql_query($sql, $sql_connection);
}

Ich hoffe mal das ich das verständlich genug geschrieben hab, weil ist schön spät ;o)
Greets
CS

PS : Merry X-Mas :o)


12.

Sali CrashedSoul
Ich habe nun in meiner Datenbank eine eindeutige ID für jeden Datensatz gestetzt mit auto_increment. Das funktioniert.
Das Problem ist der Link: Er verursacht bei mir diese Fehlermeldung: You don't have permission to access /< on this server
Dieser Fehler kommt vom Php-Abfangszeichen. Geht diese Funktion mit Php 4.0.3 überhaupt?
Bin für jede weitere Idee dankbar.


13.

Hi,
welchen Link meinst denn du?
Wie sieht der aus, kannst du mir den mal zeigen?

Greetz
CS


14.

Salü
Ich meinte deinen Vorschlag:
LINK : <a href="<?=$PHP_SELF?."clear=".$id; ?>">löschen</a>
Wenn ich den Link richtig verstehe ist das doch Php <?=$PHP_SELF?."clear=".$id; ?>.


15.

Schreib den link mal so:
<a href="<? echo "./pfad/zur/datei/dateiname?clear=".$id; ?>">löschen</a>

GreetZ
CS


16.

Salü
Ich meinte deinen Vorschlag:
LINK : <a href="<?=$PHP_SELF?."clear=".$id; ?>">löschen</a>
Wenn ich den Link richtig verstehe ist das doch Php <?=$PHP_SELF?."clear=".$id; ?>.


17.




18.

Auch dieser Link bringt diese Fehlermeldung:
You don't have permission to access /< on this server. und im Browser wird mir das angezeigt: http://localhost/%3C?%20echo. Es passt Ihm das < nicht.
register_globals ist On dann sollte doch auch $PHP_SELF funktionieren?
Bin weiterhin froh um Ideen.

lola


19.

Übergibst du sonst noch Variablen die du mit dem Link nicht übergibst?
Ich mein Session ID usw?


20.

Ich brauche ja nur diese eine ID um den Datensatz zu löschen. Das Problem ist wie ich dem Delete-Befehl die richtige Datensatz-ID bekannt geben kann.
Könnte man das Problem vielleicht besser mit <input type="checkbox" lösen?


21.

Das mit der Checkbox geht auch, müssteste aber nen <Form> Tag drum setzen, ist wohl nichht die beste möglichkeit.

Ich hoffe deine Seite heisst blabla.php (.php3/.php4) Weil sonst wird php als normaler Text erkannt.
Dann muss in der php.ini die Option 'short_open_tags' auf On sein.
Das erlaubt dir <? statt <?php zu verwenden.
schreib den link mal so :
<a href="<?php echo $PHP_SELF."?clear=".$id; ?>">löschen</a>

Ich denke mal das des funktioniert.
Wenn nicht, sag bescheid.

GreetZ
CS


22.

Leider muss ich dir wieder schlechten Bescheid geben.
Ich habe es auf drei Arten versucht:
1. echo "<a href="<? echo $PHP_SELF."?clear=".$id; delete.php ?>">löschen</a>";
Reaktion:
Parse error: parse error in d:/apache/htdocs/warenkorb.php on line 113
Mit dieser Variante konnte ich nicht mal meinen Warenkorb anschauen.

2. echo '<a href="<?php echo $PHP_SELF."?clear=".$id; delete.php ?>">löschen</a>';
Reaktion:
You don't have permission to access /< on this server.
Im Browser: http://localhost/%3C?%20echo%20$PHP_SELF.
3. 'short_open_tags auf off gestellt und mit <? versucht aber leider ebenfalls ohne
Erfolg

Welche Variante ist die richtige? Die mit " oder ' am Anfang und am Ende.
Ich tendiere auf " da mir im Editor die Variablen in der Farbe der Variablen angezeigt werden.
Was meinst Du?
Zum Schluss möchte ich Dir CrashedSoul für deine Treue und Hilfe danken.

lola


23.

Hi Lola,
nichts zu danken, das kriegen wir schon hin ;)

Also, mir ist gerade aufgefallen das du zweimal echo in der Zeile benutzt.
Das kann so wie das da steht nicht gehen.
Ausserdem frag ich mich was das delete.php darin soll.
Wenn du die Löschfunktion auf der Seite delete.php hast, musst du das folgendermaßen schreiben:
echo "<a href=\"delete.php?clear=".$id."\">löschen</a>";
Hierbei muss die Seite delete.php im selben Ordner sein wie die, wo das drin steht.

Wenn du die Löschfunktion auf der selben Seite hast, dann so:
echo "<a href=\"".$PHP_SELF."?clear=".$id."\">löschen</a>";

Das müsste es eigendlich nun gewesen sein, wenn nicht sag bescheid ;)

GreetZ
CS


24.

Vielen vielen Dank
Die erste Variante hat wunderbar gepasst.
So kann ich unbeschwert ins neue Jahr starten.
Ich wünsche allen ein gutes neues Jahr und gut Php schaffen.

Gruss
lola


25.

Nun bin ich aber beruhigt. Wünsche nen guten Rutsch :)

GreetZ
CS


Hier gehts zum Orginal Eintrag "Löschen eines Datensatzes im Warenkorb" im Forum
 
phpforum.de | Impressum