php_anfaenger
Grünschnabel
Hallo zusammen! Hoffentlich könnt Ihr mir helfen.
Gerade sitze ich an einem Lernheft und komme nicht weiter. Ich soll einen Warenkorb, der nicht bestellt wurde, nach einer gewissen Zeit in der Datenbank MYSQL löschen.
Hier ist meine Methode:
Diese Methode wird aufgerufen, wenn der Benutzer sich eingeloggt hat und die Auflistung der angebotenen Artikel sieht. Hier der Code:
Leider funktioniert es nicht und die affected_rows zeigt kein Ergebnis.
Hat jemand eine Idee?
Über eine Antwort würde ich mich sehr freuen,
PHP_Anfaenger
Gerade sitze ich an einem Lernheft und komme nicht weiter. Ich soll einen Warenkorb, der nicht bestellt wurde, nach einer gewissen Zeit in der Datenbank MYSQL löschen.
Hier ist meine Methode:
PHP:
private function keineBestellung() {
if (!isset($this->kunde) && !is_integer($this->kunde)) {# Gültige Kundennummer?
#print_r($this->kunde);
throw new Exception('Keine Kundennummer'); # Fehler ausgeben
} else {
try {
$sql = "SELECT w_timestamp AS w_timestamp
FROM ws_warenkorb";
$result = $this->dbh->query($sql);
$datum = $result->fetch(PDO::FETCH_ASSOC);
#echo $datum['w_timestamp'];
$datum = strtotime($datum['w_timestamp']);
#echo $datum;
return $datum;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
if (!isset($this->datum))
throw new Exception('Kein Datum');# Fehler ausgeben
else {
try {
$sql = "DELETE FROM ws_warenkorb
WHERE (UNIX_TIMESTAMP(w_timestamp) + 1) = :datum) < UNIX_TIMESTAMP(NOW())";
/*$sql = "DELETE FROM ws_warenkorb
WHERE DATEDIFF(UNIX_TIMESTAMP(w_timestamp) = :datum, UNIX_TIMESTAMP(NOW())) > 1";*/
$result = $this->dbh->prepare($sql);
$result->bindParam(':datum', $datum, PDO::PARAM_INT);
$result->execute();
echo $dbh->affected_rows;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
}
Diese Methode wird aufgerufen, wenn der Benutzer sich eingeloggt hat und die Auflistung der angebotenen Artikel sieht. Hier der Code:
PHP:
public function anzeigen() {
$this->keineBestellung();
print " <table align=\"center\" cellpadding=\"5\">\n";
#print " <tr align=\"center\">\n";
if (!isset($this->kunde) && !is_integer($this->kunde)) {# Gültige Kundennummer?
#print_r($this->kunde);
throw new Exception('Keine Kundennummer'); # Fehler ausgeben
} else {
try {
$sql = "SELECT a_artikelnr,
DATE_FORMAT(a_datum,'%e.%m.%y') AS a_datum,
a_name AS a_veranstaltung,
a_menge AS a_kartenvorrat,
a_preis
FROM ws_artikel
WHERE a_menge > 0";
$result = $this->dbh->query($sql);
$tmp = $result->fetchAll(PDO::FETCH_ASSOC);
$tempo = array_keys($tmp[0]);
print " <tr align=\"center\">\n";
foreach ($tempo as $key => $value) {
$name = substr($value, 2);
print "<th>" . ucwords($name) . "</th>";
}
print " </tr>\n";
foreach ($tmp as $key => $values) {
print "<tr style=\"text-align: center;\">\n";
foreach ($values as $subKey => $subVal) {
if ($subKey == "preis") {
print "<td align=\"center\">" . $subVal . " Euro</td>"; #€
} else {
print"<td align=\"center\">" . $subVal . "</td>";
}
}
print "<td align=\"center\"><a href=\"" . $_SERVER['PHP_SELF'] . "?id=" . $key . "\">In den Warenkorb</a></td>\n";
}
} catch (PDOException $e) {
echo $e->getMessage();
}
}
print " </tr>\n";
print " </table>\n";
}
private function keineBestellung() {
if (!isset($this->kunde) && !is_integer($this->kunde)) {# Gültige Kundennummer?
#print_r($this->kunde);
throw new Exception('Keine Kundennummer'); # Fehler ausgeben
} else {
try {
$sql = "SELECT w_timestamp AS w_timestamp
FROM ws_warenkorb";
$result = $this->dbh->query($sql);
$datum = $result->fetch(PDO::FETCH_ASSOC);
#echo $datum['w_timestamp'];
$datum = strtotime($datum['w_timestamp']);
#echo $datum;
return $datum;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
if (!isset($this->datum))
throw new Exception('Kein Datum');# Fehler ausgeben
else {
try {
$sql = "DELETE FROM ws_warenkorb
WHERE (UNIX_TIMESTAMP(w_timestamp) + 1) = :datum) < UNIX_TIMESTAMP(NOW())";
/*$sql = "DELETE FROM ws_warenkorb
WHERE DATEDIFF(UNIX_TIMESTAMP(w_timestamp) = :datum, UNIX_TIMESTAMP(NOW())) > 1";*/
$result = $this->dbh->prepare($sql);
$result->bindParam(':datum', $datum, PDO::PARAM_INT);
$result->execute();
echo $dbh->affected_rows;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
}
Leider funktioniert es nicht und die affected_rows zeigt kein Ergebnis.
Hat jemand eine Idee?
Über eine Antwort würde ich mich sehr freuen,
PHP_Anfaenger