17. juli 2007 - 20:36
Der er
31 kommentarer og 1 løsning
while inden i en while
jeg er ved at lege lidt med en hjemmelavet forum/debat side og er ved at lave en while løkke som skal hente alle forum-navne ind, og samtidig skal den vise det nyeste indlæg og hvem der har oprettet det... Mit foreslag er: $output = "<div align='center' style=\"width:800px; margin:0px auto 0px auto; border:1px solid #0a5bf0; border-bottom:0px;\"> "; while($row_post = mysql_fetch_array($get_newest_topic)) { $topic_id = $row_topic[topic_id]; $forum_id = $row_topic[forum_id]; $topic_header = $row_topic[topic_header]; $topic_owner = $row_topic[topic_owner]; while($row_forum = mysql_fetch_array($get_forum)) { $forum_id = $row_forum[forum_id]; $forum_name = $row_forum[forum_name]; $forum_descript = $row_forum[forum_descript]; $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"> <a href='showforum.php?forum_id=$forum_id'>$forum_name</a> </div> <div style=\"float:none; border-bottom:1px solid #0a5bf0;\"> <a href='show_topic.php?topic_id=$topic_id;>$topic_header $topic_owner</div> "; } } $output .= "</div>"; men jeg kan ikke få det til at virke, men synes heller ikke opstillingen af løkkerne ser rigtigt ud... Så er der nogle der kan hjælpe????
Annonceindlæg fra Infor
du henter slet ikke data fra din database, det er nok dér den er gal ;)
hmmm. du får lige hele filen så.... jeg har nemlig hentet dem... <? $host = "localhost"; $user = "root"; $pass = ""; $conn = mysql_connect($host, $user, $pass) or die(mysql_error()); mysql_select_db("myforum",$conn) or die(mysql_error()); $get_forum = mysql_query("select * from forum order by forum_name desc") or die(mysql_error()); $get_newest_topic = mysql_query("select * from topic order by topic_id desc limit 1") or die (mysql_error()); $output = "<div align='center' style=\"width:800px; margin:0px auto 0px auto; border:1px solid #0a5bf0; border-bottom:0px;\"> "; while($row_post = mysql_fetch_array($get_newest_topic)) { $topic_id = $row_topic[topic_id]; $forum_id = $row_topic[forum_id]; $topic_header = $row_topic[topic_header]; $topic_owner = $row_topic[topic_owner]; while($row_forum = mysql_fetch_array($get_forum)) { $forum_id = $row_forum[forum_id]; $forum_name = $row_forum[forum_name]; $forum_descript = $row_forum[forum_descript]; $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"> <a href='showforum.php?forum_id=$forum_id'>$forum_name</a> </div> <div style=\"float:none; border-bottom:1px solid #0a5bf0;\"> <a href='show_topic.php?topic_id=$topic_id;>$topic_header $topic_owner</div> "; } } $output .= "</div>"; ?> <html> <head> <title>Oversigt</title> </head> <body style="margin:0px auto 0px auto;"> <? print $output;?> </body> </html>
det giver heller ikke så meget mening det kode... du vil først hente kategorierne, og så for hver kategori, de 5 nyeste emner, eller hvad?
Jeg vil hente alle kategorierne ind og så det nyeste emne på hver kategori
okay, jeg går ud fra at tabellen "forum" indeholder dine kategorier og "topic" indeholder alle emner... så skal det være noget med: $res = mysql_query("SELECT * FROM forum ORDER BY forum_name DESC") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $res1 = mysql_query("SELECT * FROM topics WHERE forum_id='$forums[forum_id]' LIMIT 1") or die(mysql_error()); while($topic = mysql_fetch_array($res1)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=$forums['forum_id']\">$forums['forum_name']</a></div><div style=\"float:none; border-bottom:1px solid #0a5bf0;\"><a href=\"show_topic.php?topic_id=$topic['topic_id']\">$topic['topic_header'] $topic['topic_owner']</div>"; } } nu har jeg så lige skrevet det, og kommet i tanker om at det nok var smartere med en INNER JOIN i stedet for 2 while-løkker, men jeg gider ikke at lave det om lige nu :) kigger på det i morgen. se evt. om dette virker... :)
det lyder godt... jeg tjekker lige i morgen så.... men prøver lige dette først... atkker indtil videre
18. juli 2007 - 10:18
#10
har du et link til siden, så man kan følge med? :)
18. juli 2007 - 10:45
#11
nej den kører på min localhost.... men du kan da lige få fejlen... det hele ser nu sådan ud: <? $host = "localhost"; $user = "root"; $pass = ""; $conn = mysql_connect($host, $user, $pass) or die(mysql_error()); mysql_select_db("myforum",$conn) or die(mysql_error()); $res = mysql_query("SELECT * FROM forum ORDER BY forum_name DESC") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $res1 = mysql_query("SELECT * FROM topics WHERE forum_id='$forums[forum_id]' LIMIT 1") or die(mysql_error()); while($topic = mysql_fetch_array($res1)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=$forums['forum_id']\">$forums['forum_name']</a></div><div style=\"float:none; border-bottom:1px solid #0a5bf0;\"><a href=\"show_topic.php?topic_id=$topic['topic_id']\">$topic['topic_header'] $topic['topic_owner']</div>"; } } ?> <html> <head> <title>Oversigt</title> </head> <body style="margin:0px auto 0px auto;"> <? print $output;?> </body> </html> fejlen lyder: Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\phpdev\www\myforum\index.php on line 14
18. juli 2007 - 10:50
#12
okay, jeg prøver lige at kigge på det...
18. juli 2007 - 11:01
#13
$res = mysql_query("SELECT forum.id, forum.forum_name, topic.topic_id, topic.topic_header, topic.topic_owner FROM forum INNER JOIN topic ON(forum.forum_id=topic.forum_id) GROUP BY topic.topic_id") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div><div style=\"float:none; border-bottom:1px solid #0a5bf0;\"><a href=\"show_topic.php?topic_id=".$topic['topic_id']."\">".$topic['topic_header']." - ".$topic['topic_owner']."</div>"; } prøv med det her i stedet...
18. juli 2007 - 11:10
#14
der er ingen fejl.... men $output er tom
18. juli 2007 - 11:16
#15
eller jeg har rettet en fejl i forum.id skal den ikke hedde forum.forum_id
18. juli 2007 - 11:16
#16
prøv efter den første linje ($res = mysql...) at skrive: echo "rækker: ".mysql_num_rows($res);
18. juli 2007 - 11:19
#17
det er fordi du henter fra 2 tabeller, så det der står før . er tabellens navn og det efter er kolonnens navn...
18. juli 2007 - 11:21
#18
hvad er der at gøre ved det så????
18. juli 2007 - 11:22
#19
så skriver den rækker:0
18. juli 2007 - 11:38
#20
nå, så henter den ikke noget i databasen... $res = mysql_query("SELECT forum.forum_id, forum.forum_name, topic.topic_id, topic.topic_header, topic.topic_owner FROM forum INNER JOIN topic ON(forum.forum_id=topic.forum_id)") or die(mysql_error()); prøv lige den
18. juli 2007 - 11:47
#21
jeg prøvede lige at lægge et topic ind og nu skriver den noget ud... så jeg er tilbage ved: <? $host = "localhost"; $user = "root"; $pass = ""; $conn = mysql_connect($host, $user, $pass) or die(mysql_error()); mysql_select_db("myforum",$conn) or die(mysql_error()); $res = mysql_query("SELECT forum.forum_id, forum.forum_name, topic.topic_id, topic.topic_header, topic.topic_owner FROM forum INNER JOIN topic ON(forum.forum_id=topic.forum_id) GROUP BY topic.topic_id") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div><div style=\"float:none; border-bottom:1px solid #0a5bf0;\"> <a href=\"show_topic.php?topic_id=".$topic['topic_id']."\">".$topic['topic_header']." - ".$topic['topic_owner']."</div>"; } ?> <html> <head> <title>Oversigt</title> </head> <body style="margin:0px auto 0px auto;"> <? print $output;?> </body> </html> men her skriver den kun det første forum ud... og der er intet topic vist kun understregningen til et link der så viser til show_topic?topic_id=
18. juli 2007 - 11:50
#22
det er fordi der står: while($forums = mysql_fetch_array($res)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"> <a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div> <div style=\"float:none; border-bottom:1px solid #0a5bf0;\"> <a href=\"show_topic.php?topic_id=".$topic['topic_id']."\">".$topic['topic_header']." - ".$topic['topic_owner']."</div>"; men der er jo ike en funktion der hedder topic... så hvis jeg ændrer den til: while($forums = mysql_fetch_array($res)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"> <a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div> <div style=\"float:none; border-bottom:1px solid #0a5bf0;\"> <a href=\"show_topic.php?topic_id=".$forums['topic_id']."\">".$forums['topic_header']." - ".$forums['topic_owner']."</div>"; } så virker det ;) }
18. juli 2007 - 11:50
#23
men den viser bare stadig kun den første af forum's
18. juli 2007 - 11:56
#24
arh sorry, jeg havde glemt at rette de array-navne det skal self være forums alle sammen :) men den henter kun ét forum eller?
18. juli 2007 - 11:58
#25
det er helt ok... men ja den henter kun det ene forum... selvom der er lagt 2 ind
18. juli 2007 - 11:58
#26
umiddelbart vil jeg mene at den kun henter de forums hvor der er noget i, så hvis du har tomme forums, kommer de ikke med...
18. juli 2007 - 12:05
#27
Det var derfor... kna det ikke ændres????
18. juli 2007 - 12:11
#28
jo det kan det godt, men så skal vi tilbage til den første metode, med 2 while løkker :) $res = mysql_query("SELECT * FROM forum ORDER BY forum_name DESC") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $res1 = mysql_query("SELECT * FROM topics WHERE forum_id='$forums[forum_id]' LIMIT 1") or die(mysql_error()); while($topic = mysql_fetch_array($res1)){ $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div><div style=\"float:none; border-bottom:1px solid #0a5bf0;\"><a href=\"show_topic.php?topic_id=".$topic['topic_id']."\">".$topic['topic_header']." - ".$topic['topic_owner']."</div>"; } }
18. juli 2007 - 12:20
#29
hehe... det virker sq heller ikke uden et topic
18. juli 2007 - 12:46
#30
nej det er klart... :) $res = mysql_query("SELECT * FROM forum ORDER BY forum_name DESC") or die(mysql_error()); while($forums = mysql_fetch_array($res)){ $res1 = mysql_query("SELECT * FROM topics WHERE forum_id='$forums[forum_id]' LIMIT 1") or die(mysql_error()); $output .= "<div align='left' style=\"border-bottom:1px solid #0a5bf0; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; float:left; min-width:400px;\"><a href=\"showforum.php?forum_id=".$forums['forum_id']."\">".$forums['forum_name']."</a></div>"; while($topic = mysql_fetch_array($res1)){ $output .= "<div style=\"float:none; border-bottom:1px solid #0a5bf0;\"><a href=\"show_topic.php?topic_id=".$topic['topic_id']."\">".$topic['topic_header']." - ".$topic['topic_owner']."</div>"; } } prøv den :)
18. juli 2007 - 23:22
#31
det virker... skulle godt nok lige udskifte div med en table i stedet... men så virkede det... mange tak for hjælpen... poster du ikke lige et svar;)
19. juli 2007 - 09:06
#32
hehe okay, ja som det ser ud, vil det jo bare blive skrevet på en lang linie :)
Vi tilbyder markedets bedste kurser inden for webudvikling