Mysql abfrage in while schleife bringt probleme

Grunge

Erfahrenes Mitglied
Hey Leute...total simples beispiel doch dieses bißchen PHP bringt meine ganze Seite durcheinander.

ALSO. . .

Es ist wie folgt: In einer Liste sollen alle User angezeigt werden, die momentan "online" sind. Funktioniert im übrigen einwandfrei. Danach soll jedes gefundene Datenbankeintrag verwendet werden, um das entsprechende Foto dieses Users zu laden. Doch das macht mein Script eben nicht. Ich hab die Seite schritt für schritt auskommentiert um den Fehler zu finden. Und ich habe ihn, weiß nur nicht wieso das falsch ist.

Schaut selbst:
PHP:
<select onchange="document.getElementById('imgID').src=this.options[this.selectedIndex].value;" style="height:190px; font:Verdana, Arial, Helvetica, sans-serif; font-size:12px; color:#FFFFFF; width:100%; background-color:#a3915a; border:none;  " name="select" size="10" id="select">
      
      <?
	  
	  //Einträge bearbeiten
	  $query = "
    SELECT
             `online_user`
      FROM
            `g2g_online`
      WHERE
            UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(`online_time`) <= 180 ORDER BY online_user ASC "; 
			
			
			
			$onr=mysql_query($query) or die(mysql_error());
			while($row=mysql_fetch_assoc($onr)){
			$user=$row['online_user'];					
				echo " <option value=\"".imageGet($user)."\">".$user."</option>";
			}
	  ?>
      
      </select>

Die Funktion, die ich nur formuliert habe, weil ich dachte es bringe was sieht so aus:

PHP:
function imageGet($nick)
{
						$img="SELECT * FROM g2g_user_images WHERE nick='".$nick."' AND standard='1'";
						$result=mysql_query($sql) or die(mysql_error());			
if(mysql_num_rows($result)==0){
	  return $img="user_images/no_img.jpg";
	  }else{
	  $img=mysql_fetch_assoc($result);
	  return $img=$img['img'];
	  }
}

die Zeile die Probleme macht, ist folgende:
PHP:
$result=mysql_query($sql) or die(mysql_error());

Denn dann funktioniert alles. Zwar gibts kein Foto, aber immerhin wird die Seite richtig zu Ende aufgebaut und die Liste wird mit Werten gefüllt. Ich denke mal dass es nicht ausschließlich an dieser einen Zeile liegt, denn die scheint ja richtig zu sein, aber hoffe das ihr nen Grund kennt. Jedenfalls wenn ich die Zeile auskommentiere/lösche, gibt es keine Probleme. . . Fehlermeldungen kommen nicht. . .

BESTEN DANK IM VORRAUS

Ben
 
Hallo @Grunge

Er meint das hier:
Mysql Join

Mit einem Join kannst du Tabellen mit einem query verbinden.
Der Vorteil liegt darin, dass du nicht 1000 Queries machen musst, sondern einer.

Und eines der performancelastigsten Dinge sind Mysql Queries.

Villeicht am anfang etwas verwirrend, aber du wirst sie schnell lieben lernen ;)

Grüße SimonErich
 
Auf der Seite, die ich Dir verlinkt habe, sind doch Beispiele vorhanden. Aber bei einer Reaktionszeit von 3 Minuten hast Du vermutlich gar nicht draufgeklickt?
Du bräuchtest einen INNER JOIN.

LG
 
@kuddeldaddeldu

ich kannte diese gar nicht bzw. wusste nicht, dass selfhtml auch mysql beiträge hat.
Aber danke. :) Die ist wirklich sehr viel einfacher zu verstehen als das Mysql Manual :)
 
nene habe es nur zu spät gesehen =)

also ich habe mich mal dran versucht. . . Aber irgendwie fehlt mir noch das praktische verständnis, um das zu verstehen und richtig auszuführen . . .Schaut mal:

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";

Ausgabe ist leer. . .Kann mir jemand helfen?
 
Hi,

das Prinzip hast Du doch schon verstanden. Genauso müsstest Du jetzt eigentlich alle Benutzer samt der Bilder bekommen. Hast Du das Statement mal in phpMyAdmin ausprobiert?

@Simon: Die beiden Self-Artikel sind wirklich nett für Leute, die noch nie etwas von Joins gehört haben. Das Manual ist da doch etwas... äh ... sperrig.

LG
 
@Grunge

Bitte schau dir mal dein Statement genau an.
Du hast im Bereich zwischen SELECT und FROM einen Beistrich zu viel.
Bild mal bitte ein or mysql_error(); an dein Mysql Query dran, dann würdest du das sehen.

@kuddeldaddeldu
Ja stimmt. :)

Grüße Simon
 
Zurück