Hello Michael,

Yes, I've checked the value of $form_state['values']['tcmb_currency] and it always came back 0 and therefore saved a 0. I found out why thanks to #drupal-support on Freenode. All I had to do was replace '#value' => 'tcmb_currency' from tcmb_settings_form with '#default_value' => variable_get('currency',$form_state['values']['tcmb_currency']); and then it started saving properly.

Regards,
Tolga

08-06-2011 18:18, Michael Favia yazmış:
On 06/08/11 01:37, Tolga wrote:
Hi,

I have the below code, and it doesn't quite do what I want.

function tcmb_settings_form_submit($form, $form_state) {
variable_set('tcmb_currency', $form_state['values']['tcmb_currency']);
$sql = "INSERT INTO {tcmb} (currency) VALUES('".$form_state['values']['tcmb_currency']."')";
return db_query($sql);
}

According to a Lullabot video I watched, the variable_set function should set the posted value to variables table, and the field should stay with the correct value in it, but it automatically goes back to the first value. Also, stupid question but how do you save to database. The above code always saves a 0.
You are correct that the above code sets the variable 'tcmb_currency' (thank you for properly namespacing your variables) to the value of $form_state['values']['tcmb_currency']. Furthermore the variable is passed 'by value' to the variable_set function so it is not modified in anyway in its local scope.

Have you checked the value of your $form_state['values'] with a dsm()? or print_r() to make sure they are ever properly populated. I noticed you have a validation function and you CAN alter your forms values there so you might want to make sure you arent accidentally unsetting them in some fashion in there. Good luck and please let us know how it goes.

Reply via email to