dantaros
Goto Top

PHP - MySQL mehrere Aktionen für einen Datensatz

Hallo zusammen,

ich habe mal wieder ein Problem mit PHP und SQL.

Über einen Klick auf einen Link wird der betroffene Datensatz in ein Archiv kopiert und anschließend gelöscht.
Das habe ich vor längerer Zeit, mithillfe des Forums, lösen können.

Jetzt muss aber durch den Klick auf den Link noch eine weitere Aktion durchgeführt werden.
Es muss in der Datenbank in ein Feld ein Timestamp geschrieben werden, damit man weiß wann der Link geklickt wurde.
Ob das vor dem Kopieren oder danach in der Kopie passiert, spielt dabei keine Rolle.

Der Code mit dem ich kopiere und lösche:
if (isset($_GET['aktion']) and $_GET['aktion']=='DFUE_fertig') {  
    if (isset($_GET['id'])) {  
        $id = (INT) $_GET['id'];  
        if ($id > 0)
        {
		$archivieren= $db->prepare (" INSERT INTO archiv SELECT * FROM testabholung WHERE id= ? LIMIT 1 " );  
		$archivieren->bind_param('i', $id);  
		if ($archivieren->execute()) {
			$loeschen = $db->prepare("DELETE FROM testabholung WHERE id=(?) LIMIT 1");  
			$loeschen->bind_param('i', $id);  
			if ($loeschen->execute()) {
				echo "<p>Datensatz wurde archiviert</p>";  
			}
		}
        }       
    }
}

Ich hab schon versucht noch einen Block mit update einzubauen, allerdings ohne Erfolg:
$update = $db->prepare("UPDATE testabholung SET DFUE=?,  WHERE id=? LIMIT 1");  
        $update->bind_param('si', $upd_DFUE, $upd_id);  
        if ($update->execute()) {
.
.

Ich hoffe ihr könnt mir bei meinem Problem helfen.

Mit freundlichen Grüßen
Daniel

Content-ID: 502171

Url: https://administrator.de/contentid/502171

Ausgedruckt am: 02.11.2024 um 22:11 Uhr

TripleDouble
TripleDouble 08.10.2019 um 08:23:27 Uhr
Goto Top
Zitat von @Dantaros:
> $update = $db->prepare("UPDATE testabholung SET DFUE=?,  WHERE id=? LIMIT 1");  

Hallo,

bei der SQL-Syntax im UPDATE-Statement hast Du einen Fehler. Das Komma nach "DFUE=?" gehört da nicht hin, da Du ja nur ein Feld aktualisierst.

Gruß - TD
Dantaros
Dantaros 08.10.2019 um 10:01:20 Uhr
Goto Top
Das war leider nur ein Übertragungsfehler.

So hab ich das aktuell getestet, allerdings wird DFUE nicht richtig übertragen.
In der Datenbank bleibt das Feld leer.

if (isset($_GET['aktion']) and $_GET['aktion']=='DFUE_fertig') {  
    if (isset($_GET['id'])) {  
        $id = (INT) $_GET['id'];  
        if ($id > 0)
        {$upd_DFUE = date ("H:i d.m.Y");  
			$update = $db->prepare("UPDATE testabholung SET  DFUE=? WHERE id=? LIMIT 1");  
			$update->bind_param('si', $upd_DFUE, $upd_id);  
			if ($update->execute()) {
				$archivieren= $db->prepare (" INSERT INTO archiv SELECT * FROM testabholung WHERE id= ? LIMIT 1 " );  
				$archivieren->bind_param('i', $id);  
				if ($archivieren->execute()) {
					$loeschen = $db->prepare("DELETE FROM testabholung WHERE id=(?) LIMIT 1");  
					$loeschen->bind_param('i', $id);  
					if ($loeschen->execute()) {
						echo "<p>Datensatz wurde archiviert</p>";  
					}
				}
			}       
		}
	}
}
eisbein
Lösung eisbein 08.10.2019 aktualisiert um 10:32:48 Uhr
Goto Top
Hallo,

$update->bind_param('si', $upd_DFUE, $upd_id);

Die Variable $upd_DFUE wird im Code definiert und mit einem Wert befüllt. Wie aber sieht das mit $upd_id aus? face-wink

Gruß
eisbein
Dantaros
Dantaros 08.10.2019 um 11:16:39 Uhr
Goto Top
Da hab ich nicht dran gedacht, weil ich die id nicht ändern wollte.
Jetzt setze ich einfach in upd_id die id (könnte ich mir eigentlich auch sparen) und schon funktioniert es.

Danke für die Hilfe.