Re: Result Sets
- From: Tim Streater <timstreater@xxxxxxxxxxxx>
- Date: Tue, 30 Dec 2008 18:12:37 +0000
In article
<629dba1a-92dd-436d-b635-a022d1a82dd8@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
ajtdds@xxxxxxx wrote:
Please bear with me on this one everyone, as it is not often I use
php.
Am trying to put together a news page. First of all I get the last 10
news articles ordered by date.
$query = ("SELECT title, headline, timestamp FROM news ORDER BY
timestamp DESC LIMIT 10");
$result = mysql_query($query) or die ('Error in query: $query .
' .mysql_error());
What I want to do is create a headline page, where for example the
first result is the main headline with title, image and text, results
2 and 3 are subheadlines (with a different table format), and the
remaining headlines just show the title (again with a different table
format). So how can I separate the results.
I have tried the following where $count determines what happenes when
firstly result 1, and then results 2 and 3, and finally the remaining
are current.
$count=0
if (mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result, MYSQL_ASSOC) AND
$count=1)
{
$page=1; echo $page;
$title = $row['title'];
$headline = $row['headline'];
$count=count+1;
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC) AND
$count<4)
{
$page=2; echo $page;
$title = $row['title'];
$headline = $row['headline'];
$count=count+1;
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC) AND
$count>3)
{
echo $count;
$page=3; echo $page;
$title = $row['title'];
$headline = $row['headline'];
$count=count+1;
}
}
But for some reason I do not get past the first 'while' loop.
Again apologies for what might seem a very simple question.
Alec
1) I'm not sure why you think you need the first while loop, you only
want to go round it once anyway.
2) It should in any case be $count==1 rather than $count=1
3) You should probably use && rather than AND (I can't remember the
difference between these two, look it up in the PHP doc).
4) Since you know how many rows you actually get (your first "if") I'd
be inclined to just use a for loop up to that number of rows - which
then won't run at all if the number of rows is zero. Then inside that do
specific actions for specific values of your loop counter.
Something like:
$num = mysql_num_rows ($result);
for ($i=0; $i<$num; $i++)
{
$row = mysql_fetch_array ($result, MYSQL_ASSOC);
if ($i==1)
{
// actions for first one
continue;
}
if ($i==2 || $i==3)
{
// actions for first second and third ones;
continue;
}
// actions for other values
}
But there are probably many ways to organise this.
--
Tim
"That excessive Baile ought not to be required nor excessive Fines imposed
nor cruell and unusuall Punishments inflicted" -- Bill of Rights 1689
.
- Follow-Ups:
- Re: Result Sets
- From: Ron Fox
- Re: Result Sets
- From: Tim Streater
- Re: Result Sets
- References:
- Result Sets
- From: ajtdds
- Result Sets
- Prev by Date: Result Sets
- Next by Date: Re: Result Sets
- Previous by thread: Result Sets
- Next by thread: Re: Result Sets
- Index(es):
Relevant Pages
|