PDA

View Full Version : while/conditional problem


sabret00the
02-07-2005, 02:34 PM
// ###################### groups by cat
$grps_categories = $DB_site->query("
SELECT grps.groupid, grps.title, grps.description,grps.catid, grps_catergories.title AS catname, grps.approved,grps.leaderid
FROM grps
LEFT JOIN grps_catergories ON(grps_catergories.catid = grps.catid)
WHERE grps.approved=1
ORDER BY grps_catergories.catid ASC, grps.title ASC
");

if (!$DB_site->num_rows($grps_categories))
{ // nogroups, this becomes obselete after the first group gets created
eval("\$grps_catbits = \"" . fetch_template("groups_browse_cathead") ."\";");
$grps_catbits .="<tr><td class=\"alt1\" align=\"center\">no groups found inthis catergory at this time</td></tr>";
eval("\$grps_catbits .= \"" . fetch_template("groups_browse_catfoot") ."\";");
}
else
{ // display the information
$row = "0";
while ($grps_categoryinfo =$DB_site->fetch_array($grps_categories))
{
if ($row == 0)
{
eval("\$grps_catbits .= \"" . fetch_template("groups_browse_cathead") ."\";");

// resetcatname store
$grps_catidstore = $grps_categoryinfo['catid'];
}
echo"$grps_categoryinfo[catid]<br />";
if ($grps_catidstore !=$grps_categoryinfo[catid] AND $row != 0)
{
eval("\$grps_catbits .= \"" . fetch_template("groups_browse_cathead") ."\";");

// resetcatname store
$grps_catidstore = $grps_categoryinfo['catid'];
}

$grps_categoryinfo['title'] =stripslashes($grps_categoryinfo['title']);
$grps_categoryinfo['description']= nl2br(stripslashes($grps_categoryinfo['description']));
$grps_categoryinfo['catname'] =stripslashes($grps_categoryinfo['catname']);
extract($grps_categoryinfo);

eval("\$grps_catbits .= \"" .fetch_template("groups_browse_catbit") . "\";");

if ($grps_categoryinfo[catid] !=$grps_catidstore)
{
// can't getinto this for some reason
eval("\$grps_catbits .= \"" . fetch_template("groups_browse_catfoot") ."\";");
}
// else
// {
// eval("\$grps_catbits .= \"" . fetch_template("groups_browse_catfoot") ."\";");
// }
$row++;
} //now echo the date into the template
}
the code above is actually perfect, well it works anyway, only problemis that it doesn't actually seem to work, i can't get into theconditonal that groups the data together rather than it just creating anew table, wondered if anyone could help please, as i havne't got aclue what's wrong with it, especially as echoing out the data manuallyshows that it should be doing what i'm trying to do.

basically $grps_catidstore echo's out 4
4
4
8
8

and $grps_catergoryinfo = 4
4
4
4
8

now based on that the first three should be in one table (it'sextracting one groups_browse_cathead and one groups_browse_catfoot) butfor some reason it won't do it :(

miz
02-07-2005, 03:44 PM
how does the new table should look ?

Group id / Group name / Group Description

like that ? or what ?
what is it 44488 ?
can you be a little more clear ?

sabret00the
02-07-2005, 03:57 PM
the table will go
groups_browse_cathead
<tableclass="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="1"border="0" width="100%" align="center">
<tr>
<tdclass="tcat"> <a style="float:$stylevar[right]" href="#top"onclick="returntoggle_collapse('groups_$grps_categoryinfo[catid]')"><imgid="collapseimg_groups_$grps_categoryinfo[catid]"src="$vboptions[bburl]/$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_groups_newest].gif"alt="" border="0" /></a>
$grps_categoryinfo[catname]
</td>
</tr>
<tbodyid="collapseobj_groups_$grps_categoryinfo[catid]"style="$vbcollapse[collapseobj_groups_newest]">
<tr>
<tdclass="alt1" style="padding: 0px">
<tablecellpadding="$stylevar[cellpadding]"cellspacing="$stylevar[cellspacing]" border="0"width="$stylevar[tablewidth]">


groups_browse_catbit
<if condition="exec_switch_bg() && $bg = $bgclass. '_bgcolor'"></if>
<tr bgcolor="$stylevar[$bg]">
<td>
<b><ahref="groups.php?$session[sessionurl]g=$grps_categoryinfo[groupid]">$grps_categoryinfo[title]</a></b><br/>
<span class="smallfont">$grps_categoryinfo[description]<br /></span>
</td>
</tr>

groups_browse_catfoot

</table>
</td>
</tr>
</tbody>
<tr>
<tdclass="thead"><imgsrc="$vboptions[bburl]/$stylevar[imgdir_misc]/clear.gif" alt=""width="1" height="1" /></td>
</tr>
</table>
<br />

44488 is $grps_catergoryinfo[catid]<br /> echoing out all the records from the database

apart from that this might help

what i'm trying to acheive is
table start for catid = 1
record 1 where cat id = 1
record 2 where cat id = 1
record 3 where cat id = 1
record 4 where cat id = 1
table end for catid = 1

table start for catid = 2
record 1 where cat id = 2
record 2 where cat id = 2
record 3 where cat id = 2
record 4 where cat id = 2
table end for catid = 2

if any of that makes sense?

miz
02-07-2005, 04:19 PM
GROUP BY grps_catergories.catid

so its will show all groups and there cats

(if i got you right)

user print_r
before you use templates
this way you can ensure you getting the info you want
(thats what i allways do before i use templates) - very usefull

sabret00the
02-07-2005, 05:17 PM
the templates are all echoing perfectly and i don't actually need the group by for the moment as the only problem is getting it to use the second conditional that will make it close the table.

Marco van Herwaarden
02-07-2005, 05:50 PM
Aren't you just missing one time the footer AFTER the while loop is finished (outside the loop)?

sabret00the
02-07-2005, 06:07 PM
nope, it's meant to do the footer everytime the catid changes

Marco van Herwaarden
02-07-2005, 06:12 PM
Yes, but after the last catid you process you will want a finishing footer. But you will never know in your loop that you are processing the last catid. This you will only know once you break out of the loop. So outside the loop you will need to print one more footer.

sabret00the
02-07-2005, 06:45 PM
you're right, that's added but still need to get the cat foot in when it's looping

heres some screenshots to try and demonstrate what i'm trying to acheive

cat_now = the mess it is now
cat_then = what i'm trying to acheive.

Marco van Herwaarden
02-07-2005, 06:53 PM
In the top do something like:
if ($grps_catidstore != $grps_categoryinfo['catid'] AND $row != 0)
{
eval.......footer // close last catid)
eval.......header // open new catid

// resetcatname store
$grps_catidstore = $grps_categoryinfo['catid'];
}


PS If $Row is not used in a template, you could get rid of that to.

sabret00the
02-07-2005, 06:59 PM
that worked, with another edit

$row = "0";
while($grps_categoryinfo = $DB_site->fetch_array($grps_categories))
{
if($row == 0)
{

eval("\$grps_catbits.= \"" . fetch_template("groups_browse_cathead") . "\";");

//reset catname store
$grps_catidstore= $grps_categoryinfo['catid'];
$seperator= TRUE;
}

if($grps_catidstore != $grps_categoryinfo[catid] AND $row != 0)
{
eval("\$grps_catbits.= \"" . fetch_template("groups_browse_catfoot") . "\";");
eval("\$grps_catbits.= \"" . fetch_template("groups_browse_cathead") . "\";");
}

$grps_categoryinfo['title']= stripslashes($grps_categoryinfo['title']);
$grps_categoryinfo['description']= nl2br(stripslashes($grps_categoryinfo['description']));
$grps_categoryinfo['catname']= stripslashes($grps_categoryinfo['catname']);

eval("\$grps_catbits .=\"" . fetch_template("groups_browse_catbit") . "\";");

if($grps_categoryinfo[catid] != $grps_catidstore)
{
//reset catname store
$grps_catidstore= $grps_categoryinfo['catid'];
}
$row++;
}//now echo the date into the template
eval("\$grps_catbits.= \"" . fetch_template("groups_browse_catfoot") . "\";");
}
was the final code :) thank you marco :D