Willkommen, Gast
Angemeldet bleiben:

THEMA:

Updating built-in Joomla user registration table 3 Monate 2 Wochen her #242701

  • Autor
  • rambopierce
  • Offline
  • Junior Breezer
  • Junior Breezer
  • Beiträge: 39
  • Dank erhalten: 0
Markus,

The End Submit piece you provided worked perfectly! Thank you.

I think I saw this in another post as well, but if you turn off logging so that it doesn't create the record in the _facileforms_subrecords table, unfortunately, it also breaks the End Submit piece. So, you can't update only where you want to, i.e. update the Joomla registration table, but don't update the _facileforms_subrecords table. This appears to be an unnecessary limitation.

thanks,
Richard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Updating built-in Joomla user registration table 3 Monate 2 Wochen her #242702

  • TheMuffinMans Avatar
  • TheMuffinMan
  • Offline
  • Developer
  • Developer
  • Beiträge: 10063
  • Karma: 167
  • Dank erhalten: 801
If you want to keep things clean, you can also delete all subrecords + the record itsel in the end submit piece.

The variable "$this->record_id" will be available there and populated.

Regards,
Markus

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Updating built-in Joomla user registration table 3 Monate 2 Wochen her #242753

  • Autor
  • rambopierce
  • Offline
  • Junior Breezer
  • Junior Breezer
  • Beiträge: 39
  • Dank erhalten: 0
Markus,

Thanks so much for your assistance. Giving back. I decided that I wanted to update the row if it exists and insert it if it doesn't. Also, I was going to need to do this for multiple elements so it deserved a function as it turned out to be nontrivial. I developed two pieces, one to hold a php function to update a field and the other to be used as the after submit piece.

After Submit Piece:

$this->execPieceByName('ff_InitLib');
$this->execPieceByName('rp_UpdateField');

$uid=JFactory::getUser()->get('id');
if ($uid != 0) // If the user is logged in
{
rpUpdateField('#__user_profiles', $uid, 'profile.address1', ff_getSubmit("Address1"),1 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.address2', ff_getSubmit("Address2"),2 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.city', ff_getSubmit("City"),3 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.region', ff_getSubmit("State"),4 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.country', ff_getSubmit("Country"),5 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.postal_code', ff_getSubmit("PostalZipcode"),6 ) ;
rpUpdateField('#__user_profiles', $uid, 'profile.phone', ff_getSubmit("PhoneNumber"),7 ) ;
}

rp_UpdateField Piece:
function rpUpdateField($table, $uid, $keyName, $keyValue, $order) {

$db = JFactory::getDbo();

if ($keyValue == null)
{
$keyValue = "";
}

// First check to see if the user has this profile item
$query = $db->getQuery(true);
$db->setQuery("SELECT * FROM ".$db->quoteName($table)." WHERE profile_key =".$db->quote($keyName)." AND user_id = " . $db->quote($uid ));
$result = $db->loadObjectList();

// If the user has the profile item then update it, otherwise create it
if ($result) // update
{
$query = $db->getQuery(true);
$db->setQuery("UPDATE ".$db->quoteName($table)." Set profile_value = ". $db->quote(json_encode($keyValue)) . " WHERE profile_key =".$db->quote($keyName)." AND user_id = " . $db->quote( $uid ));
$result = $db->execute();
}
else // insert
{
// Create a new query object.
$query = $db->getQuery(true);

// Insert columns.
$columns = array('user_id', 'profile_key', 'profile_value', 'ordering');

// Insert values.
$values = array($db->quote($uid), $db->quote($keyName), $db->quote(json_encode($keyValue)), $db->quote($order));

// Prepare the insert query.
$query
->insert($db->quoteName($table))
->columns($db->quoteName($columns))
->values(implode(',', $values));

// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$db->execute();
}
}

Hope this helps someone.

Richard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
  • 2
Moderatoren: ForumSupport
Ladezeit der Seite: 0.053 Sekunden

Angebot

Sommer Special! Alle Mitgliedschaften zum Sonderpreis!

Prio Support, alle Extensions und alle Templates in einem Paket.

Hier geht's zur Bestellung

Crosstec hilft sparen!

Falls Sie neu bei Crosstec sind aber bereits einen Formulargenerator bei einem anderen Hersteller gekauft haben, dann bekommen sie von uns einen Rabatt von 25% auf unsere 1-Jahres und Pro-Mitgliedschaften

Wie Sie an den Rabatt kommen?

Schreiben Sie uns einfach eine kurze Email mit beigelegten Kaufbeleg (z.B. PayPal Quittung) an sales@crosstec.org.

Wir unterstützen die Joomla Community

Crosstec unterstützt weltweit alle offiziellen Joomla! User Groups und Organisatoren von Joomla! Days die bei Joomla.org registriert sind.

Falls das auf dich zutrifft und du eines unserer Produkte brauchst, schreib uns eine kurze Email an info@crosstec.org und du bekommst eine Flatrate-Mitgliedschaft geschenkt!