löschen mit Javascript in for-schleife

milea

Mitglied
Hallo!

Ich möchte aus meinem warenkorb einzelne Artikel löschen lassen, und zwar mit javascript. Alle artikel werden aus der tabelle "warenkorb" in der DB ausgelesen und in warenkorb.php dargestellt. das Auslesen erfolgt über eine for-Schleife. Nun befindet sich hinter jedem Artikel ein löschen-bild. klickt man dieses Bild erscheint ein fenster und man wird gefragt, ob man den Artikel wirklich löschen will.
Leider klappt es nicht.
Wenn ich "ok "drücke, wird der Artikel nicht gelöscht. In der Tabelle "warenkorb" wird dann sogar ne neue (leere) Zeile angelegt. Als ich mir die $artikelid ausgeben lassen hab, war es nicht die, von dem Artikel, den ich löschen wollte, sondern von dem, den ich zuletzt in den Korb gelegt habe.
Aber auch dieser Artikel wurde nicht aus der tabelle gelöscht.


Quellcode:
Code:
<script language="javascript">

   function loeschen (artikelid)
       {
              check = window.confirm('Möchten Sie den Artikel wirklich löschen?\n ')
                 if(check == true)
                 {
                 window.location='index.php?seite=warenkorb.php&action=delete&wk_id=<? echo $wk_id;?>&firmen_id=<? echo $firmen_id; ?>&artikelid=<? echo $artikelid; ?>';
                 }
                 else if(check == false){
                 window.location='Javascript:history.go(-1);';
                 }
         }
</script>

PHP-Quellcode:
PHP:
<?
//wenn löschen einzelner Artikel
if($action == "delete" && $artikelid && $wk_id)//Einzelne Artikel löschen

          {       echo $artikelid;
                         #echo $wk_id;
               $eintrag = "DELETE FROM warenkorb WHERE artikelid = '".$artikelid."' AND wk_id = '".wk_id."'";
             $ergebnis = mysql_query($eintrag) OR die(mysql_error()."  ".mysql_errno());
             echo 'Artikel wurde gelöscht.<br>';
          }

..html-Ausgabe

//Ausgabe der warenkorbes mit for-schleife

    $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);
         $row_news = mysql_fetch_object($result_wk);
    if($num2 == 0) echo"Es befinden sich keine Artikel in Ihrem Warenkorb.";

    ?>
    <table border="0" width="460" align="center">
         <tr width="460">
          <!--<td width="30" style="padding-left:5px">&nbsp;<br></td>  -->
              <td width="55" style="padding-left:1px" align="center"><font size="-2"><b>Art.Nr.</font></b><br></td>
              <td width="150" style="padding-left:5px" align="center"><font size="-2"><b>Artikel</font></b><br></td>
              <td width="20" style="padding-left:5px" align="center"><font size="-2"><b>Menge</font></b><br></td>
              <td width="80" style="padding-left:5px" align="center"><font size="-2"><b>Preis</font></b><br></td>
              <td width="35" style="padding-left:5px" align="center"><font size="-2"><b>MwSt</font></b><br></td>
              <td width="100" style="padding-left:5px" align="right"><font size="-2"><b>Gesamt</font></b><br></td>
                  <td width="20">&nbsp;</td>
              <!--<td width="30" align="center"  style="padding-right:5px"><b>löschen</b><br></td>-->

         </tr>
                 <tr><td colspan="6"><hr width="440" size=1 color="#177665" noshade></td></tr>

     <?


    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');

               $neu2 = str_replace(",", ".","$art_preis");//kommastellenberechnung
               $gesamt1 = $art_menge * $neu2 * ($art_mwst/100); //prozentsatz
               $gesamt2 = $art_menge * $neu2; //menge * preis
               $gesamt_all = $gesamt1 + $gesamt2;  //gesamtsumme mit MwSt
                $summe_mwst = $summe_mwst + $gesamt1;
              $netto = $netto + $gesamt2;
              $rechnungssume = $netto + $summe_mwst;
              $formatted = sprintf("%01.2f", $rechnungssume);//für Anzeige Stellen hinter Komma
              $formatted2 = sprintf("%01.2f", $netto);
              $formatted3 = sprintf("%01.2f", $summe_mwst);
          if ($artikelid)

          {
      ?>

          <!--<td width="10%" style="padding-left:5px"></td>-->
          <tr width="460"><td width="55" align="center"><font size="-2"><? echo $art_nr ?></font><br></td>
          <td width="150" align="center" style="padding-left:5px"><font size="-2"><? echo $art_titel ?></font><br></td>
          <td width="20" align="center"><font size="-2"><? echo $art_menge ?></font><br></td>
          <td width="80" align="center"><font size="-2"><? echo $art_preis ?>€</font><br></td>
          <td width="35" align="center"><font size="-2"><? echo $art_mwst ?>%</font><br></td>
           <td width="100" align="right"><font size="-2"><? echo sprintf("%01.2f",($gesamt1 + $gesamt2));?>     €</font><br></td><!--Gesamtpreis-->

              <!-- Link zum Löschen einzelner Artikel -->
                 <?
                 echo '<td align="center"><a href="javascript: loeschen(\''.$row_news->artikelid.'\');"><b>&nbsp;<img src="img/delete_icon.gif" alt="Artikel löschen" border="0" align="absmiddle">&nbsp;</b></a></td>';
                 ?>
                </tr>
<?

       }

   }//ENDE FOR-Schleife

  ?>
    </table>

Kann mir jemand helfen? Danke schonmal!
 
Probier mal diesen Code.

Code:
<script language="javascript">

   function loeschen (artikelid){
              var check = window.confirm('Möchten Sie den Artikel wirklich löschen?\n ');
                 if(check){
                            window.location.href='index.php?seite=warenkorb.php&action=delete&wk_id=<? echo $wk_id;?>&firmen_id=<? echo $firmen_id; ?>&artikelid='+artikelid;
                 }
return false;
         }
</script>


Code:
<!-- Link zum Löschen einzelner Artikel --> 
                 <? 
                 echo '<td align="center"><a href="#" onClick="return loeschen(\''.$row_news->artikelid.'\');"><b>&nbsp;<img src="img/delete_icon.gif" alt="Artikel löschen" border="0" align="absmiddle">&nbsp;</b></a></td>'; 
                 ?>

Das Problem ist, dass Du mit

window.location='index.php?seite=warenkorb.php&action=delete&wk_id=<? echo $wk_id;?>&firmen_id=<? echo $firmen_id; ?>&artikelid=<? echo $artikelid; ?>';

die Artikelid aus deinem PHP einsetzen willst. Du musst aber die Variable aus dem Javascript nehmen. Sonst sieht der Rest ganz gut aus. Wozu brauchst Du die $firmend_id?

Marcus.
 
danke - aber leider ist alles noch beim alten.
ich versteh einfach nicht, warum er die falsche artikelid hat und warum er noch ne leere zeile beim löschen (!) in die DB schreibt. :(
 
Dein $row_news = mysql_fetch_object($result_wk);
ist außerhalb der Schleife. Dadurch bekommst Du immer nur die Artikelid des ersten Datensatzes den Du ausgelesen hast.

Wenn $wk_id =0 funktioniert Deine If-Abfrage nicht.
 
Zuletzt bearbeitet:
Hm, da haste sicher recht, irgendwas stimmt danicht. Aber auch wenn ich
$row_news = mysql_fetch_object($result_wk);
innerhalb der Schleife packe, hauts nicht hin. Immer noch ne falsche id.
 
Zurück