Mysql abfrage in while schleife bringt probleme

Hi,

da ist ein Syntax-Fehler drin, den sowohl phpMyAdmin als auch die Funktion mysql_error() melden müssten. Das Komma hinter dem letzten selektierten Feld muss weg.

LG
 
stimmt. . . das problem ist, dass er nun alle, die irgendwann mal online waren und ein bild beseitzen ausgibt. Das ist ne menge =) wie kann ich
a) mit einbringen das es sich in der Tabelle von den bilder um standard=1 handeln muss
b) meine Bedingung das der benutzer momentan online sein muss?
 
Okay wusste nicht, dass es so einfach ist. . . mhh nun gibts noch ein problem. er zeigt mir nur einen eintrag an...

PHP:
			$sql="SELECT
    online_user,
    g2g_user_images.img
FROM g2g_online
INNER JOIN g2g_user_images ON g2g_online.online_user = g2g_user_images.nick WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`online_time`) <= 180 AND g2g_user_images.standard='1' ORDER BY online_user ASC";

			
			$onr=mysql_query($sql) or die(mysql_error());

das ist meine abfrage
 
mh das problem ist folgendes:

dadurch das die bedingung auf standard=1 steht, lädt er die anderen online user nicht. soll er aber. . . aber nich jeden einzelnen . . . sondern nur den mit standard=1 und wenn es so einen nicht gibt, wird er manuell erzeugt. . . (kein bild.jpg)
 
Wenn ich richtig verstanden hab, was du meinst, dann versuch es mit einem LEFT JOIN, dann lädt er alle User (auch die ohne Bild) und mach mit einem IF bei den selected fields, dass wenn kein Bild existiert er eben deinen Wert als if nimmt.

Falls du das mit einem bestimmten avatar-user (der dann mit dem user verknüpft wird) machen musst, dann mach es einfach mit dem LEFT JOIN, aber bau bei der ON Bedingung ein OR ein.
also
PHP:
... LEFT JOIN avatar
            ON (user.userid = avatar.userid OR avatar.standard = '1')

Versuchs mal so :)
 
mhh langsam komm ich selber nicht mehr hinter mir und euch her. . . also nochmal...

ich habe zwei tabellen. Eine in der die user gespeichert werden, die online sind (bzw, wenn ein User etwas tut wird seine IP, sein nick und die uhrzeit gespeichert) und eine tabelle in denen die bilder gespeichert sind,

Das script soll alle User, die "online" sind heraussuchen und dazu das passende Standard-BIld (standard=1). Wenn kein standard Bild vorhanden ist, dann setze ich per if hinterher einen verweis auf ein bild, das jeder user ohne bild erhält.

Was du, Simon, jetzt aber geschrieben hast, ist doch, dass er entweder alle online user, oder alle mit nem Standardbild. Das ist doch dann aber falsch
 
Hi,

so, jetzt verstehe ich das auch. Ein LEFT JOIN ist da schon das richtige Mittel. Die ON-Bedingungen musst Du allerdings mit AND verknüpfen:

SQL:
SELECT
    online_user,
    g2g_user_images.img
    FROM g2g_online
    LEFT JOIN g2g_user_images 
    ON (g2g_online.online_user = g2g_user_images.nick 
       AND g2g_user_images.standard='1') 
    WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`online_time`) <= 180  
    ORDER BY online_user ASC

Durch den Left Join bekommst Du alle User die Online sind. Wenn es in g2g_user_images keinen passenden Datensatz gibt, ist img null. Das kannst Du dann ja bei der Ausgabe abfragen.

LG
 
Zuletzt bearbeitet von einem Moderator:
Zurück