Also:
es ist nicht so schwer, wie es scheint. Erstelle ein Formular mit den Feldern, die der User ausfüllen muss. Für die Kategorie solltest Du ein Select-Feld für die vorhandenen Kategorie und ein optionales Text-Feld für eine eventuelle neue Kategorie nehmen.
SELECT-FELD:
function holeKategorien() {
//MySQL-Verbindung muss global sein
$sql = @mysql_query("SELECT * FROM Kategorien ORDER BY name ASC");
if (@mysql_num_rows($sql) > 0){
print "<select name="kategorie">";
while($tmp = @mysql_fetch_array($sql)) {
print "<option value="".$tmp[id].""";
if ($_POST['kategorie'] == $tmp[id]) print " SELECTED";
print ">".$tmp[name]."</option>";
}
print "</select>";
}
}
Folgendes passiert:
Der User loggt sich ein, um Bilder hochzuladen. In der Variablen $session[id] hast Du schonmal die Benutzerdaten gespeichert, die Du als hidden-tag im Formular einbinden kannst.
Nun macht der User Angaben zum Bild (Kategorie, Datum, ggf. Bildname). Wenn er auf "hochladen" klickt, kannst Du als erstes überprüfen, ob er eine vorhanden Kategorie gewählt hat (holeKategorien()) oder eine Neue erstellen möchte. Wenn erstes der Fall ist, ist der Ordner der Kategorie ja schon vorhanden und die ID der Kategorie ist in $kategorie gespeichert. Das Bild kann also einfach in den Ordner kopiert werden. Dabei berührt das nur eine Tabelle. Und zwar Bilder:
@mysql_query("INSERT INTO Bilder (user,kategorie,bild,datum) VALUES ('$user_id','$kategorie','$bild','$datum')");
Das Datum musst Du vorher mit mktime() erstellen, damit Du es sortieren kannst.
$bild ist in Deinem Fall $HTTP_POST_FILES['bild']['name']
Gruß,
Stephan