User Bildergalerie mit Namensschilder Problem

aargau

Erfahrenes Mitglied
Ich habe ein kleines Problem. Ich denke eher es ist nur ein Denk Problem von mir...

ich habe bei meiner Member Page ( eine Partyseite ) für User ein Upload. Wenn ein user ein Bild Hochladet wird dies in der Tabelle "memberpic" gespeichert. Dazu natürlich die User ID und sonstige infos. Nun können die User aber wenn sie Bilder von anderen User ansehen ein Namensschild setzen (Wenn sie auf das Bild Klicken wird danach dort eine Ebene mit ihrem Usernamen angezeigt.) Diese sollen dann im jeweiligen eigenen Profil auf angezeigt werden. Jedoch weis ich nicht wie ich das lösen soll... Soll ich in die Tabelle der Bilder "memberpic" dann auch diese Bilder zusätzlich speichern, dann würden sie aber jeweils zuforderst stehen im Profil des users welches ein Namensschild hat, oder wie soll ich das lösen, damit die Bilder nach Zeit geordnet sind?

Allso Wenn User 12 Bild dasbinich.jpg - picid= 91 um 12:02 Hochladet
User 11 jedoch 12:03 das Bild daswarich.jpg picid=92 Hochladet
und Danach auf das Bild 91 vom user 12 sein Namensschild setzt es immer noch vor dem das er selbst hochgeladen hat angezeigt wird?

Ich hoffe ihr wisst was ich meine und könnt mir helfen!
 
Hallo!

Speicher den Zeitpunkt des Uploads in der Datenbank.
Wenn ein User mehrere Bilder hochladen darf, würde ich für die Bilder eher eine extra Tabelle anlegen.
In dieser steht die Bild-ID, der Zeitpunkt des Uploads, das Bild selbst (bzw. der Pfad zu dem Bild) und die User-ID.
Wenn Du Lust hast, kannst Du auch noch zusätzlich den Zeitpunkt der letzten Änderung speichern (macht natürlich nur Sinn wenn die User die Sortierreihenfolge selbst wählen können).

Gruss Dr Dau
 
Du meinst allso ich soll die Hochgeladenen Bilder in eine Tabelle und die Namnnsschilder in eine Tabelle Speichern?

z.B.
memberpic
(picid,user,pfad,bildname,zeit,ip)
nschildpic
(nid,picid,user,pfad,bildname,posx,posy,zeit,ip)

Sowit sogut, nur wie gebe ich die dann in der Galerie aus? Jetzt ist es so: SELECT * FROM memberpic WHERE user="$userid" danach würde das ja nicht mehr gehen, da die Bilder mit den Namensschilder in einer anderen Tabelle sind.
 
Ich habe es mir angewöhnt alle Bilder gleich mit Zeitstempel zu speichern, dann kommen solche Probleme gar nicht erst.
Beispiel: 116464_dasbinich.jpg

Dann besteht auch nicht die Gefahr, dass jemand ein Bild mit selben Namen etc.. hochlädt was schon unter den Namen vorhanden ist.
Und aus den Namen könnte ich dann sogar noch die Upload-Zeit ausgeben, ganz ohne DB-Query.
 
hmm ja schon, nur was bringt es mir wenn die Zeit da drinn steht? die in die Tabelle zu schreiben ist ja keine grosse sache... Ich weis nur nicht wie ich die beiden Kombinieren soll, so das die Bilder vom User und von anderen usern wo ich mein schild drauf mach in der selben Galerie vom User angezeigt werden. Teilen möchte ich das eigentlich nicht, allso das es eine gibt "Selbst Hochgeladene Bilder von *user*" und eine "Bilder mit Namensschilder von *user*"
 
So, nun bin ich etwas am ende :( Habe Stunden lang getestet, aber es geht einfach nicht... Ich nehme mal an es ist nur meine Abfrage falsch, das andere wird schon stimmen.

Code:
 $abfrage3 = "SELECT bilder.idp, bilder.pfad, bilder.pic, bilder.thumb, bilder.bigimage, bilder.user, bilder.time, bilder.ip, nschild.nsid, nschild.nsx, nschild.nsy, nschild.nsuserid, nschild.bildid, nschild.bildzeit FROM bilder, nschild WHERE bilder.idp='$nid' OR nschild.nsuserid='$nid' AND nschild.bildid == bilder.idp";

Tabellen:
bilder(idp,pfad,pic,thumb,bigimage,user,time)
nschild(nsid,nsx,nsy,nsuserid,bildid)

Hoffe es ist in etwa klar wie ich es meine
 
Schonmal versucht zu schauen ob MySQL nen Fehler bringt?
Einfach mit:
PHP:
mysql_query($abfrage3) or die(mysql_error());
sonst kann ich in der Query grad keine größeren Fehler sehen...

[edit]
Es ist sinnvoll das bei jeder Query zu machen, zumindest im Entwicklungsstatus da so MySQL-Fehler schneller erkannt und behoben werden können. ;)
[/edit]
 
vielen Dank für den Tip! Dank dir hab ich den Fehler herausbekommen... Ich habe "==" geschrieben anstelle von "="

Nun hab ich aber tozdem noch ein Problem. Wenn ich nun ein Namensschild setze, wird das Bild zwar im Profil angezeigt, wenn ich aber einfach ein Bild Hochlade ohne schild wird nichts angezeigt... An was könnte dies liegen?
 
Siehste und sowas sieht man eben mit mysql_error() besser, ich gebs ja zu, ohne diese Funktion wäre ich mit meinen Schreibfehlern des öfteren auch aufgeschmissen. :D

Zu deinem Problem:
Du machst mit der "AND nschild.bildid = bilder.idp" das Bild vom Schild fest abhängig, wenn ich mir das recht anschaue ist diese Klausel überflüssig da du ja in beidem Tabellen die "$nid" also wahrscheinlich die User-ID oder was auch immer gespeichert hast und somit bereits einen Bezug hast. Nimm einfach mal die "AND"-Klausel raus das düfte das Problem breits beheben oder auch nicht, ist das was ich jetzt probieren würde. ;)
 
hmm nein, wenn ich das AND lösche geht es auch nicht, das liegt auch daran, das er dadurch die Bild ID in der Bilder Tabelle anschaut und dann sagt wo das Bild liegt etc. Sonst muss ich hald einfach beim Upload selbst das Bild noch in die Namensschilder eintragen, das es dann angezeigt wird ( dann ohne Koordinaten)

Aber mal sehen, bin im moment auch etwas Müde, vieleicht sehe ich es wenn ich geschlafen habe was da nicht stimmt :D

und ja, $nid ist die User ID
 
Zurück