Freunde DB - Problem mit Fotos und Umlauten

Chocobanana

Erfahrenes Mitglied
Hi Leute!

Ich hab mir eine kleine Adressdatenbank gebastelt, da kann jeder ein kleines Foto uploaden. Die Einträge werden dann automatisch anhand von Steckbriefen auf Tabellenbasis in die Homepage integriert, wobei jedes Foto folgendes Format hat: pic_NACHNAME.jpg --> Und hier liegt auch das Problem:

Wenn einer dann z.B. Müller heißt, wird das Foto ordnungsgemäß auf pic_Müller.jpg gespeichert, nur wird es dann im IE eben nicht angezeigt. Hat wer eine Idee wie ich dieses Problem lösen könnte?

Greetz,

Choco
 
Zwei Ideen:
1) Du speicherst das Bild unter dem Namen IDder Person.jpg und greifst darüber zu
2) Eine Spalte "pic" wo du dann einfach den Originalnamen vom Hochladen beibehälst ...
 
Original geschrieben von _voodoo
Zwei Ideen:
1) Du speicherst das Bild unter dem Namen IDder Person.jpg und greifst darüber zu
2) Eine Spalte "pic" wo du dann einfach den Originalnamen vom Hochladen beibehälst ...

Hmm, Ideen find ich gut. Nur, bei 2tens:

Wie verhindere ich das Bilder überschrieben werden? Jeder xte speichert sein Bild zum uploaden ja unter foto.jpg ab.

Zu erstens: Wie finde ich vor dem Eintragen die ID die vergeben wird heraus?
 
Da gibt es eine ganz einfache Lösung:

Du ordnest dem Bild einfache eine zufällige ID zu:

PHP:
$bild_id = md5(uniqid(microtime()));


Dieser Code beschert dir eine 32-stellige Zeichenkette, die aus Zahlen und Buchstaben besteht, nimm einfach diese als Dateinamen (+Endung) und speichere sie auch in der Datenbank.
 
Ja, bei zweitens hast du Recht - hab ich nicht weit gedacht :)

Zu erstens; normalerweise indexiert (?) man seine Tabelle ja anhand einer Spalte "ID" - diese ID ist ja einmalig, da sie nur einmal vergeben wird.
Einmalige ID = Einmaliger Dateiname.
 
Dracaelius hat gesagt.:
[B

Du ordnest dem Bild einfache eine zufällige ID zu:

PHP:
$bild_id = md5(uniqid(microtime()));

Falls ich jetzt nicht falsch liege, dann bekomm ich daraus wie du sagst eine zufällige ID. Diese wird aber unabhängig von der DB berechnet oder? Wie kann ich dann sicherstellen dass nicht 2 mal die gleiche ID berechnet wird?

Bidde schimpfen falls ich da jetzt was nicht gecheck hab.
 
Wenn eh nur ein Bild pro Nutzer zugelassen wird, versteh ich persönlich nicht, warum man nicht gleich die ID in der Tabelle der User nimmt.
 
Wahrscheinlich, da diese ID erst erstellt wird, wenn man das Formular abschickt und das Bild nunmal auch im Formular drin steht.

Man könnte allerdings die höchste ID aus der Tabelle nehmen und um eins erhöhen dann hätte man doch die ID, die beim absenden erstellt wird.

Oder irre ich mich und evtl. Lücken beim löschen verschiedener Daten werden von der ID gefüllt (glaube zu wissen das dem nicht so ist).
 
Original geschrieben von cronj
Wahrscheinlich, da diese ID erst erstellt wird, wenn man das Formular abschickt und das Bild nunmal auch im Formular drin steht.

Man könnte allerdings die höchste ID aus der Tabelle nehmen und um eins erhöhen dann hätte man doch die ID, die beim absenden erstellt wird.

Oder irre ich mich und evtl. Lücken beim löschen verschiedener Daten werden von der ID gefüllt (glaube zu wissen das dem nicht so ist).

Ne das hast schon Recht, die ID einer Tabelle ist einzigartig: Wenn man die Zeile in der Tabelle löscht, dann wird diese ID weder neu vergeben noch "rutschen" die anderen Datensätze nach.

Die ID um 1 zu erhöhen wär schon möglich, aber dann müsste ich zuerst wieder was aus der DB auslesen. Und (keine Ahnung warum), ich will die DB Events gering halten, dann find ich meine Fehler leichter (ist aber nur meine Ansicht).

Ich hab das Problem aber nun mit der md5 Methode gelöst. Funktioniert super. Danke an voodoo und Dracaelius!
 
Zurück