Re: php gurus please help
Posted by gimpinthesink on
Mon Feb 23rd 2004 at 9:03pm
662 posts
176 snarkmarks
Registered:
Apr 21st 2002
Occupation: student
Location: Forest Town, Notts
I have decided to invest in a book that teaches PHP, MYSQL and Apache and I am curently working through it but I have come across a pice that don't work properly and I cannot fix itso I was woundering if you could help me
This is the pice of code that I carnt get to work
<!--code-->Code:<TABLE width="95%" align=center><TR><TD>//cerate the display string
$display_block = "
<table cellpadding=3 cellspacing=3 border=1>
<tr>
<th>TOPIC TITLE</th>
<th># of POSTS</th>
</tr>";
while ($topic_info = mysql_fetch_array($get_topics_res)) {
$topic_id = $topic_info['topic_id'];
$topic_title = stripslashes($topic_info['topic_title']);
$topic_create_time = $topic_info['fmt_topic_create_time'];
$topic_owner = stripslashes($topic_info['topic_owner']);
//get number of posts
$get_num_posts = "select count(post_id) from forum_posts
where topic_id = $topic_id";
$get_num_posts_res = mysql_query($get_num_posts,$conn)
or die(mysql_error());
$num_posts = mysql_result($get_num_posts_res,0,'count(post_id)');
//add to display
$display .= "
<tr>
<td><a href"showtopic.php?topic_id=$topic_id">
$topic_title</a>
Created on $topic_create_time by $topic_owner</td>
<td align=center>$num_posts</td>
</tr>";
}
//close up the table
$display_block .= "</table>";</TD></TR></TABLE><!--/code-->
It should show up a topic with how many posts are in it but it only brings up the TOPIC TITLE and # of POSTS bit which are the titles for the coloms.
Re: php gurus please help
Posted by Monqui on
Mon Feb 23rd 2004 at 10:17pm
Posted
2004-02-23 10:17pm
Monqui
member
743 posts
94 snarkmarks
Registered:
Sep 20th 2002
Occupation: Poor College Student
Location: Iowa, USA
Do you actually have the DB set up to use this code?
It also looks like $get_topics_res isn't initialized anywhere here...
I would think that would kick out an error though...
But it seems like nothing within the while is being processed, since the conditional is never true...
Re: php gurus please help
Posted by gimpinthesink on
Mon Feb 23rd 2004 at 11:24pm
Posted
2004-02-23 11:24pm
662 posts
176 snarkmarks
Registered:
Apr 21st 2002
Occupation: student
Location: Forest Town, Notts
the $get_topics_res is defined to
<!--code-->Code:<TABLE width="95%" align=center><TR><TD>$get_topics = "select topic_id, topic_title,
date_format(topic_create_time, '%b %e %Y at %r') as fmt_topic_create_time,
topic_owner from forum_topics order by topic_create_time desc";
$get_topics_res = mysql_query($get_topics,$conn) or die(mysql_error());
if (mysql_num_rows($get_topics_res) < 1) {</TD></TR></TABLE><!--/code-->
a coupple of lines above the last pics of code and yeh the db is set up to use it.
Re: php gurus please help
Posted by Leperous on
Mon Feb 23rd 2004 at 11:28pm
Posted
2004-02-23 11:28pm
Leperous
Creator of SnarkPit!
member
3382 posts
1635 snarkmarks
Registered:
Aug 21st 2001
Occupation: Lazy student
Location: UK
Should be a > sign there, I think, otherwise more poor but working code :argh: Again, I'd personally leave that last line out (mysql_num_rows), it's a bit pointless. Also make sure you have some topics in your database..!
These forums simply work off the following code (the last reply time is stored in the topic table, making it possible to sort the topics by when it was last replied to, along with the number of replies to that topic so you don't need to manually count how many replies there are each time!):
$tpp = 20; //topics per page
if(!$page) $start = 0; else $start = ($page-1)*$tpp;
$sql = mysql_query("SELECT * FROM topics WHERE forum_id = '$forum' ORDER BY topic_time DESC LIMIT $start, $tpp");
while($array = mysql_fetch_array($sql)) {
(blah blah blah)
}
Re: php gurus please help
Posted by Monqui on
Mon Feb 23rd 2004 at 11:37pm
Posted
2004-02-23 11:37pm
Monqui
member
743 posts
94 snarkmarks
Registered:
Sep 20th 2002
Occupation: Poor College Student
Location: Iowa, USA
To be honest, it's a bit hard to find out what's wrong now since we don't have the entire script...
Now, another question- is there actually an entry in the DB for this?
If nothing is there, obviously nothing can get spat out at you...
Don't be offended if these sound condescending, I'm just trying to think of little things that can go wrong...
Re: php gurus please help
Posted by scary_jeff on
Mon Feb 23rd 2004 at 11:55pm
Posted
2004-02-23 11:55pm
1614 posts
191 snarkmarks
Registered:
Aug 22nd 2001
The best thing you can do to find out why your code isn't working is to get it to echo variables as it goes along, then see where something isn't waht it should be. I suggest echoing the exact SQL it is using, then trying that SQL in PHPMyAdmin, to see if you get the correct results there.
[edit] you may want to use some indentation system in your code to make it easier to follow [/edit]
Re: php gurus please help
Posted by Leperous on
Mon Feb 23rd 2004 at 11:57pm
Posted
2004-02-23 11:57pm
Leperous
Creator of SnarkPit!
member
3382 posts
1635 snarkmarks
Registered:
Aug 21st 2001
Occupation: Lazy student
Location: UK
Like I said, get rid of the line containing mysql_num_rows (along with the corresponding, closing } at the end) and it should work. Or at least change it to greater than, >, because right now it's only doing that loop if you don't have any topics to display...
Re: php gurus please help
Posted by Hornpipe2 on
Tue Feb 24th 2004 at 1:11am
636 posts
123 snarkmarks
Registered:
Sep 7th 2003
Occupation: Programmer
Location: Conway, AR, USA
Edit php.ini and enable the little flag that shows errors in the webpage instead of just a blank page. I don't remember what it's called now, but it's in there somewhere.