DB-Abfrage für Freundschaftsabfrage

Godstyle

Erfahrenes Mitglied
Moin moin,

ich brauche für ein Mailscript eine Freundesabfrage.

Fakten:

Username kann doppelt vorkommen daher abfrage nach user_id

Eigene user id ist gespecihert in: $_SESSION['uid']

---------------------------------------------------------------------

wenn ich in dem Mail sende Formular den Empfänger Nick eingebe, dann soll darunter ein Fenster mit den Freunden aufgehen.

Die Scripte (relevante Ausschnitte):

Formular:


HTML:
<head>
<script type="text/javascript" src="js/userchk.js"></script>
</head>

<form name="send_mail" method="post" action="index.php?sub=mail&msub=maus&opt=send">
<table width="450px">
<tr>
<td>Empf&auml;nger: <input type="text" maxlength="15" name="emp_user" onBlur="userchk();"></td>
</tr>
<tr>
<td>Betreff: <input type="text" maxlength="15" name="betreff"></td>
</tr>
<tr>
<td><textarea cols="50" rows="8" name="mail"></textarea></td>
</tr>
<tr>
<td align="right"><input type="submit" value="senden"></td>
</tr>
</table>
</form>

userchk.js:


HTML:
// <![CDATA[
var P91 = null;
// Initialisieren
function userchk_system(){
	if (window.XMLHttpRequest) {
	  P91 = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
	  try {
		P91 = new ActiveXObject("Msxml2.XMLHTTP");
	  } catch (ex) {
		try {
		  P91 = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (ex) {
		}
	  }
	}
}
// Statusabfrage
function userchk_heuri() {
  if (P91.readyState == 4) {
    var heurix = document.getElementById("userchk");
    heurix .innerHTML = P91.responseText;
  }
}
// Aufrufen
function userchk() {
  var pas = document.getElementById("username").value;  // Name vom Formularfeld, in diesen Fall "username"
  var heurix  = document.getElementById("userchk");
  heurix .innerHTML = '<img src="loading.gif" alt="Lade..." />'; // Lade Grafik
  P91.open("GET", "userchk.php?usernamecheck=" + pas); // Daten holen
  P91.onreadystatechange = userchk_heuri;
  P91.send(null);
}
// Script laden
var heurix = userchk_system();
// ]]>

userchk.php:

PHP:
<?php

if (isset($_GET['usernamecheck'])) {
$usernamecheck = trim(htmlspecialchars($_GET['usernamecheck'], ENT_QUOTES, "UTF-8"));
// Hier fehlt die db abfrage


	$arraypas = array();
	if(!in_array($usernamecheck, $arraypas)){
		echo ' <span style="color:red">Kein Freund mit diesem Namen</span>';
	}else{
		echo ' <span style="color:#006600">Liste mit allen in Frage kommenden Usern</span>';
	}
}
?>

Nun zu dem Problem:

Wie soll ich die Freundes abfrage machen?

Meine Gedanken waren das ich eine db abfrage mache, dazu eine tabelle mit folgendem aufbau:

íd | user1 | user2

Wenn ich dieses Umsetze komme ich zum nächsten Problem:

Wenn User xxx eine freundschaft mit user yyy schließt müsste müsste ich ich die DB abfrage in beide Richtungen führen, oder aber die einträge doppelt machen (ich hoffe Ihr wisst was ich meine).

Kurz:

Was ist die Sinnvollste Art um das umzusetzen?

glg
 

Godstyle

Erfahrenes Mitglied
update:

Ich habe mich Dafür entschieden es mit einer tabelle zu machen:
Der Aufabu ist:

ID | user1 | user2


Wie muss ich die Abfrage machen, damit ich nur den anderen User ausgegeben bekomme?


PHP:
if (isset($_GET['usernamecheck'])) {
$usernamecheck = trim(htmlspecialchars($_GET['usernamecheck'], ENT_QUOTES, "UTF-8"));


	$arraypas = array($rows['']);
	if(!in_array($usernamecheck, $arraypas)){
		echo ' <span style="color:#006600">Frei</span>';
	}else{
		echo ' <span style="color:red">Belegt</span>';
	}
}


Also: Entweder steht die eigene User ID unter user1 oder unter user2. ich möchte in dem array imm den anderen user haben. Das ganze sollte so sein, das ich später zu dem User das bild und den Namen anzeigen kann.

hoffe, dass mir nun jmd helfen kann.

glg
 

Godstyle

Erfahrenes Mitglied
so, es sind nun fast 24 std vorbei seid ich den thread erstellt habe.

Leider habe ich immer noch keine lösung gefunden.

Wenn hier keiner eine Idee hat werde ich mal in einem anderen Forum nach fragen. Keine Sorge, danach bin ich auch wieder hier ;)

Also evt noch wer nee idee?

lg
 

DeeJTwoK

Erfahrenes Mitglied
Hallo,

sollte es nicht so gehen?

Code:
SELECT * FROM users WHERE user_id  IN (SELECT user2 FROM friends WHERE user1=userIdFromSession) OR user_id IN (SELECT user1 FROM friends WHERE user2=userIdFromSession)

Dann ist es auch egal, wer mit wem die Feundschaft gemacht hat, also welcher User in der ersten Spalte steht und welcher in der zweiten.