artikel löschen-aber wie?

milea

Mitglied
Hallo!
ich schaff es einfach nicht, die artikel aus meinen Korb zu löschen, weder einen einzelnen noch alle zusammen. Hab das bis jetzt mit Buttons gelöst, aber das geht nicht. Wenn ich einen einzelnen artikel löschen will, wird der else-Zweig ausgeführt und die Fehlermeldung erscheint. In der DB wurde der Artikel nicht gelöscht. Wenn ich alle Artikel löschen will, bleibt auch noch alles in der DB wie zuvor.
PHP:
<?session_start(); 
$wk_id=session_id(); 
//Einfügen Artikel von hidden_feldern der vorherigen Seite 
include_once("dblogon.php"); 
$sql_wkeintrag = "INSERT INTO warenkorb (art_nr, firmen_id, art_titel, art_preis, art_menge, art_mwst, wk_id, artikelid) values ('$art_nr', '$firmen_id', '$art_titel', '$art_preis', '$menge', '$art_mwst', '$wk_id', '$artikelid')"; 
$result_wkeintrag = mysql_query($sql_wkeintrag) OR die(mysql_error()."  ".mysql_errno()); 

...html 

//Artikelausgabe 
$sql_firmen = "SELECT DISTINCT firmen_id FROM warenkorb WHERE wk_id = '".$wk_id."'"; 
$result_firmen = mysql_query($sql_firmen) OR die(mysql_error()."  ".mysql_errno()); 
$num = mysql_num_rows($result_firmen); 

if ($delete_all) 
  { 
  $sql_delete = "DELETE FROM warenkorb WHERE wk_id = '".$wk_id."'"; 
  $result_delete = mysql_query($sql_delete) OR die(mysql_error()."  ".mysql_errno()); 
  } 
if ($löschen) 
  { 
  $sql_löschen = "DELETE FROM warenkorb WHERE artikelid = '".$artikelid."'"; 
  $result_löschen = mysql_query($sql_löschen) OR die(mysql_error()."  ".mysql_errno()); 
  } 
//Artikel nur von einem Anbieter>$num==1 
if ($num==1) 
{ 
$wk_auslese = "SELECT * FROM warenkorb WHERE wk_id = '".$wk_id."' GROUP BY artikelid"; 
$result_wk = mysql_query($wk_auslese) OR die(mysql_error()."  ".mysql_errno()); 
$num2 = mysql_num_rows($result_wk); 
if($num2 == 0) echo"Es befinden sich keine Artikel in Ihrem Warenkorb."; 

...html 

for($i=0; $i<$num2; $i++) 
{ 

$art_nr = mysql_result($result_wk,$i,'art_nr'); 
$art_menge = mysql_result($result_wk,$i,'art_menge'); 
$art_titel = mysql_result($result_wk,$i,'art_titel'); 
$art_preis = mysql_result($result_wk,$i,'art_preis'); 
$art_mwst = mysql_result($result_wk,$i,'art_mwst'); 
$firmen_id = mysql_result($result_wk,$i,'firmen_id'); 
$artikelid = mysql_result($result_wk,$i,'artikelid'); 

...html-ausgabe 
//Löschen-Button hinter jedem artikel 
<td width="10%"><form action="index.php?seite=warenkorb.php" method="post"> 
   <input type="Submit" name="löschen" value="löschen"> 
   </form> 

... 
}//ende for 
//button  für alles löschen 
<td width="150" style="padding-left:65px;padding-rigth:20px"> 
  <form action="index.php?seite=warenkorb.php" method="post"> 
  <input type="Submit" name="delete_all" value="Warenkorb löschen"> 
  </form> 
  </td> 
}ende if (nur ein Anbiter im Korb) 
else 
{ 
$sql_delete = "DELETE FROM warenkorb WHERE firmen_id = '".$firmen_id."'"; 
$result_delete = mysql_query($sql_delete) OR die(mysql_error()."  ".mysql_errno()); 
echo '<center><table><tr><td align="center"><font color="#FF0000"><b>Sie können keine Artikel von verschiedenen Firmen<br> im Warenkorb haben.</b></font></td></tr><tr><td align="center"><br><br>Bitte bestellen sie zuerst, die Artikel, die sich bereits im Warenkorb befinden</td></tr></table></center><br><br>'; 

$wk_auslese = "SELECT * FROM warenkorb WHERE wk_id = '".$wk_id."' GROUP BY artikelid"; 
$result_wk = mysql_query($wk_auslese) OR die(mysql_error()."  ".mysql_errno()); 
$num2 = mysql_num_rows($result_wk);
 
also das mit allen artikeln löschen funktioniert-aber einen einzelenen artikel zu löschen, das haut nicht hin :)
 
