How can I display a calculated value in my template?

Archived from the Xataface Users forum.

s_nalepa — Mon Feb 02, 2009 3:46 am

In my tables/objekt folder I created a file objekt.php with these contents:

Code: Select all
<?php class tables_objekt {    function summa_est(){       $result_est = mysql_query("select sum(est_low) as sum_low_est from objekt", $app->db());           return $result_est;    } } ?>

Then I have made an extra slot in my own copy of the entire Dataface_Main_Template.html in my templates folder. In this slot I call another template. How can I access the value of the summa_est() function?


shannah — Mon Feb 02, 2009 6:10 pm

You probably want to do this as a block… Unfortunately you’re not returning any text in this function - which a block is meant to do.

e.g.

Code: Select all
<php>db());           while ($row = mysql_fetch_row($result_est) ){              echo $row[0].'<br>';           }     } }

Then you could access this in your template by adding:

Code: Select all
{block name="summa_est"}

You could also create a calculated field using your delegate class, however a calculated field is meant to be a member of a particular record. With calculated fields you would be able to return arbitrary types of data though (not just text).

-Steve


s_nalepa — Mon Feb 02, 2009 9:30 pm

Where should I put this piece of code?

Could it look like this:

Code: Select all
<?php $result_est = mysql_query("select sum(est_low) as sum_low_est from objekt", $app->db()); echo $result_est; ?>

?


s_nalepa — Mon Feb 02, 2009 9:59 pm

Now I tried this code in my objekt.php in this table’s folder:

Code: Select all
<? class tables_objekt {    function block__before_main_table(){       $result_est = mysql_query("select sum(est_low) as sum_low_est from objekt", $app->db());       echo $result_est;    } } ?>

,

but I get this error:

Fatal error: Call to a member function db() on a non-object in /customers/xx/xx/httpd.www/xx/xx/tables/objekt/objekt.php on line 4


shannah — Mon Feb 02, 2009 10:04 pm

I was just using the code that you posted… Notice that you are using the $app object without first retrieving it (it is null). That is your error.

If you need to access the Dataface_Application object, you need to call:

Code: Select all
$app =& Dataface_Application::getInstance();

Alternatively, you could just use the df_db() function which returns the database connection resource.

E.g.

Code: Select all
$result_est = mysql_query("select sum(est_low) as sum_low_est from objekt", df_db());

s_nalepa — Mon Feb 02, 2009 10:16 pm

OK, now there’s no error, but I get a “Resource id #78” instead of the value. How do I resolve this to a value?


s_nalepa — Mon Feb 02, 2009 10:48 pm

Steve!

I finally solved it! Thank you very, very much for your help!

The final, working code is:

Code: Select all
<? class tables_objekt {    function block__before_main_table(){       $res = mysql_query("select sum(est_low) from objekt", df_db());       while ($row = mysql_fetch_array($res)){          $result_est = 'Summa utrop: '.$row[0].' SEK';       }       echo $result_est;    } } ?>

Found the solution after some searching.

So this morning I have learnt a few quite important things - and feel that I am ready for further work with Xataface. I’m hopeful that I will get a nice system in the end.

Kudos.