webForumDet fria alternativet

Problem med att få ut två värden

Databaser & SQL

3 svar · 239 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej,

Har lyckats med att få ut sökvägar till bilder förut men nu verkar det tvärkört. Har felsökt i en timme nu utan resultat.

I mitt forum har jag en tabell som heter tblforumthread. I den tabellen finns det ett fält som heter type. Type talar om huruvida tråden är en fråga/uppmaning. I en annan tabell som heter tblforumthreadtype har jag följande fält:

threadtypeID
path
filename
description

Nu försöker jag plocka ut sökvägen till dessa bilder vars sökvägar ligger lagrade i tblforumthreadtype. Dock verkar det inte som att sql-satsen plockar upp någon sökväg eller något filnamn för respektive tråd där "type" är satt till 1 alt. 2.

Här är SQL-satsen:

$sqlSelect = "SELECT threadID, subject, [B](SELECT path FROM tblforumthreadtype WHERE threadtypeID = t1.type) AS path, (SELECT filename FROM tblforumthreadtype WHERE threadtypeID = t1.type) AS filename[/B], (SELECT solved FROM tblforumthreadreply WHERE solved = 1 AND threadID = t1.threadID) AS solved, (SELECT threadreplyID FROM tblforumthreadreply WHERE solved = 1 AND threadID = t1.threadID) AS threadreplyID, content, hits, posted, posterID, forumID,
	(SELECT username FROM tblmember WHERE memberID = posterID) AS username,
	(SELECT COUNT(t2.threadreplyID) FROM tblforumthreadreply AS t2 WHERE t2.threadID = t1.threadID) AS replynumber,
	(SELECT t2.threadreplyID FROM tblforumthreadreply AS t2 WHERE t2.threadID = t1.threadID ORDER BY t2.threadreplyID DESC LIMIT 1) AS lastthreadreplyID,	
	coalesce((SELECT DATE_FORMAT(max(t5.posted), '%Y-%m-%d %H:%i:%s') FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ) , posted) AS lastpost,
	coalesce((SELECT (SELECT t8.username FROM tblmember AS t8 WHERE t8.memberID = t5.posterID) FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1), (SELECT username FROM tblmember WHERE memberID = posterID)) AS usernamelastreply,
	coalesce((SELECT t5.posterID FROM tblforumthreadreply AS t5 WHERE t5.threadID = t1.threadID AND t1.forumID = $ID ORDER BY t5.posted DESC LIMIT 1), posterID) AS posterIDlastreply
	FROM tblforumthread AS t1
	WHERE forumID = $ID ORDER BY sticker DESC, lastpost DESC";
Medlem sedan dec. 19995 874 inlägg
#2

Om t1.type är 1 och det finns en och endast en post i tblforumthreadtype som har värde 1 i kolumnen threadTypeID, så borde det fungera.
Vad innehåller kolumnerna för värde? Får du något felmeddelande?

Medlem sedan apr. 20041 597 inlägg
#3

Jag får inget felmeddelande alls.... När jag skriver ut dessa små bilder för de trådar som har ett "!" eller "?" använder jag mig av följande php-kod och if-sats för att kolla om $thread['path'] är satt eller inte:

<td width="4%" style="padding-top: 0px; text-align: center;"><?php if($thread['path']) { ?><img src="<?php echo $thread['path'].$thread['filename']; ?>" alt=""><?php } else { echo "t"; } ?></td>

Om den inte är satt har jag valt att den ska skriva ut  . För att se vad som hände bytte jag ut det mot en vanlig bokstav. Bokstäver skrevs ut för varje tråd vilket talar om att det inte fanns något innehåll i $thread['path'].

Bifogar en screenie av tabellen med dessa bilder som jag vill hämta med hjälp av sql-satsen ovan. Jag har gjort det förut för en artikelfunktion men nu verkar det inte vilja fungera, en så enkel sak. Väldigt frustrerande! :)

tblforumthreadtype.jpg
Medlem sedan apr. 20041 597 inlägg
#4

Yeeeeeeeeeeeeeeeeeeeeeeeeeeees! Jag löste problemet. Att jag inte tänkte på det???? :e

SQL-koden ovan är det inget fel på. Jag gjorde ett tappert försök och gick igenom databasen för att se att de berörda fälten var av samma sort så att det inte förelåg något kompatibilitetsproblem.

Det jag inte hade tänkte på var att jag hade samma SQL-kod i den fil som presenterar trådarna för ett forum. Den SQL-satsen är en exakt kopia av den jag postat här och används till min paging-funktion. Hade totalt glömt bort att den fanns där. Första gången sidan forumdisplay.php laddas är det den SQL-koden som körs. Därefter används den andra.

Ohhh...va jobbigt det ska va ibland...hahaha :)

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)