If Funktion falsch?

Kalma

Erfahrenes Mitglied
Hey,

ich habe mal wieder ein Problem:

Ich habe eine Datenbank mit 3 Spalten:
id,
aid,
name,

Meine Funktion soll folgendes bewirken:
Wenn die "aid" leer ist, soll "name" ausgelesen werden und andersrum...
Wenn beides leer ist, soll "nobody" ausgegeben werden

Hier meine Funktion

PHP:
    $Query 	= "SELECT * FROM wiki ORDER BY rand() LIMIT 1";
	$Result = mysql_query($Query);
	$t		= mysql_fetch_array($Result);
	
	if ($t['aid'] == "")
	{
	$autor = "".$t['name']."";
	
	} elseif ($t['name'] == "") 
	{
	$User = mysql_query("SELECT * FROM user WHERE `id`=".$t['aid']."");
	$u 	  = mysql_fetch_array($User);
	$autor = "".$u['nickname']."";
	} else {
	$autor = "nobody";
	}

Nur funktioniert es nicht so, wie es soll...

Könnt ihr mir helfen :( ?


MfG
David
 
Du solltest besser den anderen Weg gehen und pruefen ob die Werte nicht leer sind.
Und nochmal: Deine leeren Strings vor und hinter Variablen sind unnoetig und unsinnig.

PHP:
$query="select * from `wiki` order by rand() limit 1";
$result=mysql_query($query):
$t=mysql_fetch_assoc($result);
if (!empty($t['aid']))
{
 $user=mysql_query("select * from `user` where `id`='".$t['aid']."'");
 $u=mysql_fetch_assoc($user);
 $autor=$u['nickname'];
}
elseif (!empty($t['name']))
{
 $autor=$t['name'];
}
else
{
 $autor='nobody';
}
 
Hallo,

alernativ könnte man das auch alles schon im MySQL-Query erledigen:

SQL:
SELECT
  `id`,
  COALESCE(`name`, `user`.`nickname`, 'nobody') AS `autor`
FROM `wiki`
LEFT JOIN `user` ON (`user`.`id` = `wiki`.`aid`)
ORDER BY RAND()
LIMIT 1

Grüße,
Matthias
 
Zurück