3 Fache Mysql Abfrage = Fehler?

fUnKuCh3n

Erfahrenes Mitglied
Hallo,

ich habe eine Freundeliste programmiert und jetzt bin ich gerad dabei sie zu erweitern, es soll halt erstmal der normale Datensatz aus der Datenbank ausgelesen werden, dann soll anhand der ID Des Freundes sein Name und der Letze Login ausgelesen werden, doch wenn ich den letzen Login versuche auszulesen, dann bekomme ich immer nur noch den 1. Datensatz der für die Freundeliste gelistet ist...

Sonst kommen alle Einträge die für Mich als User vorhanden sind raus, aber sobal ich mir die Loginzeiten geben lassen will macht er Schluß!

PHP:
<?
error_reporting(E_ALL);
include("config.php");
include("connect.php");

$result = mysql_query("SELECT * FROM `freundeliste` WHERE `userid`= '1'");
while ($row = mysql_fetch_assoc($result))
{
    $fid = $row['fid'];
    $freundid = $row['freunduserid'];
    $status = $row['modus'];
    
$result2 = mysql_query("SELECT * FROM `user` WHERE `userid`= '$freundid'");
while ($row = mysql_fetch_assoc($result2))
{
  $freundname = $row['benutzername'];
  
$result3 = mysql_query("SELECT * FROM `login` WHERE `userid`= '$freundid'");
while ($row = mysql_fetch_assoc($result3))
{
    $timestamp = $row['timestamp'];
    $lastlogin = date("d.m.Y - G:i", $timestamp);
  
    echo "$fid - $freundid - $status - $freundname - $lastlogin <br>";
}
}
}
?>
 
Ich kenn mich da jez net so gut aus....aber meiner ersten Frage nach , die sich mir stellt?!

Kann man überhaupt dreimal hintereinander $row = erstellen sollte man nicht lieber $row1, $row2, $row3 Oder bei dem $row wo Datensätze hinzugefügt werden so machen:

$row. = ..... durch den "." wird dann glaube ich alles dem $row angehängt....


MFG Niels
 
Probiers mal so:
PHP:
<?
error_reporting(E_ALL);
include("config.php");
include("connect.php");

$qry = mysql_query("SELECT * FROM `freundeliste` WHERE `userid`= '1'");
while ($row = mysql_fetch_assoc($qry))
{
    $fid = $row['fid'];
    $freundid = $row['freunduserid'];
    $status = $row['modus'];
    
	$fQry = mysql_query("SELECT `user`.*, `login`.* 
						 FROM `user`
						 LEFT JOIN `login` ON `login`.`userid` = '.$freundid.'
						 WHERE `userid`= '.$freundid.'");
	while ($row = mysql_fetch_assoc($fQry))
	{
	  $freundname = $row['benutzername'];
	  $timestamp = $row['timestamp'];
	  $lastlogin = date("d.m.Y - G:i", $timestamp);
	  
	  echo "$fid - $freundid - $status - $freundname - $lastlogin <br>";
	}
}
?>
 
Fehlermeldung:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web23/html/foto/incl/test.php on line 17

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web23/html/foto/incl/test.php on line 17

Und keinerlei restliche Ausgabe.
 
PHP:
<?
error_reporting(E_ALL);
include("config.php");
include("connect.php");

$qry = mysql_query("SELECT * FROM `freundeliste` WHERE `userid`= '1'") or die(mysql_error());
while ($row = mysql_fetch_assoc($qry))
{
    $fid = $row['fid'];
    $freundid = $row['freunduserid'];
    $status = $row['modus'];
    
	$fQry = mysql_query("SELECT `user`.*, `login`.* 
						 FROM `user`
						 LEFT JOIN `login` ON `login`.`userid` = ".intval($freundid)."
						 WHERE `user`.`userid`= ".intval($freundid)) or die(mysql_error());
	while ($row = mysql_fetch_assoc($fQry))
	{
	  $freundname = $row['benutzername'];
	  $timestamp = $row['timestamp'];
	  $lastlogin = date("d.m.Y - G:i", $timestamp);
	  
	  echo "$fid - $freundid - $status - $freundname - $lastlogin <br>";
	}
}
?>
Jetzt? `userid` ist ja in beiden Tabellen, deswegen hat MySQL bei der Where-Bedingung warscheinlich gemeckert...
 
Zuletzt bearbeitet:
Hm... hab aus Versehn bei den Querys Die Variablen zwischen Punkte getan... Dachte du benutzt ' anstatt ". Hab den Code oben angepasst *Daumendrück*
 
Noch was zum Schluss. Es ist besser anstelle von * explizit die Felder anzugeben, die ausgelesen werden sollen. So muss MySQL nicht umsonst x-Felder auslesen, die im Endeffekt garnicht gebraucht werden.
 
Zurück