Beiträge von jola58

    Den Fehler mit der Syntax habe ich gefunden. Das Feld war in der Datenbankstruktur zu klein angegeben.
    Nun habe ich aber immer noch das Problem, dass wenn ich einen weiteren Artikel in den Warenkorb sende, dieser den 1. Datensatz aus der Tabelle schmeisst, so dass er unterhalb der Tabelle unformatiert erscheint.
    Die Abfrage sieht so aus:
    SELECT * FROM warenliste WHERE ID IN ( 1078,1077, 1078, 1077 )Array
    (
    [0] => 1078
    [1] => 1077
    )

    Ist das normal, dass die Einträge doppelt vorhanden sind? Ich habe zuvor die Datensätze auch mal im Warenkorb gelöscht und sie neu hineingegeben.
    Kann mir jemand weiterhelfen?

    Habe den Fehler nun gefunden. Die Klammer war am falschen Ort.

    Ich gebe die Artikel folgendermassen in den Warenkorb:

    ohne implode kriege ich keine Fehlermeldung, mit implode:
    You have an error in your SQL syntax; check the manual that corresponds
    to your MySQL server version for the right syntax to use near '1049,
    1049 )' at line 1
    Doch der 2. Artikel wird nicht in die Tabelle geschrieben. Was läuft da falsch?

    Das habe ich auch gedacht, doch wie bekomme ich die weg? Diese ,, kommen vom Befehl mit implode. Wenn ich sie in der dortigen Klammer entferne, dann bekomme ich:
    SELECT * FROM warenliste WHERE ID IN ( 10491064 ). Das kann ja auch nicht richtig sein. Und nur 1 Komma entfernen ergibt wieder eine Fehlermeldung.

    Hallo Roland

    Dann kommt:
    SELECT * FROM warenliste WHERE ID IN ( 1049, )
    wenn ich noch einen Artikel in den Warenkorb sende, heisst es:

    SELECT * FROM warenliste WHERE ID IN ( 1049,,1064 )You have an error in
    your SQL syntax; check the manual that corresponds to your MySQL server
    version for the right syntax to use near '1064 )' at line 1

    Ich bekomme folgende Fehlermeldung:
    You have an error in your SQL syntax; check the manual that corresponds
    to your MySQL server version for the right syntax to use near ')' at
    line 1

    Ich finde einfach keinen Fehler. Hier mein

    Vielen Dank für Eure Hilfe.

    Zu früh gefreut. Also, wenn ich das Produkt lösche, kommt zuerst nochmals diese Fehlermeldung : mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
    bezogen auf while-Zeile. Wenn ich aber die Seite dann reloade, dann geht die Meldung weg und es kommt wie gewünscht: Kein Produkt im Warenkorb.
    Was läuft da noch nicht ganz richtig?

    Super, nun klappt alles. Vielen Dank für deine Mühe. Das war mit echt eine grosse Hilfe und ich habe auch viel gelernt. :thumbup:
    Werde jetzt noch das Design verbessern und irgendwann möchte ich dann auch noch den Gesamtpreis hinbekommen. Aber das wird dann ein neues Thema.

    Ich möchte nun gerne, dass die while - Schleife abgebrochen wird, wenn der Warenkorb leer ist, damit diese Fehlermeldung nicht kommt. Aber ich kriege das nicht hin, da der break ja in der Schleife sein muss, aber die Fehlermeldung gleich zu Beginn kommt. Wie muss ich das machen?

    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);

    while
    ($inhalt = mysql_fetch_assoc( $erg))

    {
    if (empty($inhalt))
    {
    echo "Du hast keine Produkte im Warenkorb" ; }
    {break;}

    Ich habe es jetzt hinbekommen, dass der Datensatz mit Array [0] gelöscht wird. Doch jetzt kommt eine Fehlermeldung, ich nehme an, weil der Korb leer ist:

    mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
    betrifft die rote Zeile:

    $_SESSION["einkaufswagen"]= array_unique($_SESSION["einkaufswagen"]);
    $delete = ($_GET['dell_art']);

    if(!empty($delete)) {
    $key = array_search($delete, $_SESSION["einkaufswagen"]);


    if (($key) != NULL) {
    unset($_SESSION["einkaufswagen"][$key]);

    }
    if (($key) == NULL){
    unset ($_SESSION["einkaufswagen"][0]) ;}
    }
    print_r (($_SESSION["einkaufswagen"])) ;
    echo '<table class="rahmen">';
    echo '<th class="kopf">';
    echo "ID" ;
    echo '<th class="kopf">';
    echo "Anzahl" ;
    echo '<th class="kopf">';
    echo "Produktbezeichnung";
    echo '<th class="kopf">';
    echo "Ausgabeart";
    echo '<th class="kopf">';
    echo "Preis";
    echo '<th class="kopf">';
    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);
    while ($inhalt = mysql_fetch_assoc( $erg))
    {

    Ich habe den Fehler gefunden. Ich bin so doof. Meine Seite ist ja nicht die Warenkorb.php sondern die Einkauf.php. Also der Link hat nicht gestimmt. Jetzt kommt keine Fehlermeldung mehr, aber das Produkt wurde auch nicht entfernt.
    D. h. ich kann das 1. Produkt, das ich in den Warenkorb gelegt habe ,nicht löschen, alle anderen schon.
    Ich werde mal noch ein bisschen studieren, woran das liegen kann.

    <?php session_start();
    include("connect.php");
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head>
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Einkauf</title>
    <link rel="stylesheet" href="styles.css" type="text/css">
    <meta name="keywords" content="Primarschule; Kindergarten; Lernprogramme; Heilpädagoge; Heilpädagogin; Logopädie; phonologisches Bewusstsein; Mediatorprogramme;PC; Computer; Lernen; Lesen; Laute: Selbstlaute; Umlaute; Mitlaute; Schweiz;">

    <meta name="editor" content="html-editor phase 5">
    </head>
    <body>
    <br>

    <div id="seite">
    <div id="header"><img style="width: 207px; height: 137px;" alt="" src="logo.png"><br>
    <h1 class="table">Lernprogramme</h1>
    </div>
    <div class="navi">
    <ul>
    <li><a href="index.php" class="index.php">Home<br>
    </a></li>
    <li><a href="einkauf.php" rel="me" class="aktiv">Warenkorb<br>
    </a></li>
    <li><a href="bestellung.php" rel="me">Bestellung absenden<br>
    </a></li>
    </ul>
    </div>
    <br>
    <?php error_reporting(E_ALL ^ E_NOTICE);
    require_once ('funktionen.php') ;

    hier ist die zeile von der Fehlermeldung

    $_SESSION["einkaufswagen"]= array_unique($_SESSION["einkaufswagen"]);
    $delete = ($_GET['dell_art']);
    if(!empty($delete)){
    $key = array_search($delete, $_SESSION["einkaufswagen"]);

    if ($key) {
    unset ($_SESSION["einkaufswagen"][$key]);

    }
    }
    echo '<table class="rahmen">';
    echo '<th class="kopf">';
    echo "ID" ;
    echo '<th class="kopf">';
    echo "Anzahl" ;
    echo '<th class="kopf">';
    echo "Produktbezeichnung";
    echo '<th class="kopf">';
    echo "Ausgabeart";
    echo '<th class="kopf">';
    echo "Preis";
    echo '<th class="kopf">';


    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);

    while ($inhalt = mysql_fetch_assoc( $erg))
    {

    echo '<tr class="zeilen">';
    echo '<td class="felder">';
    echo $inhalt['ID'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Anzahl'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Produktbezeichnung'];
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Ausgabeart'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Preis'] ;
    echo '<td width="20">';
    echo '<a href="warenkorb.php?dell_art='.$inhalt['ID'].'">Löschen</a>';
    echo "</td>" ;
    echo '</tr>';
    }
    echo "</table>" ;
    ?>
    <br>
    <br>
    <div style="text-align: center;" id="inhalt"> <a href="bestellung.php"><br>
    </a>
    </div>
    <div style="text-align: center;" id="footer"><a href="#header"><br>
    </a>
    </div>
    </div>

    </body>
    </html>

    oh, da hat wirklich ein tr gefehlt, aber die Fehlermeldung bleibt. Zeile 43 : die ist aber leer und steht über der 1. Zeile des Scripts. Also davor ist nur der head -Eintrag und require_once ('funktionen.php') . Da ist definitiv nichts falsch.

    mein überarbeitetes Script: bekomme die Fehlermeldung:

    Parse error: syntax error, unexpected '.' Das ist eine leere Zeile. Oben in der Adresse sehe ich den Link mit dell_art=103 , was die ID ist vom gelöschten Datensatz - somit richtig ist. Aber was ist mit dieser Fehlermeldung?

    $_SESSION["einkaufswagen"]= array_unique($_SESSION["einkaufswagen"]);
    $delete = ($_GET['dell_art']);
    if(!empty($delete)){
    $key = array_search($delete, $_SESSION["einkaufswagen"]);


    if ($key) {
    unset ($_SESSION["einkaufswagen"][$key]);

    }
    }
    echo '<table class="rahmen">';
    echo '<th class="kopf">';
    echo "ID" ;
    echo '<th class="kopf">';
    echo "Anzahl" ;
    echo '<th class="kopf">';
    echo "Produktbezeichnung";
    echo '<th class="kopf">';
    echo "Ausgabeart";
    echo '<th class="kopf">';
    echo "Preis";
    echo '<th class="kopf">';


    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);

    while ($inhalt = mysql_fetch_assoc( $erg))
    {

    echo '<tr class="zeilen">';
    echo '<td class="felder">';
    echo $inhalt['ID'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Anzahl'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Produktbezeichnung'];
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Ausgabeart'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Preis'] ;
    echo '<td width="20">';
    echo '<a href="warenkorb.php?dell_art='.$inhalt['ID'].'">Löschen</a>';
    echo "</td>" ;
    echo '</>';
    }
    echo "</table>" ;
    ?>
    <br>
    <br>
    <div style="text-align: center;" id="inhalt"> <a href="bestellung.php"><br>
    </a>
    </div>
    <div style="text-align: center;" id="footer"><a href="#header"><br>
    </a>
    </div>
    </div>

    </body>
    </html>


    echo '<input name="loeschen" value="'.$inhalt['ID'].'" type="checkbox">' ;
    $_SESSION["loeschen"][] = $inhalt['ID'] ;

    das bedeutet doch, dass wenn man auf das Kästchen klickt, die ID von diesem Datensatz gespeichert wird, also nur von dem Datensatz, den man löschen will. Die anderen Datensätze, die nicht angeklickt werden, die kommen nicht in diese $_SESSION["loeschen"][]. Habe ich da was grundlegend falsch verstanden? ?(

    Jetzt kommt die gleiche Fehlermeldung schon am Anfang, bevor ich überhaupt die Ware im Korb habe. Und was meinst du mit der URL, ich habe ja die ID, die gelöscht werden soll, auf dieser Seite, nicht auf einer anderen. Ohne SESSION müsste ich sie einfach in ein Array speichern. Ich zeig dir mal das Ganze, was ich bis jetzt habe:

    <?php error_reporting(E_ALL ^ E_NOTICE);
    require_once ('funktionen.php') ;


    $_SESSION["einkaufswagen"]= array_unique($_SESSION["einkaufswagen"]);
    if(!empty($_SESSION["loeschen"])){
    $del = array_search($_SESSION["loeschen"], $_SESSION["einkaufswagen"]);
    unset ($_SESSION["einkaufswagen"][$del]) ; }


    echo '<table class="rahmen">';
    echo '<th class="kopf">';
    echo "ID" ;
    echo '<th class="kopf">';
    echo "Anzahl" ;
    echo '<th class="kopf">';
    echo "Produktbezeichnung";
    echo '<th class="kopf">';
    echo "Ausgabeart";
    echo '<th class="kopf">';
    echo "Preis";
    echo '<th class="kopf">';
    echo "L&ouml;schen";

    //$_SESSION["einkaufswagen"][] = array_diff ($_SESSION["einkaufswagen"][], $_SESSION["loeschen"][]) ;

    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);

    while ($inhalt = mysql_fetch_assoc( $erg))
    {

    echo '<tr class="zeilen">';
    echo '<td class="felder">';
    echo $inhalt['ID'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Anzahl'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Produktbezeichnung'];
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Ausgabeart'] ;
    echo "</td>" ;
    echo '<td class="felder">';
    echo $inhalt['Preis'] ;
    echo '<td class="felder">';
    echo '<input name="loeschen" value="'.$inhalt['ID'].'" type="checkbox">' ;
    $_SESSION["loeschen"][] = $inhalt['ID'] ;
    echo "</td>" ;
    echo '</>';
    }
    echo "</table>" ;


    ?>
    <br>
    <form action="einkauf.php" method="post">
    <center><input value="aktualisieren" type = "submit"> <input name="markiert" value = "Ja" type="hidden"></center></form>
    <?php
    if ($_POST['markiert'] == "Ja" )
    { echo " Markierte Artikel wurden gel&ouml;scht. ";

    }

    ?>
    <br>
    <br>
    <div style="text-align: center;" id="inhalt"> <a href="bestellung.php"><br>
    </a>
    </div>
    <div style="text-align: center;" id="footer"><a href="#header"><br>
    </a>
    </div>
    </div>

    </body>
    </html>

    Ich kann mir das nicht so ganz vorstellen. Zuerst wird doch der Warenkorb gezeigt. Erst dann kann man anklicken, was man wieder entfernen will. Dann ist doch der Link in der letzten Spalte schon vorbei, bzw. die Schleife schon fertig. Oder wie funktioniert das?

    Das können aber auch mehrere Datensätze auf einmal sein.


    $inhalt = implode(",", $_SESSION["einkaufswagen"]);
    $del = array_search($_SESSION["loeschen"], $_SESSION["einkaufswagen"]);
    unset ($_SESSION["einkaufswagen"][$del]) ;
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ($inhalt) ";
    $erg = mysql_query($abfrage);

    ergibt die Fehlermeldung: mysql_fetch_assoc(): supplied argument is not a valid MySQL