Freunde System .. Problem!

noelino

Grünschnabel
Hey Community !

Ich bin grad am PHP lernen und hab ein Problem in meinem Code..
Die Datei soll aus 2 Tabellen lesen..

1.Tabelle :
Hier stehen die ID's der Benutzer , die miteinandern befreundet sind..

2.Tabelle:
Hier stehen die Daten zu den Benutzern, also Name, EMail, Geburtsdatum usw..

Ich möchte jetzt mit meinem Code dem Benutzer ausgeben mit welchen Personen er befreundet ist!

Dazu hab ich folgendes geschrieben:

PHP:
								<?php
					$verbindung = mysql_connect("localhost", "root" , "");	// MySQL - Verbindung wird aufgebaut
					mysql_select_db("users") or die ("Datenbank konnte nicht ausgewählt werden");
					$query = "SELECT * FROM friendship";
					$result = mysql_query($query);
					$result = mysql_fetch_array($result);
					
					$query = "SELECT * FROM login_data WHERE id LIKE ' .$result[0]. '";
					$result = mysql_query($query);
					while($row = mysql_fetch_array($result)){	
						echo "$row[1] $row[2]";
					}
				?>

Bin noch am lernen, also könnte es sein dass der Fehler sehr simpel ist, ich hab leider keine Ahnung wie ich dass ausbessern sollte^^

Falls ihr irgendwie mehr Informationen zur Fehlerbehebung braucht, kann ich euch die natürlich geben!

Hoffe auf hilfreiche Antworten :D

MfG
 
Falls ihr irgendwie mehr Informationen zur Fehlerbehebung braucht, kann ich euch die natürlich geben!

Es wär recht klasse wenn du sagen würdest, welcher Fehler nun genau vorliegt, dann muss man ihn sich nicht erst erspekulieren ;)
Und bei DB-Geschichten möglichst die CREATE-Statements dazu, sonst ist das mehr Blindfischen als gezieltes Abfragen.

Was ich dir auf Anhieb sagen kann, ist dass
PHP:
 $result = mysql_fetch_array($result);
dir keine Freude bringen wird. In $result befindet sich dann maximal der letzte Datensatz von friendship, du scheinst aber alle haben zu wollen (Stichwort while-Schleife).

Schau dir mal die Beispiele dazu an. Im weiteren Verlauf des Scripts kann eigentlich nur Murks herauskommen.

Setze
PHP:
error_reporting(E_ALL);
und
PHP:
ini_set('display_errors', 1);
an den Anfang für die Fehleranzeige und gib dir jedes gewünschte Array mit var_dump oder print_r aus. Dann schaust dir genau an auf welche Werte du zugreifen willst/musst. Mit einem echo vor den $query gibst du dir die Abfragen aus und prüfst sie ggf. über phpMyAdmin.

Wenn du einem bestimmten, also eingeloggten User abfragen willst, solltest du dir zusätzlich noch die Sessions anschauen.

Meld dich, wenn du spezifische Fragen hast.
 
Na, der Reihe nach..

Du machst eine Query und holst alle (!) Daten aus der Friendship. Das ist die Tabelle mit den Freundschaftsbeziehungen, richtig? Ist nicht falsch, das Ergebnis wird aber falsch genutzt, zudem würde ich es wohl andersrum machen, erst die Namen auslesen, dann mit den id's der Friendship die Beziehungen anzeigen.

Letztlich könnte man das auch in einer Query machen, mit Subselects oder Abfragen über mehrere Tabellen und mittels Alias-Verweisen, aber ich zeig erstmal die simple Form.

Vorsicht, hingekliert, nicht getestet (!)
PHP:
# -- erstmal Relname und ID in eine Beziehung bringen
# -- und in einem Array speichern
$namen = array();
$query = "SELECT id,name,vorname FROM login_data";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
   $namen[$row['id']] = $row['name'].", ".$row['vorname'];
} 

# -- nun nutzen wir die komplette Liste der friendship
# -- um daraus was lesbares zu machen
# -- ich sortier sie nach id
# -- dann liegen die Daten in sinnvoller Ausgabereihenfolge 
$query = "SELECT id_user,id_friend FROM login_data ORDER BY id_user ASC";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
   echo $namen[$row['id_user']]." ist mit ".$namen[$row['id_friend']]." befreundet.";
   echo "<br/>\r\n";
}

mfg chmee
 
Zuletzt bearbeitet:
EDIT: Danke an den Code von chmee, ich musste nur ein paar Variablen abändern und jetzt funktioniert es ;D
 
Zuletzt bearbeitet:
In der Hoffnung, dass Du etwas dabei lernst, und nicht nur einfach für ne Hausaufgabe copy&paste'st.

mfg chmee

p.s.: habe oben einen kleinen Fehler rausgenommen, die Variable $namen wurde zweimal initialisiert, heisst, das Ergebnis der ersten while-Schleife wurde wieder gelöscht.

p.p.s.: Wenn Fehler in einer Query auftreten, bitte
PHP:
echo mysql_errno() . ": " . mysql_error(). "\n";
benutzen.
 
Zuletzt bearbeitet:
Zurück