dateinamen veraendern

sh0x

Erfahrenes Mitglied
Hallo Jungs,

Bin PHP-Anfaenger und
moechte ein Fotogalerie-script schreiben. wenn man ein Foto hochlaedt, soll zunaechst geprueft werden, ob es schon vorhanden ist. Und wenn ja, soll einfach eine Zahl hinten rangehangen werden.

Beispiel:
fotoxy existiert schon, also wirds als fotoxy1 gespeichert

wenn es nun schon ein fotoxy1 gibt und man nochmal was Gleichnamiges hochlaedt, soll es unter fotoxy2 gespeichert werden usw.

hat einer eine Idee?
 
Willst du ein komplettes Script hingeklatscht bekommen!?..

Ich denke nicht das das sinn und zweck der Sache ist.. so lernst du nichts!

Mach dir erstmal ein Konzept:
1. Pflichtenheft (was soll das Programm können)
2. Grobkonzept (welche "Bausteine" benötigt dein Script)
3. Feinkonzept (was genau soll welcher Baustein (bei OO z.b. Klassen sonst Funktionen) leisten)
4. Implementierung (Coding der einzelnen Funktionen oder Klassen).. und genau an der Stelle wirst du auf Probleme stoßen bei denen du hier Fragen stellen kannst (!)

MfG ... viel Glück... Dominik
 
Ach ja.. und falls du doch wirklich schon ein konkretes Problem haben solltest dann wäre es hilfreich den entsprechenden Codefetzen mal zu sehen und genau zu sehen WAS jetzt dein Problem ist.. ich hab so ne gewisse Ahnung das du Vergleichsoperatoren :google: brauchst.. aber zeig erstmal her wies bis jetzt läuft ;)

MfG Dominik
 
Hi!

Also: Mit file_exists($path_and_filename) kannst du überprüfen, ob eine Datei existiert.
Wenn es die Datei gibt, musst du den letzten Punkt finden und davor eine Zahl einfügen.
Dann musst du wieder gucken, ob es die Datei schon gibt (Schleife!)
Eventuell musst du die eingefügte Zahl um eins erhöhen und wieder gucken...
Wenn es die Datei noch nicht gibt, kannst du den Dateinamen zurückgeben, oder so.

Mamphil
 
Habe das jetzt mit explode() versucht, glaube aber irgendwie nicht, dass es eine gute Loesung ist, weil wenn ein Dateiname nun 2 Punkte hat, klappt es nicht.
Hier der Code:

Code:
<?php
error_reporting(E_ALL);
$upload_path = "bilder";       //Hier mein Bildverzeichnis
if (file_exists("$upload_path/$datei_name")) die("Fehler, Bild schon vorhanden");
else {
move_uploaded_file($datei, "$upload_path/$datei_name") OR die("Fehler beim Verschieben in Bilderordner");

$maxpix = 100;
$dest_w = 0;
$dest_h = 0;

// Ermitteln des vermutlichen Dateityps
$pos = strrpos($datei_name,'.') + 1;
$file_ext = substr($datei_name,$pos);

$thumbname = explode(".",$datei_name);

//Je nach Dateityp Ausleseverfahren switchen
switch(strToLower($file_ext)) {
  case 'png':
  $image_src = imageCreateFromPng("$upload_path/$datei_name");
  break;

  case 'jpeg':
  case 'jpg':
  $image_src = imageCreateFromJPEG("$upload_path/$datei_name");
  break;
}

//Ermitteln der Bildgroesse
$src_w = imagesx($image_src);
$src_h = imagesy($image_src);

if($src_w > $src_h) {
  $dst_w = $maxpix;
  $dst_h = $maxpix / ($src_w / $src_h);
}
  elseif ($src_w < $src_h) {
    $dst_w = $maxpix / ( src_h / src_w );
    $dst_h = $maxpix;
  }
    else {
      $dst_w = $maxpix;
      $dst_h = $maxpix;
    }

$image_dst = imageCreateTrueColor($dst_w,$dst_h);
imageCopyResampled($image_dst,$image_src,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);

imageJPEG($image_dst,"$upload_path/$thumbname[0]"."_thumb.jpg",30);
 imageDestroy($image_src);
 imageDestroy($image_dst);
}
?>
 
@SilentWarrior:
Kommt drauf an was du unter Pflichtenheft verstehst...
bei einem kleinen Script ist das bei mir ein Schmierzettel mit 5-6 Stichworten.. natürlich nicht für eine einzelne Funktion.. aber wenn ich ein Photoalbum machen wollte würd ich mir schon kurz notieren was mein Script leisten soll.. sonst vergess ich doch im eifer des Gefechts irgendwas... ganz nebenbei solltest du das auf JEDEN Fall machen wenn du OO programmierst den anders wirst du nie sinnvolle Klassen konzipieren können..

MfG Dominik ;)
 
@all

ich denke, ich habe gezeigt, dass ich mich schon mit dem Thema beschaeftige und von euch nicht irgendwas hingecodet bekommen moechte, sondern selbst lernen will.

vielleicht habt ihr also einen Tipp, wie ich mein Problem loesen koennte.
Habe mir ueberlegt, dass ich solange die Datei schon existiert (file_exists) eine Zahl zwischen .jpg, jpeg oder .png packen muss.

Beispiel:
vorher: cooles_bild.jpg
hinterhet: cooles_bild1.jpg

Ich lese mir gerade etwas ueber Regex zu diesem Thema durch, bin aber noch totaler Anfaenger.
!*(.jpg|.jpeg|.png)$!i wuerde ja schonmal auf alle Dateinamen matchen, die mit den 3 Endungen aufhoeren. Wie bekomme ich jetzt jedoch zwischen die Endung und das davor die Zahl?
und wie gucke ich nach, ob nicht schon eine Zahl dasteht, die nur erhoeht werden muss.

Bitte helft mir,
Gruesse!
 
Rein theoretisch kannst mit ereg_replace() bzw eregi_replace() einfach nur .jpg .jpeg .gif bzw .png durch 1.jpg 1.jpeg 1.gif bzw 1.png ersetzen... allerdings musst dir dann noch ne Kleinigkeit einfallen lassen falls schon einmal die selbe Datei hochgeladen wurde.. irgendwie mit schleife und dann 2.jpg usw.. allerdings muss bei ereg_replace () ein String zum ersetzen verwendet werden.. d.h. du kannst da net einfach nur den counter nehmen....

MfG Dominik ;)
 
Zurück