Bestehende Bild ersetzen

Latita

Grünschnabel
Wünsche euch allen frohe Nach-Weihnachten

mein Problemchen ist vermutlich recht leicht zu lösen, komme da allerdings nicht selbst drauf.
Ich habe mir ein Script geschrieben, dass ein Bild hochlädt, verkleinert und als jpeg in einem bestimmten Ordner mit einem eindeutigen Namen abspeichert.
Bisher war ich immer der Überzeugung, dass ein bestehendes Bild einfach überschrieben wird, wenn es das schon gibt und man ein neues hochlädt. Dem ist aber nicht so, so soll es aber sein ^^

Im folgenden mal ein Auszug aus dem Script:
PHP:
    $size = getimagesize($pic['tmp_name']);
    $file = "img/buch_$buch_id.jpg";

        $old = imagecreatefromjpeg($pic['tmp_name']); 
        $new = imagecreatetruecolor($breite,$hoehe);
        $resize = imagecopyresampled($new, $old, 0, 0, 0, 0, $breite, $hoehe, $size[0], $size[1]);
        imagejpeg($new, $file);
        echo $pic = "<img src='$file' />";

Was muss ich daran ändern, dass ein bestehendes Bild überschrieben wird?
Viele Grüße
Eve
 
Hallo!
Bisher war ich immer der Überzeugung, dass ein bestehendes Bild einfach überschrieben wird, wenn es das schon gibt und man ein neues hochlädt.
Sollte es eigentlich auch.
Daher nehme ich jetzt mal an dass das Problem in der Variable $buch besteht.
Wenn der Wert dieser Variable noch nicht in einem bestehenden Dateinamen vorkommt, dann wird halt eine neue Datei angelegt.

Gruss Dr Dau
 
Da das "echo" den generierten Dateinamen verwendet, sollte das neu hochgeladene Bild definitiv sichtbar werden.

Wenn sich die Variable $buch also nicht ändert, tippe ich auf ein Caching-Problem des Browsers. Sprich, durch denselben Dateinamen glaubt der Browser, das Bild schon zu kennen und lädt es aus seinem Cache, statt es neu aus dem Internet zu holen.

Versuche doch mal, den Cache des Browsers zu leeren und dann auf 0 Byte zu setzen. Das einmalige Drücken von Strg+Shift+R bewirkt beim Mozilla Firefox das leeren des Caches und dem Neuladen der aktuellen Seite.
 
Stimmt, am Cache kann es auch liegen.
Daran habe ich grad nicht gedacht.

Wenn es tatsächlich am Cache liegt (ruhig intensiv testen), dann könnte man auch per header() Abhilfe schaffen.
 
Hallöchen

tut mir leid, dass ich mich so lange nicht gemeldet hab. Bin immer wieder davon abgekommen.

Also am Cache lag es nicht, sondern an einer fehlerhaften Funktion. Ich hab mich eben hingesetzt und bin die Funktion Schritt für Schritt noch einmal durchgegangen.
Mein Problem war, dass diese Funktion innerhalb einer weiteren Aufgerufen wird. Ich musste also ein paar Sachen umschreiben und zu guter Letzt dafür sorgen, dass die wichtigste Variable nicht ständig durch was anderes überschrieben wird.

An dem, was ich da oben gepostet hab, was also nichts falsch :)
Na ja, außer, dass ich $pic am Ende überschreibe, habe den Variablennamen geändert. :)

Danke für eure Hilfe
 
Zurück