How to put in variable fabrik field - checkbox values?

Hi,

I try this code:
PHP:
$db =& JFactory::getDBO();
$quantity2 = (int) '{ccjom_cc_kk_karta_rejestr___zamow_quantity_pos_ordered}';
$currentseriala = '{ccjom_cc_kk_karta_rejestr___product_serial_num2}';

$currentserial2 = filter_var($currentseriala, FILTER_SANITIZE_NUMBER_INT);
$idclone2 = (int) '{ccjom_cc_kk_karta_rejestr___id}';
$tojestkarta = 2;

    $idclone4 = $idclone2 - $quantity2;
    $currentserial4 = $currentserial2 - 2;
    $i = 1;
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'IA')
{$a=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'IB')
{$b=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'IC')
{$c=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'ID')
{$d=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'IE')
{$e=1;}

$pace = $a + $c+ $e;
$pbd = $b + $d;

for ($i = 1; $i <= $quantity2; $i++) {

    $idclone5 = $idclone4 + 1;
    $idclone4 = $idclone5;

    $currentserial5 = $currentserial4 + 2;
    $currentserial4 = $currentserial5;

$query1 = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `product_serial_num2`= " .$currentserial5. " , `rodzaj_karty_np_wzorzec` = '2', `pi_ace`= " .$pace. " , `pi_bd` = " .$pbd. " WHERE `id` = " .$idclone5. " " ;
$db->setQuery($query1);
$db->query();

   }

Problem is with line like this:
PHP:
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}' == 'IA')
{$a=1;}

I have no idea how to write for fabrik field-checbox condition "If" value-'IA' is checked?

I have field-checkbox: ('{ccjom_cc_kk_karta_rejestr___ip_konfig2}'
that have 5 checkboxes values:
IA
IB
IC
ID
IE

How to code in fabrik: 'value of the first selected checkbox'
How to code in fabrik: 'value of the second selected checkbox'
..... ?

Not in fabrik is:
$_POST['thename'][0] = 'value of the first selected checkbox';
$_POST['thename'][1] = 'value of the second selected checkbox';



Can i get any help?
 
Last edited:
Hi,
I try also this:
PHP:
$db =& JFactory::getDBO();
$quantity2 = (int) '{ccjom_cc_kk_karta_rejestr___zamow_quantity_pos_ordered}';
$currentseriala = '{ccjom_cc_kk_karta_rejestr___product_serial_num2}';

$currentserial2 = filter_var($currentseriala, FILTER_SANITIZE_NUMBER_INT);
$idclone2 = (int) '{ccjom_cc_kk_karta_rejestr___id}';
$tojestkarta = 2;

    $idclone4 = $idclone2 - $quantity2;
    $currentserial4 = $currentserial2 - 2;
    $i = 1;
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2_0}' == 1)
{$a=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2_1}' == 1)
{$b=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2_2}' == 1)
{$c=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2_3}' == 1)
{$d=1;}
if ('{ccjom_cc_kk_karta_rejestr___ip_konfig2_4}' == 1)
{$e=1;}

$pace = $a + $c+ $e;
$pbd = $b + $d;

for ($i = 1; $i <= $quantity2; $i++) {
   
    $idclone5 = $idclone4 + 1;
    $idclone4 = $idclone5;
  
    $currentserial5 = $currentserial4 + 2;
    $currentserial4 = $currentserial5;
   
$query1 = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `product_serial_num2`= " .$currentserial5. " , `rodzaj_karty_np_wzorzec` = '2', `pi_ace`= " .$pace. " , `pi_bd` = " .$pbd. " WHERE `id` = " .$idclone5. " " ;
$db->setQuery($query1);
$db->query();

   }

But also doesn't works - i get in column: `pi_ace` and `pi_bd` always "0" (zero)
 
When dealing with elements that can have multiple selections, it's always best to access the form data array directly, rather than using placeholders. Obviously placeholders can only be simple text, which isn't very good for representing data structures like arrays. What you will actually get from the placeholder for a checkbox is a comma seperated list of selected values, like "2,4".

