php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.05.2006, 20:06  
Neuer Benutzer
 
Registriert seit: 28.08.2005
Beiträge: 22
Peoples
Standard Bilder löschen die öffter vorhanden sind?!

Tag auch,

ich bin gerade dabei ein "kleines" Script zu schreiben welches mir ermöglicht mehrfach vorhandene Bilder zu löschen.

Vorab zur Erklärungshilfe:

Ich habe eine Registrierung in der man ein Userbild mit hochladen kann, dessen namen sich aus dem Usernamen dem Anhängsel "_reg_" und dem aktuellen unixtimestamp zusammen setzt.

Nun möchte ich überprüfen ob ggf. ein User zwei Bilder hochgeladen hat, das mache ich so:

Ich lese alle in dem Bilderordner befindlichen Bilder ein und zerteile die Bildnamen mit Hilfe des

PHP-Code:
explode("_"$bilddatei); 
Befehls.
Nun schau ich eben nach ob in meiner datenbank ein Eintrag ist, der auf den jeweiligen Bildnamen passt.
Sollte nun ein Bild vorhanden sein, für welches es keinen Eintrag gibt lösche ich dieses.

Nun mein Problem:
Ich möchte zusätzlich noch überprüfen, ob evtl. mehrere Bilder mit dem gleichen "Teil-Bildnamen" vorhanden sind.
Sollte dies der Fall sein möchte ich mit Hilfe des unixtimestamps dieses Bildes alle bis auf das "neueste" löschen.

Durch die Nutzung des Befehls
PHP-Code:
$bilder array_count_values($bildernamen); 
bekomme ich nun ein Array zurück mit den Informationen:
Array
[bildname1] => 5

[bildname2] => 3

[bildname3] => 1
....

Wie schaffe ich es nun, diese Ausgabe weiter zu verwenden, um eben zu sagen: bildname1 ist 5 mal vorhanden somit möchte ich die ältesten 4 löschen? ...

Danke schonmal vorab
Peoples ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.05.2006, 20:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Verstehe ich nicht ganz. Warum löscht du beim Hochladen eines neuen Bildes
nicht automatisch das Vorgänger-Bild? Dann hättest du die ganze Problematik nicht.

Dein Beispiel ist mir gerade zu ungenau um es nachzuvollziehen. Beim
Löschen mittels unlink() oder DELETE von MySQL kannst du doch manuell
mitzählen.
Bei MySQL einfach mysql_affected_rows() aufrufen und den Rückgabewert
speichern.
Zergling-new ist offline  
Alt 27.05.2006, 20:19  
Neuer Benutzer
 
Registriert seit: 28.08.2005
Beiträge: 22
Peoples
Standard

Hi Zegerling,

wegen dem löschen der Bilder gleich beim hochladen eines neuen, es ist gewollt dass einer mehrere Bilder hochladen kann, denn erst wenn das "neue" gesichtet worden ist, möchte ich dieses anzeigen.
Solange das nicht der fall ist, möchte ich eben, dass das alte noch angezeigt wird.



PHP-Code:
$orgpicfold '../members/userpictures/'
    
$openpic opendir($orgpicfold);
    
