Sepp: Datensätze mit hinterlegten Bildern vergleichen ID und ID in Namen vn Bild

ich brauche eine Gedankenhilfe:

Ich habe in einer Datenbank meine Artikel hinterlegt, alle Artikel haben eine fortlaufende ID dann habe in einem Verzeichnis sehr viele Bilder, diese sind alle durchnummeriert zu den einzelnen Datensätzen:

1k2 1k3 2k1 2k2 2k3 2k4 3k1

u.s.w.

Die zuordnung ist dann

Datensatz ID:1 dann werden alle Bilder dazu aufgerufen, in diesem Fall 1k2 1k3

Bei ID:2 dann diese: 2k1 2k2 2k3 2k4

Jetzt kommt mein Problem. Im Laufe der Jahre sind viele Datensätze gelöscht worden, aber am Anfang wurden die dazugehörigen Bilder nicht gelöscht. Nun würde ich die Bilder gerne löschen die keinen Eintrag in der Datenbank haben.

Aber ich sehe den Wald vor lauter Bäumen nicht, hat jemand eine Idee wie ich hierbei anfangen kann? Ich würde das ganze gerne in PHP, MSQL lösen.

Sepp

  1. Hallo,

    Nun würde ich die Bilder gerne löschen die keinen Eintrag in der Datenbank haben.

    hmm, wie würde ich das machen?

    • Ich hole mir zunächst mal eine Liste aller Bilder im Verzeichnis.
    • Dann gehe ich meine Datenbank durch und überprüfe bei jedem Datensatz, ob das darin referenzierte Bild (noch) im Array aus dem vorherigen Schritt vorkommt. Wenn ja, lösche ich es aus dem Array.
    • Zum Schluss gehe ich durch die noch verbliebenen Arrayeinträge und lösche diese Dateien - denn das sind logischerweise diejenigen, die von keinem Datensatz referenziert werden.

    Eventuell möchtest du im letzten Schritt nicht gleich löschen, sondern diese Bilder erstmal nur in ein anderes Verzeichnis verschieben. Sicherheitshalber. Falls du hinterher feststellst, dass doch etwas schiefgelaufen ist, oder falls du eines der Bilder später mal wieder brauchst.

    So long,
     Martin

  2. Tach!

    Nun würde ich die Bilder gerne löschen die keinen Eintrag in der Datenbank haben.

    Eine Lösung könnte sein, die existierenden IDs zu ermitteln. SELECT id FROM tabelle; und dann die Ergebnismenge in ein Array bringen. Die aus den Dateinamen extrahierten IDs gegen die Existenz in diesem Array prüfen ...

    dedlfix.