Erkennen ob Eintrag in MySQL DB gelöscht wurde

Diskutiere mit über: Erkennen ob Eintrag in MySQL DB gelöscht wurde im Web-Programmierung Forum

  1. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    Registriert seit:
    17.09.2003
    Guten Morgen,

    ich möchte über eine Funktion erkennen ob ein Eintrag in der Datenbank gelöscht wurde. Hintergrund ist, dass ich dem User, wenn er ein Foto hochgeladen hat und dieses gelöscht wurde gerne mitteilen würde, wenn er das nächste Mal die Seite betritt, dass der die "Terms-of-use" gebrochen hat und bitte darauf achtet, was er hochgeladen hat.

    Momentan sieht mein Ansatz so aus:

    PHP:
    <?php
        
    if(isset($_COOKIE['fileaddress']))
    {
        include(
    'config.inc.php');
      
    $db2 mysql_select_db($db_name);
      
    $cookieinhalt $_COOKIE['fileaddress'];
      
    $result=mysql_query("SELECT * FROM spongedpics WHERE rndid = '$cookieinhalt'"); // WHERE file_id='$file_id'");
            
        
    while ($array mysql_fetch_array($result,MYSQL_ASSOC)) 
        {
            if (
    $array["rndid"] = "") {
            echo 
    "<div class='warning'><b>WARNING!<br>The picture with your ID <span style='color:#ffb400';>" $cookieinhalt "</span>,<br>that you have uploaded at your last visit was <b>DELETED</b> because you broke the terms-of-use!<br>";
            echo 
    "<br>Please read them again and handle with care!</div>";
            }
            else
            {    
            echo 
    "This is the last picture that you have uploaded<br><br>";
            echo 
    "<a href='http://content.spongedpics.com/"$array['filename'] ."' target='blank'><img src='http://content.spongedpics.com/resized_" $array['filename'] ."' border='0'></a>";
            }
        }
    }
    else
    {
        echo 
    "You have not uploaded any picture with this computer/browser yet or you have deleted your cookies since your last visit.<br>";
    }
    ?> 
    Was ich jetzt nicht hinbekomme ist der Abruf vom Typ "Wenn Eintrag $rndid nicht vorhanden ist, dann zeige mir diesen Text an".

    Vermutlich habe ich einfach Tomaten auf den Augen :)
     
  2. Saugkraft

    Saugkraft Super Moderator

    Beiträge:
    9.958
    Zustimmungen:
    1.663
    Registriert seit:
    20.02.2005
    Versteh ich das richtig? Du gibt's dem User die Möglichkeit, was zu löschen und willst ihn dann nachher drauf hinweisen, dass das laut Terms-of-use nicht erlaubt ist? :kopfkratz:
     
  3. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Code:
    if ($array["rndid"] = "") {
    ist kein Vergleich, sondern eine Zuweisung !

    Zudem steht in der Query:

    Code:
    ...WHERE rndid = '$cookieinhalt'"
    das heißt Deine if-clause kann bei Vergleich ur true sein, wenn auch $cookieinhalt leer ist. So gewollt?
     
  4. BuRn_Colonia

    BuRn_Colonia MacUser Mitglied

    Beiträge:
    771
    Zustimmungen:
    14
    Registriert seit:
    27.06.2004
    nein, das soll dem user bescheid geben wenn ein bild von den admins gelöscht wurde weil es gegen die terms verstoßen hat, oder DieTa?
     
  5. Pingu

    Pingu MacUser Mitglied

    Beiträge:
    4.894
    Zustimmungen:
    341
    Registriert seit:
    04.08.2003
    Von Hause aus merkt sich das MySQL nicht, außer Du hast das Logging eingeschaltet und wertest die Log-Datei aus.

    Ich weiss nicht wie Du es im Gesamten realisiert hast, aber ich würde folgenden Ansatz gehen:
    Ich gehe davon aus, dass jedes Bild aus zwei Komponenten besteht, aus den Meta-Daten, die in der Datenbank stehen, und den eigentlichen Daten, die entweder im Dateisystem liegen (meine Variante) oder ebenfalls in der Datenbank. Wenn jetzt ein Bild gelöscht wird, werden nur die eigentlichen Daten gelöscht. Die Metadaten dagegen verbleiben in der Datenbank, bekommen aber den Vermerk, dass das Bild den Status gelöscht hat. Dies hat den Vorteil, dass Du damit in einem einfachen Rahmen verhindern kannst, dass "gebannte" Bilder erkannt werden können. Dazu vermerkst Du in den Metadaten zusätzlich einen Hash-Wert über das Bild. Diesen brauchst Du nur vergleichen, wenn der selbe Benutzer ein Bild hochladen möchte. Damit verhinderst Du, dass ein Nutzer das selbe Bild unter einem anderen Namen nocheinmal hochlädt. Wenn es jetzt noch ein passenden Hash-Algorithmus gibt, der bei ähnlichen Bildern gleiche Hash-Werte erzeugt, würden auch ähnliche Bilder und nicht nur selbe Bilder erkannt werden. Leider weiss ich nicht ob es solche Hash-Algorithmen in der Bildverarbeitung existieren. Dazu müsste man sich mit dem Thema mehr auseinandersetzen.
     
  6. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    Registriert seit:
    17.09.2003
    @BuRN_Colonie: Eh ja richtig!

    Sorry Saugkraft - habe mich falsch ausgedrückt :)

    @Wegus:
    Wenn $cookieinhalt leer ist, wird das ganze ja gar nicht angezeigt. Es geht geht mir ja um die Abfrage, ob 'rndid' überhaupt existiert.
     
  7. Saugkraft

    Saugkraft Super Moderator

    Beiträge:
    9.958
    Zustimmungen:
    1.663
    Registriert seit:
    20.02.2005
    Ah, jetzt, ja. Eine Insel. :)

    Na wo liegt das Problem? Boolsches Datenbankfeld namens terms, das gesetzt wird, wenn eben das passiert ist. Ist doch viel einfacher. Wozu umständlich über DB Logging arbeiten? Das hat ganz andere Aufgaben.
     
  8. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    Registriert seit:
    17.09.2003
    Die Herangehensweise hat was! Da könnte ich eigentlich eine einfaches Feld definieren die sagt: "Ok" oder "Deleted" und dann daraufhin abfragen.

    Bisher handhabe ich es allerdings so, dass die gelöschten Bilder auch auf einen Schlag gleich auch die DB-Einträge löschen, denn wenn der Service (www.spongedpics.com) einmal läuft werden das ganz schnell SEHR viele Einträge werden.
     
  9. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    Registriert seit:
    17.09.2003
    Nee nee DB-Logging verwende ich dafür nicht.

    "terms" sagt mir jetzt nix, aber ich glaube das ist die gleiche Variante wie das Feld was ich im Post eben gepostet habe nur eben mit "true/false" statt "Ok/Deleted" :) Gut - ist natürlich sauberer und eine ideale Anwendung für Boolean.
     
  10. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    dann ist isset Dein Freund:

    http://de3.php.net/manual/de/function.isset.php


    Da PHP Typenlos ist, ist =="" keine ausreichende Prüfung auf nicht Vorhandensein! Eine Variable $test['123'] ist nicht existent wenn:

    Code:
    $test['123']=null;
    // oder
    unset($test['123']);
    
    ausgeführt wurde! In Deinem Fall ist sie nur leer! Soll eine Typbindung bei leerem String erfolgen muß sogar

    $test['123]==="";

    dort stehen!
     
Die Seite wird geladen...
Ähnliche Themen - Erkennen Eintrag MySQL Forum Datum
Leidiges Thema Sonderzeichen mit php und mysql Web-Programmierung 22.02.2013
Dynamisch erstellte Navugation mit MySQL Anbindung Web-Programmierung 10.11.2012
Dateiendung erkennen Web-Programmierung 20.10.2012
MySQL SELECT über mehrere Tabellen Web-Programmierung 19.09.2012
PHP-4.3.4 (entropy.ch) wird trotz Eintrag in httpd.conf nicht ausgeführt Web-Programmierung 11.09.2006

Diese Seite empfehlen

Benutzerdefinierte Suche