$count 0;
        while(
$file readdir($openpic)) 
        { 
            if(
$file != "." && $file != ".." && $file != "thumbnails"
             {
              
$array[] = $file;
             
$pic_info explode("_"$file);
            
$pic_info2 explode("."$pic_info[2]);
                        
            
$pic_name $pic_info[0];
            
$upl_when $pic_info[1];
            
$upl_time $pic_info2[0];
            
$upl_type $pic_info2[1];
            
                    
                        
            require(
"../database/dbconnect.php"); 
                        
            
$sql mysql_query("SELECT username FROM users WHERE username ='".$pic_name."'");
                if(
mysql_num_rows($sql) == 0) {
                   
unlink($file); 
                }
                else{
                
$list_pic_names[] = $pic_name;
                
$list_upl_times[] = $upl_time;
                }
                
mysql_close($dbverb);
        
            } 
        }
    
closedir($openpic);
    
    
$bilder array_count_values($list_pic_names);
    {
    
print_r ($bilder);
    
# und hier möchte ich dann sagen:
    # lösche die bilder....
    

und die Ausgabe des print_r($bilder)

Array
( [bernd] => 6
[hansihinter] => 7
[rudolf] => 6 )

So, nun eben meine Frage ist es möglich, die Ausgabe des Arrays so weiter zu verwenden dass ich evtl. in einer schleife die älteren einträge löschen könnte?

In $list_pic_names habe ich die vorhandenen "Bildteilnamen" und in
$list_upl_times[] die Zeiten an denen sie hochgeladen wurden.

Vielleicht hat ja jemand nen Denkansatz
Gruß Peoples
Peoples ist offline  
Alt 28.05.2006, 18:05  
Benutzer
 
Registriert seit: 04.05.2005
Beiträge: 41
boehseronkel
boehseronkel eine Nachricht über ICQ schicken
Standard

also ich habe es so gemacht, jedes bild was bei mir hochgeladen wird, wird mal kurz mit fopen geöffnet, der inhalt wird herrausgelesen in nen md5 hash umgewandelt und in die db geschrieben. So kann ich zu 100% sicher sein das das bild eine 1 zu 1 kopie ist ... klappte zumindest bei mir immer
boehseronkel ist offline  
Alt 28.05.2006, 18:56  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Uff du liest jedes Bild mit fopen ein? Dafür gibts doch md5_file().
Flor1an ist offline  
Alt 28.05.2006, 19:26  
Benutzer
 
Registriert seit: 04.05.2005
Beiträge: 41
boehseronkel
boehseronkel eine Nachricht über ICQ schicken
Standard

^^ hastja recht -.- dann werd ich das mal zum entlasten des servers machen :P
boehseronkel ist offline  
Alt 28.05.2006, 19:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Performance-Verbesserungen wirst du damit kaum erzielen denke ich. Letztlich muss für md5_file() die Datei auch geöffnet und komplett gelesen werden.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder ohne DB sicher speichern Diet PHP Tipps 2005 6 25.03.2009 00:07
[Erledigt] Galerie - Bilder nebeneinander Problem noOx PHP Tipps 2008 14 03.07.2008 23:48
Abfrage ob email adresse schon vorhanden ist TeazY PHP Tipps 2008 10 16.12.2007 12:22
Zip Archiv entpacken und Bilder verkleinern Simon9990 PHP Tipps 2008 5 08.10.2007 00:32
bilder zu groß?! lindner PHP Tipps 2006 9 19.10.2006 08:32
Bilder "schützen" PHP Tipps 2006 4 06.03.2006 15:25
Bilder Ordner hochladen? CHRIS PHP Tipps 2005-2 3 30.12.2005 17:20
JS: Mouseover Effekt für Bilder. Nach include geht er nicht HTML, Usability und Barrierefreiheit 4 03.12.2005 16:30
Bilder löschen PHP Tipps 2005-2 4 24.10.2005 11:37
Bilder aus einem unterverzeichis anzeigen.Hilfe PHP Tipps 2005-2 3 12.09.2005 15:36
Mehrere Bilder Hochladen und bearbeiten PHP Tipps 2005-2 7 23.07.2005 13:48
Bilder in Tabellen nixdorf HTML, Usability und Barrierefreiheit 36 09.05.2005 21:15
Bilder aus der Datenbank Skazi Datenbanken 2 09.02.2005 13:42
1000de bilder einfügen ab schnell..? :-) PHP Tipps 2004 12 11.08.2004 20:42
Bildübersicht alle Bilder im Ordner... PHP Tipps 2004 46 07.08.2004 20:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bilder löschen, md5_file performance, php mehrere bilder löschen, vorab bild löschen, wie bilder löschen, bild löschen weoter vorhande, http://www.php.de/php-tipps-2006/40300-bilder-loeschen-die-oeffter-vorhanden-sind.html, öffter

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.