Stiller: MYSQL Abfrage mit Ordnerinhalt abgleichen

Hallo zusammen,

ich finde leider keinen guten Ansatz um folgendes zu erreichen:

In einer MySql-Tabelle existiert u.a. eine Spalte user_id (10 stellige Zahl).
User können bis zu 3 Bilder uploaden die in einem Ordner "userbilder" auf dem webspace abgelegt werden. Gespeichert werden diese under den Namen user_id 1-3 (1548753254-1.jpg, 1548753254-2.jpg, 1548753254-3.jpg)

Nun möchte ich gerne herausfinden, ob zu einer user_id ein Bild im Ordner "userbilder" vorhanden ist.

Danke für den ein oder anderen Denkanstoss!

Beste Grüsse

Stiller

  1. hallo,

    In einer MySql-Tabelle existiert u.a. eine Spalte user_id (10 stellige Zahl).
    User können bis zu 3 Bilder uploaden die in einem Ordner "userbilder" auf dem webspace abgelegt werden. Gespeichert werden diese under den Namen user_id 1-3 (1548753254-1.jpg, 1548753254-2.jpg, 1548753254-3.jpg)

    Nun möchte ich gerne herausfinden, ob zu einer user_id ein Bild im Ordner "userbilder" vorhanden ist.

    file_exists.

    Musst halt noch Abfragen dazu nehmen, da es ja verschiedene Grafikformate gibt. (falls du andere zulässt)

    grüße,
    henman

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    1. Nun frage ich mit einem Script ab, ob zu einer user_id ein Bild im Ordner "userbilder" vorhanden ist (Nur das erste Bild ist relevant!).

        
      $query ="select user_id from tabelle where status BETWEEN '1' AND '10' ";  
      $select = mysql_query($query);  
      while ($ausgabe=mysql_fetch_object($select))  
      {  
        
      $bilddatei = "../userbilder/$ausgabe->user_id"."-1.jpg";  
        
      if (!file_exists($bilddatei))  
      {  
        
      # Hier kommt jetzt Text und header einer E-Mail  
        
      # Mail senden  
      mail($ausgabe->email, $subject, $message, "$header");  
      }  
      }  
      
      

      Wenn ich das Script nun aufrufe werden mir genau die (im Moment) 15 E-Mails versendet von Usern die kein Bild im Ordner "userbilder" haben.

      Lasse ich aber das Script via Cronjob ausführen, bekommen alle Einträge der Datenbanktabelle eine E-Mail!

      Wie kann das sein? Wo ist mein Fehler?

      Beste Grüsse

      1. Hi,

        Wenn ich das Script nun aufrufe werden mir genau die (im Moment) 15 E-Mails versendet von Usern die kein Bild im Ordner "userbilder" haben.

        Lasse ich aber das Script via Cronjob ausführen, bekommen alle Einträge der Datenbanktabelle eine E-Mail!

        Wie kann das sein? Wo ist mein Fehler?

        Das wird das übliche sein - per Cronjob wird das Script in einem anderen Kontext ausgeführt, so dass die relative Pfadangabe nicht mehr stimmt.
        Stimmt die Pfadangabe nicht, liefert auch file_exists false - und dein Script startet sein Amok-Mailing*.
        Am einfachsten wäre es wohl, wenn du absolute Pfadangaben in Bezug auf das Wurzelverzeichnis des Servers nutzt.

        * Warum soll dein Script für jeden Fehler eine eigene Mail versenden, wenn die doch alle bei dir landen? Wäre es da nicht sinnvoller, die Fehler pro Durchlauf erst mal zu sammeln, und dann *eine* Mail zu verschicken, die alle Infos enthält?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Hi!

    Nun möchte ich gerne herausfinden, ob zu einer user_id ein Bild im Ordner "userbilder" vorhanden ist.

    Du willst also wissen, ob eine Datei existiert, was auf englisch file_exists(). Du kannst auch alle Dateien in ein Array einlesen (glob()) und darin die Dateien suchen.

    Lo!