Funktionieren in deiner Version denn Umlaute in Variablenname?
Also $sql_löschen?

Vielleicht mit $sql_loeschen?! Ich vermeide Umlaute grundsätzlich in Variablen, Funktionen, Klassen oder Datenbankfeldern.
 
hm, leider lags daran nicht (wohl eher: nicht nur- denn ich denke mal der umlaut war auf jeden fall falsch)
aber dennoch wird nix gelöscht und stattdessen erscheint der else Zweig weil $num==2 ist (und nicht mehr ==1) Aber warum. Ist if ($loeschen) vielleicht an der falschen stelle? Und kann das so überhaupt funktionieren?Ich meine damit hat er dann, wenn ich auf ein löschen Button klicke überhaupt die id des Artikels den ich damit löschen wollte?*verwirrt*
 
Du übergibts die $artikelid in deinen lösch-buttons nicht.
Eine mögliche Lösung wäre das hier:
HTML:
<td width="10%"><form action="index.php?seite=warenkorb.php" method="post">
   <input type="hidden" name="zuloeschendeartikelid" value="<?php echo($hiermussdieartikelidrein); ?>">
   <input type="Submit" name="löschen" value="löschen">
   </form>
Dann kannst du via $_POST['zuloeschendeartikelid'] auf die angeklickte artikelid zugreifen.
 
Hallöle
ich mal wieder.
hab den Vorschlag ausprobiert.Der Artikel wird zwar gelöscht-dennoch wird der else-zweig ausgeführt und es kommt:
"Sie dürfen keine Artikel von zwei verschiedenen Anbietern im korb haben..."
Unerklärlicherweise wird $num nämlich immer auf zwei gesetzt,wenn ein artikel gelöscht wird.
PHP:
<?
$sql_firmen = "SELECT DISTINCT firmen_id FROM warenkorb WHERE wk_id = '".$wk_id."'";
$result_firmen = mysql_query($sql_firmen) OR die(mysql_error()."  ".mysql_errno());
$num = mysql_num_rows($result_firmen);

if ($loeschen)
{

  $sql_löschen = "DELETE FROM warenkorb WHERE artikelid = '".$del_artikelid."'";
  $result_löschen = mysql_query($sql_löschen) OR die(mysql_error()."  ".mysql_errno());
  }

if ($num==1)
{


$wk_auslese = "SELECT * FROM warenkorb WHERE wk_id = '".$wk_id."' GROUP BY artikelid";
$result_wk = mysql_query($wk_auslese) OR die(mysql_error()."  ".mysql_errno());
$num2 = mysql_num_rows($result_wk);
if($num2 == 0) echo"Es befinden sich keine Artikel in Ihrem Warenkorb.";
...
for($i=0; $i<$num2; $i++)
{

$art_nr = mysql_result($result_wk,$i,'art_nr');
$art_menge = mysql_result($result_wk,$i,'art_menge');
$art_titel = mysql_result($result_wk,$i,'art_titel');
$art_preis = mysql_result($result_wk,$i,'art_preis');
$art_mwst = mysql_result($result_wk,$i,'art_mwst');
$firmen_id = mysql_result($result_wk,$i,'firmen_id');
$artikelid = mysql_result($result_wk,$i,'artikelid');
...
<form action="index.php?seite=warenkorb.php" method="post">
   <input type="hidden" name="del_artikelid" value="<?php echo($artikelid); ?>">
   <input type="Submit" name="loeschen" value="löschen">
   </form>
..
}
}
else
{$sql_delete = "DELETE FROM warenkorb WHERE firmen_id = '".$firmen_id."'";
$result_delete = mysql_query($sql_delete) OR die(mysql_error()."  ".mysql_errno());
echo '<center><table><tr><td align="center"><font color="#FF0000" size="+4"><b>Sie können keine Artikel von verschiedenen Firmen<br> im Warenkorb haben.</b></font></td></tr><tr><td align="center"><br><br><b>Bitte bestellen sie zuerst, die Artikel, die sich bereits im Warenkorb befinden!</b></td></tr></table></center><br><br>';

$wk_auslese = "SELECT * FROM warenkorb WHERE wk_id = '".$wk_id."' GROUP BY artikelid";
$result_wk = mysql_query($wk_auslese) OR die(mysql_error()."  ".mysql_errno());
$num2 = mysql_num_rows($result_wk);
if($num2 == 0) echo"Es befinden sich keine Artikel in Ihrem Warenkorb.";
...
}
?>
 
$num wird doch am Anfang zu 0, da nach dem Löschen des Artikels keine Artikel mehr in dem Warenkorb sind.
Somit ist $num == 1 nicht erfüllt, da 0 != 1 ist.
Also wird in der if-Abfrage der else-Teil ausgeführt!

MfG
Hans
 
Zurück