J'ai un formulaire sur un site Web autre que Joomla qui comporte les champs suivants:
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).
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.