Es gibt hier noch zu viele Möglichkeiten, wo das Skript durchlaufen kann ohne das eine Meldung kommt und den Warenkorb nicht geleert wird.
Das fängt an dieser Stelle an.
Wenn ein Datensatz geupdated wurde Springt das Skript aus der Funktion raus, ohne irgendeine Ausgabe und auch ohne die Leerung des Warenkorbs.
Das ist die nächste Stelle. Wenn er denn mal an diese Stelle gekommen ist und keinen Eintrag in die Datenbank gemacht hat (Gründe schiebe ich jetzt mal zur Seite) bricht er die Funktion auch ab und gibt ein False zurück und nicht anderes.
Wenn ich raten sollte würde ich sagen, dass er nach dem ersten Block (dem Update) schon aus der Funktion herausspringt.
Genaueres kannst du nur mit probieren und ein paar Ausgaben zwischen drin klären.
PHP:
$sql = "UPDATE ws_warenkorb
SET w_menge = w_menge + 1
WHERE w_artikelnr = :nummer
AND w_kunde = :kunde";
$result = $this->dbh->prepare($sql);
$result->bindParam(':nummer', $artikelnummer, PDO::PARAM_INT);
$result->bindParam(':kunde', $kunde, PDO::PARAM_INT);
$result->execute();
if ($result->rowCount() == 1)
return true;
Wenn ein Datensatz geupdated wurde Springt das Skript aus der Funktion raus, ohne irgendeine Ausgabe und auch ohne die Leerung des Warenkorbs.
PHP:
$sql ="INSERT INTO ws_warenkorb (w_artikelnr, w_kunde, w_menge)
VALUES (:nummer, :kunde, 1)";
$result = $this->dbh->prepare($sql);
$result->bindParam(':nummer', $artikelnummer, PDO::PARAM_INT);
$result->bindParam(':kunde', $kunde, PDO::PARAM_INT);
$result->execute();
if($result->rowCount()== 1)
{
$this->loescheWarenkorb($this->datum);
print "Datensatz wurde eingetragen.";
return true;
}
return false;
Wenn ich raten sollte würde ich sagen, dass er nach dem ersten Block (dem Update) schon aus der Funktion herausspringt.
Genaueres kannst du nur mit probieren und ein paar Ausgaben zwischen drin klären.