Saving form data multiple times at once Topic is solved

For Joomla! 3.x Coding related discussions, you could also use: http://groups.google.com/group/joomla-dev-general

Moderators: ooffick, General Support Moderators

Forum rules
Locked
jbrailas
Joomla! Fledgling
Joomla! Fledgling
Posts: 4
Joined: Mon May 08, 2017 11:22 am

Saving form data multiple times at once

Post by jbrailas » Sun Jan 29, 2023 2:48 pm

Hello, I develop custom components but I haven't yet figured out how to save multiple items of a form data at once.
I use the JTable class for creating new item and I use Ajax & jQuery using JDatabaseQuery class for everything else.
I can't figure out how to save multiple times the same form data (same data but different id and asset_id) or to calculate the asset_id in order to create new items using Ajax at once.
Can anyone give me a hint?

jbrailas
Joomla! Fledgling
Joomla! Fledgling
Posts: 4
Joined: Mon May 08, 2017 11:22 am

Re: Saving form data multiple times at once

Post by jbrailas » Wed Feb 15, 2023 1:09 pm

I've figured it out. The sample code is the following:

$pagia_array = array();
$errors = 0;

//load database
$db = JFactory::getDbo();

//find db prefix
$prefix = $db->getPrefix();

foreach ($service_tags as $service_tag) :

//compute next pagio_id
$query = $db->getQuery(true);
$query->select('AUTO_INCREMENT')
->from('information_schema.tables')
->where("table_name = '" . $prefix . "rns_pagia_projects'");
$db->setQuery($query);
$next_pagio_id = $db->loadResult();

//compute next asset id
$query = $db->getQuery(true);
$query->select('AUTO_INCREMENT')
->from('information_schema.tables')
->where("table_name = '" . $prefix . "assets'");
$db->setQuery($query);
$next_asset_id = $db->loadResult();

//compute rgt
$query = $db->getQuery(true);
$query->select('rgt')
->from('#__assets')
->where('id in (select max(id) FROM #__assets where name like "com_rns_pagia.project%")');
$db->setQuery($query);
$max_asset_rgt = $db->loadResult();

$new_inserted_pagio_id = 0;
$pagio = new stdClass();
$pagio->asset_id = $next_asset_id;
$pagio->catid = $batch_catid;
$pagio->access = 1;
$pagio->name = "p" . $next_pagio_id;
$pagio->alias = "p" . $next_pagio_id;
$pagio->perigrafi = $batch_typos;
$pagio->workorder_id = $batch_workorder_id;
$pagio->release_id = $service_tag;
$pagio->manager = $manager;
$pagio->created = date('Y-m-d H:i:s');
$pagio->created_by = JFactory::getUser()->id;
$pagio->published = 1;
$pagio->language = '*';
try {
JFactory::getDbo()->insertObject('#__rns_pagia_projects', $pagio);
$new_inserted_pagio_id = JFactory::getDbo()->insertID();
}
catch(Exception $e) {
$errors .= $e->getMessage() . "\n";
}

//now populate assets table
$asset = new stdClass();
$asset->parent_id = $parent_id;
$asset->lft = $max_asset_rgt + 1;
$asset->rgt = $max_asset_rgt + 2;
$asset->level = 2;
$asset->name = "com_rns_pagia.project." . $next_pagio_id;
$asset->title = "com_rns_pagia.project." . $next_pagio_id;
$asset->rules = "{}";

try {
JFactory::getDbo()->insertObject('#__assets', $asset);
}
catch(Exception $e) {
$errors .= $e->getMessage() . "\n";
}


$pagia_array[$pagia_counter] = new stdClass;
$pagia_array[$pagia_counter]->id = $new_inserted_pagio_id;
$pagia_array[$pagia_counter]->workorder_id = $batch_workorder_id;
$pagia_array[$pagia_counter]->release_id = $service_tag;
$pagia_array[$pagia_counter]->xristis_id_pagiou = $manager;
$pagia_array[$pagia_counter]->xristis_pagiou = JFactory::getUser($manager)->name;
$pagia_array[$pagia_counter]->manager = $manager;

$pagia_counter++;

endforeach;

$result = array("error" => $errors, "pagia_array" => $pagia_array);
echo new JResponseJson($result);


Locked

Return to “Joomla! 3.x Coding”