MYSQL Werte vergleichen und austauschen

kirka

Mitglied
Hallo, ich habe ne kliene Frage kann man eign. bei der MYSQL abfrage auch die Werte vergleichen und austauschen ?

und zwar hier ist meine freunde Tabelle

Code:
id 	user_id 	freund_id 	datum 	status
3 	3 	             2 	      2010-09-01 	1
40 	2 	             4 	      2011-03-13 	1
19 	2 	             1 	      2010-10-22 	1

bei mir werden in die user_id id's reingeschrieben von denen die die Freundschaft vorgeschlagen haben und in freund_id halt freund id. Und ich möchte das

PHP:
 $q = $DB->query("SELECT * FROM freunde WHERE users_id = '$session' OR freund_id = '$session'");
$row = $DB->fetch_object($q);

if ($row->user_id == $session) $select = $row->freund_id; else $select = $row->user_id;

was ich per PHP gemacht habe auch mit MYSQL query machen.

hier ist meine query

PHP:
function getFriendsList($userid,$time) {
	
	$sql = ("SELECT DISTINCT users.id userid, 
							 users.username username, 
							 users.lastdate lastactivity, 
							 users.id avatar, 
							 users.id link, chat_status.message, chat_status.status FROM 
							 freunde JOIN users ON 
								
							 freunde.user_id = users.id
							 LEFT JOIN chat_status ON
							 users.id = chat_status.userid 
							 WHERE 
							 freunde.user_id = '".mysql_real_escape_string($userid)."' 
							 OR
							 freunde.freund_id = '".mysql_real_escape_string($userid)."'
							 ORDER BY username ASC"
			);
		
		
	return $sql;
}

weil mein Session ID ist 2 und wenn ich versuche das zu vergleichen dann werde ich selbst im Chat angezeicht aber ich will das bei mir im Chat nur die Freunde angezeicht werden. Mysql muss automatisch erkennen das freund_id ist gleich Session und dann den user_id Wert mit der users Tabelle vergleichen.

Ich hoffe ihr habt verstanden was ich möchte :)))
 
Zuletzt bearbeitet:
SQL:
SELECT IF(users_id = '{$session}', freund_id, user_id) AS id, .....

Und dein Vergleich im PHP geht sicher nicht, solange du im Vergleich = anstelle von == verwendest
 
Zuletzt bearbeitet von einem Moderator:
ja das mit if vergleich hab ich nur hier geschriebn, hab wohl aus versehen nur = statt == geschrieben, werde gleich deine select if versuchen

dankeschön für dein atnwort :))
 
das will irgendwie nicht funkt,. mach ich was falsch ?

PHP:
function getFriendsList($userid,$time) {
    
    $sql = ("SELECT IF(freunde.users_id = '{$userid}', freunde.freund_id, freunde.user_id) AS id,
                             DISTINCT users.id userid, 
                             users.username username, 
                             users.lastdate lastactivity, 
                             users.id avatar, 
                             users.id link, chat_status.message, chat_status.status FROM 
                             freunde JOIN users ON 
                                
                             id = users.id
                             LEFT JOIN chat_status ON
                             users.id = chat_status.userid 
                             WHERE 
                             freunde.user_id = '".mysql_real_escape_string($userid)."' 
                             OR
                             freunde.freund_id = '".mysql_real_escape_string($userid)."'
                             ORDER BY username ASC"
            );
        
        
    return $sql;
}
 
"Funktioniert nicht"
Nun ja, mit dieser Fehlermeldung kann ich dir nicht helfen.

Kommt gar nix?
Kommt eine Fehlermeldung?
Kommt was, aber es ist falsch?

Teste mal dein generiertes SQL und poste es hier. Dann sehen wir ev. weitere Fehler.
-> PHP MySQL Debug Queries
 
es kommt gar nicht , wenn ich die if () rausnehme dann werden die users angezeigt die in user_id mit session übereinstimmen. und mit if kommt leider nichts. :(
 
Zuletzt bearbeitet:
Das DISTINCT geht nicht wo es steht.
Hast du das SQL mal nach meiner verlinkten Anleitung getestet? Wie sieht das generierte SQL aus?
 
Das DISTINCT geht nicht wo es steht.
Hast du das SQL mal nach meiner verlinkten Anleitung getestet? Wie sieht das generierte SQL aus?

error_reporting(E_ALL); ist bei mir auch on

hab jetzt die logs gelesen hier ist der fehler

Code:
[14-Mar-2011 14:26:13] PHP Warning:  mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\flirt\www\chat\receive.php on line 229

[14-Mar-2011 14:26:13] PHP Warning:  Cannot modify header information - headers already sent by (output started at Z:\home\flirt\www\chat\receive.php:227) in Z:\home\flirt\www\chat\receive.php on line 359

und ohne if funkt. alles super und es gibt auch keine errors
 
Zurück