Probleme mit Selects

Flashii123

Mitglied
Nabend zusammen,
ich übe ein wenig und bastel mir ein kleines Forum mit Blätterfunktion!
Mein Forum besteht aus 2 Tabellen, einmal Threads und einmal Antworten.
Dazu habe ich noch einmal eine User-Tabelle und eine Profil-Tabelle

Mein Problem ist nun ich Leese nun die Antworten zu einem Thread mit PHP aus der MYSQL DB folgendermaßen aus:
PHP:
<?php
$abfrage = "SELECT * FROM threads_antworten WHERE thread_id = '$thread_id' Limit $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
Hier steht nun meine html Tabellen!
   }
?>

Allerdings muss ich nun auch noch zu jeder Antwort das Richtige Profil zuordnen. Ist im Prinzip ganz einfach bekomme nur Wirwar raus:( wenn ich jetzt noch mal eine abfrage mache und die damit rein fusche ist alles durcheinander!

PHP:
<?php
$abfrage = "SELECT * FROM Profil WHERE username ='$username";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
$avatar= $row->avatar
usw usw usw
   }
?>
<?php
$abfrage = "SELECT * FROM threads_antworten WHERE thread_id = '$thread_id' Limit $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
Hier steht nun meine html Tabellen!
echo $avatar
echo $row->antwort
$username = $row->username
   }
?>

WIe bekomme ich 2 Tabellen abfragen in eine?
bzw gibt es noch einen anderen weg?

Bin nun schon 2 Wochen am basteln und Probieren auch google lieferte keine brauchbaren Antworten :eek:

Wer cool wenn jemand mir kurz dabei helfen könnte^^

LG
Marcel
 
Hallo Flashiii123,
wenn ich Dich recht verstehe, willst du das Profil von einem User haben?
Im Prinzip ganz einfach.. wenn Du die User_id in der "threads_anwort" hast.
bsp:
PHP:
while($row = mysql_fetch_object($ergebnis))
   {
    $sql_profil = mysql_query("select username from profil where member_id = '$row[user]'") OR die (mysql_error());
    $avatar= $row->avatar
   usw usw usw
   }
Natürlich könntest du auch mit einem JOIN direkt auf die profil Tabelle zugreifen. Sieht am Ende auch schöner aus. Aber so sieht man das Prinzip was dahinter steckt.

So wie in deinem Skript, werden die Profile gesondert durch eine while verarbeitet. Jedoch musst du die Profile in der While-Schleife beziehen, in der du auch die Antworten aus der DB holst.

Schwer zu erklären ^^ Hoffe ist etwas verständlich.

Gruß Splater

EDIT:
Ich bin mir jetzt nicht ganz sicher, aber mit JOIN "müsste" es so aussehen. Bitte berichtigen wenn Falsch.
PHP:
SELECT * FROM threads_antworten AS answer
LEFT JOIN 
		(SELECT username as u_username FROM
		profil
		)as profil
on (answer.poster = profil.username)
WHERE answer.thread_id = '$thread_id' Limit $start, $eintraege_pro_seite
 
Zuletzt bearbeitet:
Das Zuordnen macht man über eine ID. Also fügst du in beide Tabellen eine Spalte UserID ein. So kannst du dann anhand der UserID das entsprechende Profil zum jeweiligen Post ausgeben.

Etwa so:
PHP:
<?php
$abfrage = "SELECT * FROM threads_antworten WHERE thread_id = '$thread_id' Limit $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
	$UserID = $row->UserID;
	//Hier steht nun meine html Tabellen!
	$getProfil = "SELECT * FROM Profil WHERE UserID ='$UserID";
	$Profil = mysql_query($abfrage);
	while($row = mysql_fetch_object($Profil))
	{
		$avatar= $row->avatar;
		$username = $row->username;
		//usw usw usw
	}
echo $avatar;
echo $row->antwort;
echo $username;
}
?>

Ups haben ja andre schon bereits geantwortet. Naja im allgemeinen ist nen Join eh besser.
 
@Splater
Ok das mit dem Left Join habe ich noch nicht gerafft
Habe das jetzt eingebaut und darunter wieder wie gewohnt mein
175: $ergebnis = mysql_query($abfrage);
176: while($row = mysql_fetch_object($ergebnis))

Ist das richtig?
Weil ich bekomme nun:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\view_forum.php on line 176



@ einfach nur crack
Wirwarr sah folgendermaßen aus:
immer 7 einträge pro seite 10 einträge gesammt
Seite 1:
Antwort 7 (Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)
Antwort 7(Profil von User 1 in DB)

Seite 2
Antwort 10(Profil von User 2 in DB)
Antwort 10(Profil von User 2 in DB)
Antwort 10(Profil von User 2 in DB)

Sollte so aussehen:
Seite1:
Antwort 1(Profil von User 1 in DB)
Antwort 2(Profil von User 1 in DB)
Antwort 3 (Profil von User 2 in DB)
Antwort 4(Profil von User 1 in DB)
Antwort 5(Profil von User 2 in DB)
Antwort 6(Profil von User 1 in DB)
Antwort 7

Seite 2
Antwort 8(Profil von User 1 in DB)
Antwort 9(Profil von User 2 in DB)
Antwort 10(Profil von User 1 in DB)
 
Zurück