web-dev-qa-db-fra.com

Soumettre des données externes à la table MySQL RSForms

J'ai un formulaire sur un site Web autre que Joomla qui comporte les champs suivants:

  • Nom complet
  • Adresse e-mail
  • Travailler dans un pub (case à cocher)
  • Fournisseur (case à cocher)
  • Plus de 18 ans

J'ai le code suivant pour envoyer du formulaire externe à la base de données Joomla (Joomla utilise RSForms pour capturer ces données exactes):

     // read form
     if(strcasecmp($_GET['method'],'subscribe') == 0){

         $fullName = $_POST['fullName'];
         $emailAddress = $_POST['emailAddress'];
         $worksInPub = ($_POST['workInPub']==='true');
         $isSupplier = ($_POST['isSupplier']==='true');
         $isOver18 = ($_POST['isOver18']==='true');

         // Do something here with the data. If it fails, modify $response['code'] accordingly

         $response['code'] = 1;

         $response['status'] = $api_response_code[ $response['code'] ]['HTTP Response'];
         $response['data'] = $api_response_code[ $response['code'] ]['Message'];

     } 

Quel code dois-je écrire pour soumettre les variables ci-dessus à la table RSForms de la base de données?

Si j’utilise une instruction sql, elle ne contiendra pas le SubmissionId (car elle provient d’une autre table de base de données).

1
RustyJoomla

Tout ce que vous avez à faire est d'écrire une requête de base de données. Je suggérerais d'importer l'API Joomla et d'écrire une requête de style Joomla de la manière suivante:

$fullName     = $_POST['fullName'];
$emailAddress = $_POST['emailAddress'];
$worksInPub   = ($_POST['workInPub']==='true');
$isSupplier   = ($_POST['isSupplier']==='true');
$isOver18     = ($_POST['isOver18']==='true');

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

$columns = array('fullName', 'emailAddress', 'workInPub', 'isSupplier', 'isOver18');
$values = array($db->quote($fullName), $db->quote($emailAddress), $db->quote($workInPub), $db->quote($isSupplier), $db->quote($isOver18));

$query->insert($db->quoteName('#__rs_forms_table'))
      ->columns($db->quoteName($columns))
      ->values(implode(',', $values));

$db->setQuery($query);
$db->execute();

Comme je n’avais jamais utilisé RSForms auparavant, je ne sais pas comment les données de vos formulaires sont stockées. Il est donc possible que ce qui précède soit faux. Il peut également y avoir quelques ajustements à apporter au code, tels que le nom de la table de la base de données.

1
Lodder