include php with form

Hello,

I would like to organize all my PHP code with single PHP files. I can include such a file onBeforeProcess with FORM for example, but I will need FORM field variables as well. I thought this might work:

With FORM onBeforeProcess:

// values
$sc_app_supplement_substance___pk_id = {sc_app_supplement_substance___pk_id};
$sc_app_supplement_substance___product = {sc_app_supplement_substance___product};
$sc_app_supplement_substance___substance = {sc_app_supplement_substance___substance};
$sc_app_supplement_substance___content_per = {sc_app_supplement_substance___content_per};
$sc_app_supplement_substance___content_per_unit = {sc_app_supplement_substance___content_per_unit};
$sc_app_supplement_substance___content_unit = {sc_app_supplement_substance___content_unit};
$sc_app_supplement_substance___build_author = {sc_app_supplement_substance___build_author};
$sc_app_supplement_substance___build_datetime = {sc_app_supplement_substance___build_datetime};
$sc_app_supplement_substance___edit_author = {sc_app_supplement_substance___edit_author};
$sc_app_supplement_substance___edit_datetime = {sc_app_supplement_substance___edit_datetime};
$sc_app_supplement_substance___publish = {sc_app_supplement_substance___publish};
$sc_app_supplement_substance___publish_block = {sc_app_supplement_substance___publish_block};

// include
include_once('tools/scripts/form___sc_app_supplement_substance___onbeforeprocess___new.php');

With my PHP file:


<?php
// values
$user = JFactory::getUser();
$uk_username = $user->username;
$uk_name = $user->name;
$uk_id = $user->id;
$datetime = date('Y-m-d H:i:s');

// insert
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$columns = array('product', 'substance', 'content_per', 'content_per_unit', 'content', 'content_unit', 'build_author', 'build_datetime', 'edit_author', 'edit_datetime', 'publish', 'publish_block');
$values = array();
// proper escaping/quotes should be done here, and probably in a loop, but cluttered the answer, so omitted it
$values[] = "$sc_app_supplement_substance___product, $sc_app_supplement_substance___substance, '$sc_app_supplement_substance___content_per', '$sc_app_supplement_substance___content_per_unit', '$sc_app_supplement_substance___content', '$sc_app_supplement_substance___content_unit','".$uk_id."', '".$datetime."', '".$uk_id."', '".$datetime."', 1, 0";

$query->insert($db->quoteName('sc_app_supplement_substance'));
$query->columns($columns);
$query->values($values);
$db->setQuery($query);
$db->query();

// exit form
return false;

Result:

I am getting Joomla error: syntax error, unexpected ';'

Not sure where to search for the error.
 
Besides the fact, that my variables had no quotes, I also missed 1 variable. The main reason why it didn't work, was because of the quotes with the field variables:

onBeforeProcess

$sc_app_supplement_substance___pk_id = '{sc_app_supplement_substance___pk_id}';
$sc_app_supplement_substance___product = '{sc_app_supplement_substance___product}';
$sc_app_supplement_substance___substance = '{sc_app_supplement_substance___substance}';
$sc_app_supplement_substance___content_per = '{sc_app_supplement_substance___content_per}';
$sc_app_supplement_substance___content_per_unit = '{sc_app_supplement_substance___content_per_unit}';
$sc_app_supplement_substance___content = '{sc_app_supplement_substance___content}';
$sc_app_supplement_substance___content_unit = '{sc_app_supplement_substance___content_unit}';
$sc_app_supplement_substance___build_author = '{sc_app_supplement_substance___build_author}';
$sc_app_supplement_substance___build_datetime = '{sc_app_supplement_substance___build_datetime}';
$sc_app_supplement_substance___edit_author = '{sc_app_supplement_substance___edit_author}';
$sc_app_supplement_substance___edit_datetime = '{sc_app_supplement_substance___edit_datetime}';
$sc_app_supplement_substance___publish = '{sc_app_supplement_substance___publish}';
$sc_app_supplement_substance___publish_block = '{sc_app_supplement_substance___publish_block}';

include_once('tools/scripts/form___sc_app_supplement_substance___onbeforeprocess___new.php');

// exit form
return false;

PHP file:

<?php
// values
$user = JFactory::getUser();
$uk_username = $user->username;
$uk_name = $user->name;
$uk_id = $user->id;
$datetime = date('Y-m-d H:i:s');

// insert
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$columns = array('product', 'substance', 'content_per', 'content_per_unit', 'content', 'content_unit', 'build_author', 'build_datetime', 'edit_author', 'edit_datetime', 'publish', 'publish_block');
$values = array();
// proper escaping/quotes should be done here, and probably in a loop, but cluttered the answer, so omitted it
$values[] = "'" . $sc_app_supplement_substance___product . "', '" . $sc_app_supplement_substance___substance . "', '" . $sc_app_supplement_substance___content_per . "', '" . $sc_app_supplement_substance___content_per_unit . "', '" . $sc_app_supplement_substance___content . "', '" . $sc_app_supplement_substance___content_unit . "','" . $uk_id . "', '" . $datetime . "', '" . $uk_id . "', '" . $datetime . "', 1, 0";

$query->insert($db->quoteName('sc_app_supplement_substance'));
$query->columns($columns);
$query->values($values);
$db->setQuery($query);
$db->query();
 
We are in need of some funding.
More details.

Thank you.

Members online

Back
Top