If you look at $formModel->formData['yourtable___yourcheckbox'] you find that it is an array, keyed by the checkbox's index. So in the "2,4" example, if those were the second and fourth checkboxes, you would have ...

$formModel->formData['yourtable___yourcheckbox'][1] with value of 2
$formModel->formData['yourtable___yourcheckbox'][3] with value of 4

The easiest way to see if a given checkbox is selected is to use in_array(), testing for the checkbox's value, like ...

PHP:
if (in_array('4', $formModel->formData['yourtable___yourcheckbox'])) {
   // your code here
}

-- hugh
 
I try this , but still get in columns `pi_ace` and `pi_bd` always "0" (zero)
PHP:
$db =& JFactory::getDBO();
$quantity2 = (int) '{ccjom_cc_kk_karta_rejestr___zamow_quantity_pos_ordered}';
$currentseriala = '{ccjom_cc_kk_karta_rejestr___product_serial_num2}';

$currentserial2 = filter_var($currentseriala, FILTER_SANITIZE_NUMBER_INT);
$idclone2 = (int) '{ccjom_cc_kk_karta_rejestr___id}';
$tojestkarta = 2;

    $idclone4 = $idclone2 - $quantity2;
    $currentserial4 = $currentserial2 - 2;
    $i = 1;

$aa = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][0];
$bb = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][1];
$cc = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][2];
$dd = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][3];
$ee = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][4];

if ($aa == 1)
{$a=1;}
if ($bb == 1)
{$b=1;}
if ($cc == 1)
{$c=1;}
if ($dd == 1)
{$d=1;}
if ($ee == 1)
{$e=1;}

$pace = $a + $c+ $e;
$pbd = $b + $d;

for ($i = 1; $i <= $quantity2; $i++) {
  
    $idclone5 = $idclone4 + 1;
    $idclone4 = $idclone5;
 
    $currentserial5 = $currentserial4 + 2;
    $currentserial4 = $currentserial5;
  
$query1 = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `product_serial_num2`= " .$currentserial5. " , `rodzaj_karty_np_wzorzec` = '2', `pi_ace`= " .$pace. " , `pi_bd` = " .$pbd. " WHERE `id` = " .$idclone5. " " ;
$db->setQuery($query1);
$db->query();

   }
 
Do a
var_dump($formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);exit;
to see what you have.
 
Where do you use this code?

BTW:
The array $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] will only have entries for checked checkboxes and it will contain your checkbox values, not 1.
So use Hugh's code.
 
I use this code on form - php plugin - process script - End of form submission (On After Process)
code:
PHP:
$db =& JFactory::getDBO();

$quantity2 = (int) '{ccjom_cc_kk_karta_rejestr___zamow_quantity_pos_ordered}';
$currentseriala = '{ccjom_cc_kk_karta_rejestr___product_serial_num2}';

$currentserial2 = filter_var($currentseriala, FILTER_SANITIZE_NUMBER_INT);
$idclone2 = (int) '{ccjom_cc_kk_karta_rejestr___id}';
$tojestkarta = 2;

    $idclone4 = $idclone2 - $quantity2;
    $currentserial4 = $currentserial2 - 2;
    $i = 1;

$aa = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][0];
$bb = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][1];
$cc = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][2];
$dd = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][3];
$ee = $formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][4];

var_dump($formModel->formData['ccjom_cc_kk_karta_rejestr___ip_konfig2'][0]);exit;

if ($aa == 1)
{$a=1;}
if ($bb == 1)
{$b=1;}
if ($cc == 1)
{$c=1;}
if ($dd == 1)
{$d=1;}
if ($ee == 1)
{$e=1;}

$pace = $a + $c+ $e;
$pbd = $b + $d;

for ($i = 1; $i <= $quantity2; $i++) {
   
    $idclone5 = $idclone4 + 1;
    $idclone4 = $idclone5;
  
    $currentserial5 = $currentserial4 + 2;
    $currentserial4 = $currentserial5;
   
$query1 = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `product_serial_num2`= " .$currentserial5. " , `rodzaj_karty_np_wzorzec` = '2', `pi_ace`= " .$pace. " , `pi_bd` = " .$pbd. " WHERE `id` = " .$idclone5. " " ;
$db->setQuery($query1);
$db->query();

   }
 
