Looking for a simple template with "optional" fields

Looking for a simple template with "optional" fields

am 18.01.2008 14:31:04 von Shai Halevi

I'm looking for a simple template with the following property: The
resulting page should look something like this (say):


This is some text that never changes.
[[[$some variable that can be set from the calling PHP code]]]
This is some more text that never changes.


The crux is that if the calling code never initializes the variable,
then the entire
should not be displayed.

The use-case that I see is this: I have a program that mostly needs to
display long(ish) lists to the clients, but the lists can be
customized. Sometime I want to display the first five columns for each
row, sometime the last four columns, other times only the odd-numbered
columns, etc.

What I want, is to have only the following in my PHP code:

$qry = "SELECT [[[whatever fields I'm interested in]]] FROM mytable
WHERE...";
$res = db_query($qry);
while ($row = db_fetch_assoc($res)) {
$template->add_params($row);
$template->print();
}


In the template I will have something like this:

{[[[$col1-name]]]}
{[[[$col2-name]]]}
....

and only the 's whose column is actually included in $row will be
displayed.


It seems quite trivial to write such a template (I really don't need
much logic there at all), probably a week worth of work. But it will
be even better if I can just use something out there instead.

Thanks,

-- Shai

Re: Looking for a simple template with "optional" fields

am 18.01.2008 19:13:55 von Shion

Shai Halevi wrote:

> The use-case that I see is this: I have a program that mostly needs to
> display long(ish) lists to the clients, but the lists can be
> customized. Sometime I want to display the first five columns for each
> row, sometime the last four columns, other times only the odd-numbered
> columns, etc.
>
> What I want, is to have only the following in my PHP code:
>
> $qry = "SELECT [[[whatever fields I'm interested in]]] FROM mytable
> WHERE...";
> $res = db_query($qry);
> while ($row = db_fetch_assoc($res)) {
> $template->add_params($row);
> $template->print();
> }
>

You need a simple way to turn on/off columns that you want to display, you
could store the column names in an array, works quite well.

$template->showcolumns($columnsarray);

and then your query could work like

$qry="SELECT ".implode(',',$this->columnarray)." FROM yourtable WHERE ...";

The number of columns is then based on the size of the array and is quite
trivial to implement, I don't think you would be spending more than some ten
fifteen minutes to do it.


--

//Aho