almightyegg Posted September 16, 2007 Share Posted September 16, 2007 On my message board there are 4 vital fields for each topic id - the id of message fid - which forum it is in rid - what message it is a reply to (0 if it is top level post) pid - it's parent thread/top level thread it has been posted under (0 if top level post) When viewing a message under neath are links listing messages posted in reply. EG: Reply 5 - Username Reply 7 - Username Reply 6 - Username Reply 1 - Username Reply 3 - Username Reply 4 - Username Reply 2 - Username I'm currently using this code to while out the first 5 messages in reply then after that it will show '...more...' <? while($r2 = mysql_fetch_array($result2)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$r2['username']}'"); $two = mysql_fetch_array($one); echo "<br><a href=\"/forum/viewthread.php?f=$f&t=$r2[id]\">$r2[title]</a></b> | <a href=\"http://www.lordoftheabyss.com/player/view.php?id=$two[id]\">$r2[username]</a><br>"; $rep1 = mysql_query("SELECT * FROM topics WHERE rid = '{$r2['id']}' and fid = '$f' and deleted = 'No'"); $rep = mysql_num_rows($rep1); if($rep >= 1){ while($reply = mysql_fetch_array($rep1)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$reply['username']}'"); $two = mysql_fetch_array($one); echo " <b><a href=\"/forum/viewthread.php?f=$f&t=$reply[id]\">$reply[title]</a></b> | <a href=\"http://www.lordoftheabyss.com/player/view.php?id=$two[id]\">$reply[username]</a><br>"; $rep1 = mysql_query("SELECT * FROM topics WHERE rid = '{$reply['id']}' and fid = '$f' and deleted = 'No'"); $rep = mysql_num_rows($rep1); if($rep >= 1){ while($reply = mysql_fetch_array($rep1)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$reply['username']}'"); $two = mysql_fetch_array($one); echo " <b><a href=\"/forum/viewthread.php?f=$f&t=$reply[id]\">$reply[title]</a></b> | <a href=\"http://www.lordoftheabyss.com/player/view.php?id=$two[id]\">$reply[username]</a><br>"; $rep1 = mysql_query("SELECT * FROM topics WHERE rid = '{$reply['id']}' and fid = '$f' and deleted = 'No'"); $rep = mysql_num_rows($rep1); if($rep >= 1){ while($reply = mysql_fetch_array($rep1)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$reply['username']}'"); $two = mysql_fetch_array($one); echo " <b><a href=\"/forum/viewthread.php?f=$f&t=$reply[id]\">$reply[title]</a></b> | <a href=\"http://www.lordoftheabyss.com/player/view.php?id=$two[id]\">$reply[username]</a><br>"; $rep1 = mysql_query("SELECT * FROM topics WHERE rid = '{$reply['id']}' and fid = '$f' and deleted = 'No'"); $rep = mysql_num_rows($rep1); if($rep >= 1){ while($reply = mysql_fetch_array($rep1)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$reply['username']}'"); $two = mysql_fetch_array($one); echo " <b><a href=\"/forum/viewthread.php?f=$f&t=$reply[id]\">$reply[title]</a></b> | <a href=\"http://www.lordoftheabyss.com/player/view.php?id=$two[id]\">$reply[username]</a><br>"; $rep1 = mysql_query("SELECT * FROM topics WHERE rid = '{$reply['id']}' and fid = '$f' and deleted = 'No'"); $rep = mysql_num_rows($rep1); if($rep >= 1){ while($reply = mysql_fetch_array($rep1)){ $one = mysql_query("SELECT * FROM users WHERE username = '{$reply['username']}'"); $two = mysql_fetch_array($one); echo " ...more...<br>"; } } } } } } } } } } } ?> problem is, instead of it showing properly, using the above example it will show: Reply 5 - Username Reply 7 - Username Reply 6 - Username Reply 1 - Username Reply 2 - Username as you can see Replies 3 and 4 have gone. Once below the first replies it will only show the oldest message (oldest being the ones with the smallest id) and no others. so 1) What's wrong with my code? 2) Is there any way I could make this easier to do (shorter code, easier to read/adapt)??? perhaps a functon anything put forwardwould be greatly appreciated Quote Link to comment https://forums.phpfreaks.com/topic/69567-help-needed-to-make-this-less-complicated/ Share on other sites More sharing options...
almightyegg Posted September 16, 2007 Author Share Posted September 16, 2007 oh and another thing I forgot to mention.... How would I make it so it orders by new posts eg: Reply 2 - Username Reply 3 - Username Reply 8 - Username Reply 5 - Username Reply 1 - Username Reply 4 - Username Reply 6 - Username Reply 7 - Username Notice Reply 2 appears above Reply 1 because the reply at the bottom of its chain is newer than the one at the bottom of reply 1's chain. Also Reply 3 appears above Reply 5 for the same reason. How do I make it order like this the whole way down??? Quote Link to comment https://forums.phpfreaks.com/topic/69567-help-needed-to-make-this-less-complicated/#findComment-349579 Share on other sites More sharing options...
almightyegg Posted September 16, 2007 Author Share Posted September 16, 2007 sorry to have to post again but it won't let me modify my posts :-/ I think I worked out a way to solve my second post here, or at least the method. I need a function that grabs all the post IDs above a new post. EG: Reply 1 - Username Reply 2 - Username Reply 3 - Username Reply 5 - Username Reply 7 - Username NEW Reply - Username Reply 6 - Username Reply 4 - Username For this example, upon inserting the row for the NEW Reply, I would select the IDs of Replies 1, 2, 3, 5 and 7 as that is the chain that leads to it. When I grab these IDs I would update their rows. Column updatetimestamp would be updated to the newest post's timestamp. This way, when whiling/using a function to echo out the replies to a topic, I can order them by updatetimestamp I think that makes sense anyways. If you need me to explain again I can try Quote Link to comment https://forums.phpfreaks.com/topic/69567-help-needed-to-make-this-less-complicated/#findComment-349617 Share on other sites More sharing options...
almightyegg Posted September 16, 2007 Author Share Posted September 16, 2007 Right I've solved the last 2 posts now, just the initial problem left... Quote Link to comment https://forums.phpfreaks.com/topic/69567-help-needed-to-make-this-less-complicated/#findComment-349738 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.