Forums

Doing a bit of math and saving it in DB

fribse 01 Dec, 2011
Hi Guys

I would like to have a form where i get an integer, double it, and add a second field, and then store the result.

I was thinking that if I create a hidden field with a value name, and then use this script:

<?php
$number1 = JRequest::getInt('uge', ', 'post');
$number2 = JRequest::getInt('dag', ', 'post');
echo ( $number * 2 ) + $number2 ;
?>

and then of course change the echo to assign the variable when it's working.

The form has 'uge' and 'dag' as field names, but when I submit, I get an error, did I do it wrong, is the example I found from a previous version of some sort?
GreyHead 02 Dec, 2011
Hi fribse,

The two JRequest lines are missing a '
$number1 = JRequest::getInt('uge', '', 'post');


Bob
fribse 02 Dec, 2011
Ok, that got rid of the error (sigh, what an oversight).

So now it's producing the numbers I want, the code for now looks like this:

<?php
$number1 = JRequest::getFloat('uge', '', 'post');
$number2 = JRequest::getFloat('dag', '', 'post');
echo ( $number1 + $number2 );
$number3 = JRequest::getInt('a', '', 'post');
$number4 = JRequest::getInt('b', '', 'post');
$number5 = JRequest::getInt('c', '', 'post');
$number6 = JRequest::getInt('d', '', 'post');
echo ( $number3 + $number4 + $number3 + $number4 );
?>


This produces numbers I want.
I would very much like to store the two numbers in the database, and I've created hidden fields to store them, but how do I go about saving the values to the hidden fields, and thus get them stored in the DB?
fribse 02 Dec, 2011
I've defined two hidden fields, total and ugedag, and then I changed the code to this:

<?php
$number1 = JRequest::getFloat('uge', '', 'post');
$number2 = JRequest::getFloat('dag', '', 'post');
$ugedag = $number1 + $number2 ;
$number3 = JRequest::getInt('gsk', '', 'post');
$number4 = JRequest::getInt('dkdb', '', 'post');
$number5 = JRequest::getInt('aqua', '', 'post');
$number6 = JRequest::getInt('greve', '', 'post');
$total   = $number3 + $number4 + $number3 + $number4 ;
echo"<input type='hidden' name='ugedag' value='".$ugedag."' />";
echo"<input type='hidden' name='total' value='".$total."' />";
?>


But I don't see it saved to the db.
fribse 03 Dec, 2011
No enlightning insights on this?

Btw. this is the form code:
<div class="ccms_form_element cfdiv_header" id="_h1_hvem_har_deltaget_i_sv_mmehallen_h1___container_div"><H1>Hvem har deltaget i svømmehallen?</H1><div class="clear"></div></div><div class="ccms_form_element cfdiv_text" id="ugenummer_container_div"><label>Ugenummer</label><input maxlength="150" size="30" class=" validate['required','number']" title="" label_over="0" hide_label="0" type="text" value="" name="uge" />
<div class="clear"></div><div id="error-message-uge"></div></div><div class="ccms_form_element cfdiv_select" id="dag_container_div"><label>Dag</label><select size="1" label_over="0" hide_label="0" class="" title="" type="select" name="dag">
<option value="0" selected>Onsdag</option>
<option value="0.5">Fredag</option>
</select>
<div class="clear"></div><div id="error-message-dag"></div></div><div class="ccms_form_element cfdiv_text" id="gsk_deltagere_container_div"><label>GSK deltagere</label><input maxlength="150" size="30" class=" validate['number']" title="" label_over="0" hide_label="0" type="text" value="" name="gsk" />
<div class="clear"></div><div id="error-message-gsk"></div></div><div class="ccms_form_element cfdiv_text" id="dkdb_deltagere_container_div"><label>DKDB deltagere</label><input maxlength="150" size="30" class=" validate['number']" title="" label_over="0" hide_label="0" type="text" value="" name="dkdb" />
<div class="clear"></div><div id="error-message-dkdb"></div></div><div class="ccms_form_element cfdiv_text" id="aqua_deltagere_container_div"><label>Aqua deltagere</label><input maxlength="150" size="30" class=" validate['number']" title="" label_over="0" hide_label="0" type="text" value="" name="aqua" />
<div class="clear"></div><div id="error-message-aqua"></div></div><div class="ccms_form_element cfdiv_text" id="grevedykkerne_deltagere_container_div"><label>Grevedykkerne deltagere</label><input maxlength="150" size="30" class=" validate['number']" title="" label_over="0" hide_label="0" type="text" value="" name="greve" />
<div class="clear"></div><div id="error-message-greve"></div></div><div class="ccms_form_element cfdiv_submit" id="input_submit_8_container_div"><input name="input_submit_8" class="" value="Gem" type="submit" />
<div class="clear"></div><div id="error-message-input_submit_8"></div></div><input id="tal" type="hidden" value="0" name="total" />
<input id="ugedag" type="hidden" value="0" name="ugedag" />
fribse 03 Dec, 2011
Hmm, this is getting weirder.

I've created the form, and it saves the typed in values.
The small adding works, but it isn't saved to the DB.
Finally the check for that the entry is already done, doesn't work.
It just tells me no matter what, that it is already entered??

I hope some wise guys can correct me?
fribse 04 Dec, 2011
I found the DB Unique Constraint thread, and according to that, the check for if the value exists in DB is ok, so it's just a question of the hidden fields not getting updated, and stored to the DB.
fribse 04 Dec, 2011
After searching my head of on the forum I think I found an article where they wanted to do almost the same, so I changed my code a bit.

It now reads:
<?php
$number1 = JRequest::getFloat('uge', '', 'post');
$number2 = JRequest::getFloat('dag', '', 'post');
$ugedag = $number1 + $number2 ;
$number3 = JRequest::getInt('gsk', '', 'post');
$number4 = JRequest::getInt('dkdb', '', 'post');
$number5 = JRequest::getInt('aqua', '', 'post');
$number6 = JRequest::getInt('greve', '', 'post');
$total   = $number3 + $number4 + $number3 + $number4 ;
echo $ugedag;
echo $total;
$('ugedag').value = $ugedag
$('tal').value = $total
?>

the two 'echo' statements gives me the correct additions.
And after that I get an error:

Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /home/dkdbdk/public_html/administrator/components/com_chronoforms/form_actions/custom_code/custom_code.php(18) : eval()'d code on line 12

GreyHead 05 Dec, 2011
Hi fribse,

Down to $echo total; this is PHP. The last two lines are JavaScript and that's where the error comes from.

In CFv4 the code would go in a Custom Code action in the ON Submit event and be something like this:
<?php
$number1 = JRequest::getFloat('uge', 0, 'post');
$number2 = JRequest::getFloat('dag', 0, 'post');
$from->data['ugedag'] = $number1 + $number2 ;
$number3 = JRequest::getInt('gsk', 0, 'post');
$number4 = JRequest::getInt('dkdb', 0, 'post');
$number5 = JRequest::getInt('aqua', 0, 'post');
$number6 = JRequest::getInt('greve', 0, 'post');
$from->data['total']   = $number3 + $number4 + $number3 + $number4 ;
?>

Bob
fribse 05 Dec, 2011
Hi Bob

Thankyou, I'm a terrible coder, so it doesn't surprise me that I get things mixed up, thankyou very much for the help!

I've added the customcode as the first action in the on submit.
I have two hidden fields in the form, one is called ugedag, the other is total I've created them so that I thought I would make the db save also saved those two values.
The default values for them are both set to 0.

But the table does not get updated with the calculated data.
I've attached the form as a backup, can you tell me what I'm still doing wrong?
This topic is locked and no more replies can be posted.