So do this.

PHP:
$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0;
$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0;

... etc. for your $a through $e values.

-- hugh
 
I try this (don't know what to write exactly --- your code ?) and still get always 0 (zero)
PHP:
$db =& JFactory::getDBO();
$quantity2 = (int) '{ccjom_cc_kk_karta_rejestr___zamow_quantity_pos_ordered}';
$currentseriala = '{ccjom_cc_kk_karta_rejestr___product_serial_num2}';

$currentserial2 = filter_var($currentseriala, FILTER_SANITIZE_NUMBER_INT);
$idclone2 = (int) '{ccjom_cc_kk_karta_rejestr___id}';
$tojestkarta = 2;

    $idclone4 = $idclone2 - $quantity2;
    $currentserial4 = $currentserial2 - 2;
    $i = 1;


$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);
$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);
$c = in_array('IC', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);
$d = in_array('ID', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);
$e = in_array('IE', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);
$pace = $a + $c+ $e;
$pbd = $b + $d;


for ($i = 1; $i <= $quantity2; $i++) {
 
    $idclone5 = $idclone4 + 1;
    $idclone4 = $idclone5;

    $currentserial5 = $currentserial4 + 2;
    $currentserial4 = $currentserial5;
 
$query1 = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `product_serial_num2`= " .$currentserial5. " , `rodzaj_karty_np_wzorzec` = '2', `pi_ace`= " .$pace. " , `pi_bd` = " .$pbd. " WHERE `id` = " .$idclone5. " " ;
$db->setQuery($query1);
$db->query();

   }
 

Attachments

  • Zaznaczenie_051.png
    Zaznaczenie_051.png
    55.5 KB · Views: 322
  • Zaznaczenie_052.png
    Zaznaczenie_052.png
    12.3 KB · Views: 328
Reread the code snippet I posted. You missed out the "? 1 : 0" on the end of the lines.

Sent from my HTC One using Tapatalk
 
Hmm,
I try also your exact code:
$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0;
$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0;

and something with probably missing ")"
$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0);
$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ? 1 : 0);
Nothing doesn't work
 
when trying this simplest code:
PHP:
$db =& JFactory::getDBO();

$idrek = '{ccjom_cc_kk_karta_rejestr___id}';

var_dump(
$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0);
exit;
$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$c = in_array('IC', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$d = in_array('ID', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$e = in_array('IE', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;

$pace = $a + $c+ $e;
$pbd = $b + $d;

//$pace = 3;
//$pbd = 2;

$query = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `pi_ace`=$pace , `pi_bd`=$pbd WHERE `id` = ".$db->Quote($idrek);
$db->setQuery($query);
$db->query();

I get:
int(0)
-----------------
but checkbox IA for my edited record is checked - don't know what is wrong

I try checked and unchecked IA and i always get:
int(0)
 
Last edited:
do a var_dump on the complete array to see what you have (as mentioned in post #5)

var_dump($formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);exit;
 
I am not sure if you mean this:
PHP:
$db =& JFactory::getDBO();

$idrek = '{ccjom_cc_kk_karta_rejestr___id}';

var_dump($formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2']);exit;

$a = in_array('IA', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;

$b = in_array('IB', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$c = in_array('IC', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$d = in_array('ID', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;
$e = in_array('IE', $formModel->fullFormData['ccjom_cc_kk_karta_rejestr___ip_konfig2'] ) ? 1 : 0;

$pace = $a + $c+ $e;
$pbd = $b + $d;

//$pace = 3;
//$pbd = 2;

$query = "UPDATE `ccjom_cc_kk_karta_rejestr` SET `pi_ace`=$pace , `pi_bd`=$pbd WHERE `id` = ".$db->Quote($idrek);
$db->setQuery($query);
$db->query();

I get:
NULL
 
It's working on my site.
Is your element name correct?

Ah, this is 3.0 forum. Are you still on J2.5?
I don't know if fullFormData is existing there.
Try to var_dump the other possibilities given in the WIKI (functions with/without leading _, long or short element names)
 
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top