webForumDet fria alternativet

Flera svar på samma inlägg

PHP

2 svar · 396 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Tjena!

Jag håller på med en gästbok där man kan svara på inläggen som skrivs. Varje inlägg ska kunna ha flera svar.

Koden nedan funkar bra så länge ett inlägg inte har mer än ett svar. Får ett inlägg fler svar så skrivs inlägget ut så många gånger som det finns svar, tillsammans med svaret. Jag vill att inlägget ska skrivas ut en gång, och svaren under inlägget.

Tack!

		<?php
		// Öppna databasen
		require 'includes/db.php';

		// Räkna alla inlägg
		$get = mysql_query("SELECT ID
		FROM Guestbook");
		$CountedMessages = mysql_num_rows($get);

		// Kontrollera om gästboken är tom
		if ($CountedMessages == '0')
		{
			echo "Det finns inga inlägg<br>";
		}
		else
		{
			// Hämta inläggen
			$get = mysql_query("SELECT TuGu.ID AS GbokID, TuGu.Time, TuGu.Date, TuGu.Name, TuGu.Mail, TuGu.Message, TuMe.ID AS ThisMemberID, TuMe.Firstname, TuMe.Lastname, TuGa.ID AS AnswerID, TuGa.Time AS AnswerTime, TuGa.Date AS AnswerDate, TuGa.MessageID, TuGa.MemberID, TuGa.Answer
			FROM GuestbookAnswers TuGa
			RIGHT JOIN Guestbook AS TuGu ON TuGu.ID = TuGa.MessageID
			LEFT JOIN Members AS TuMe ON TuMe.ID = TuGa.MemberID
			ORDER BY TuGu.Date DESC, TuGu.Time DESC");
			while($row = mysql_fetch_array($get)) 
			{
				// Hämta från Guestbook
				$GbokID = $row['GbokID'];
				$Time = $row['Time'];
				$Date = $row['Date'];
				$Name = $row['Name'];
				$Mail = $row['Mail'];
				$Message = $row['Message'];
				
				// Hämta från GuestbookAnswers
				$AnswerID = $row['AnswerID'];
				$AnswerTime = $row['AnswerTime'];
				$AnswerDate = $row['AnswerDate'];
				$MessageID = $row['MessageID'];
				$MemberID = $row['MemberID'];
				$Answer = $row['Answer'];
				
				// Hämta från Members
				$ThisMemberID = $row['ThisMemberID'];
				$Firstname = $row['Firstname'];
				$Lastname = $row['Lastname'];
				
				// Kontrollera om det finns något svar
				if ($Answer <> '')
				{
					echo "<b>$Date $Time | Av $Name</b><br>";
					echo "$Message<br>";
					echo "<span class=\"answer\"><b>Svar av <a href=\"spec.php?ViewMember=ID=$ThisMemberID\" title=\" Visa info om $Firstname $Lastname \">$Firstname $Lastname</a></b> $Answer</span><br><br>";
				}
				else
				{
					echo "<b>$Date $Time | Av $Name</b><br>";
					echo "$Message<br><br>";
				}
				
			}
		}

		// Stäng databasen
		mysql_close($open);
		?>
Medlem sedan juni 200032 967 inlägg
#2

Utskrifterna får du lösa med PHP - tråden flyttas därmed från SQL.

Medlem sedan jan. 20011 140 inlägg
#3

Hej,

Jag löste problemet själv. Jag vet dock inte om det är den bästa lösningen. Men så här ser slutkoden ut.

		<?php
		// Öppna databasen
		require 'includes/db.php';

		// Hämta inläggen
		$get = mysql_query("SELECT ID, Time, Date, Name, Message
		FROM Guestbook
		ORDER BY Date DESC, Time DESC");
		while($row = mysql_fetch_array($get)) 
		{
			$ID = $row['ID'];
			$Time = $row['Time'];
			$Date = $row['Date'];
			$Name = $row['Name'];
			$Message = $row['Message'];

			// Räkna svaren
			$get2 = mysql_query("SELECT ID
			FROM GuestbookAnswers
			WHERE MessageID = $ID");
			$CountedAnswers = mysql_num_rows($get2);

			// Kontrollera om det finns några svar
			if ($CountedAnswers == '0')
			{
				echo "<b>$Date $Time | Av $Name</b><br>";
				echo "$Message<br><br>";
			}
			else
			{
				echo "<b>$Date $Time | Av $Name</b><br>";
				echo "$Message<br>";
				
				// Hämta svaren
				$get3 = mysql_query("SELECT TuGa.MemberID, TuGa.Answer, TuMe.ID, TuMe.Firstname, TuMe.Lastname
				FROM GuestbookAnswers TuGa
				INNER JOIN Members AS TuMe ON TuMe.ID = TuGa.MemberID
				ORDER BY TuGa.Date DESC, TuGa.Time DESC");
				while($row = mysql_fetch_array($get3)) 
				{
					// Hämta från GuestbookAnswers
					$MemberID = $row['MemberID'];
					$Answer = $row['Answer'];
					
					// Hämta från Members
					$ID = $row['ID'];
					$Firstname = $row['Firstname'];
					$Lastname = $row['Lastname'];
					
					echo "<span class=\"answer\"><b>Svar av <a href=\"spec.php?page=ViewMember?ID=$ID\" title=\" Visa info om $Firstname $Lastname \">$Firstname $Lastname</a></b> $Answer</span><br>";
				}
				echo "<br>";
			}
		}

		// Stäng databasen
		mysql_close($open);
		?>
255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)