web-dev-qa-db-fra.com

RSForm vérifie si l'email est dans la base de données avant de soumettre le formulaire

J'ai un RSForm qui a les champs suivants:

  • Nom complet
  • Adresse e-mail

Je veux seulement capturer de nouvelles données, comment puis-je utiliser le $_POST script pour vérifier si l'adresse e-mail soumise est déjà dans la base de données?

Selon la documentation de RSForms, je peux le faire en utilisant

$_POST['form']['email_address']

mais je ne suis pas vraiment sûr du code à utiliser.

1
RustyJoomla

Vous devez entrer les éléments suivants dans la deuxième zone de texte dans l'onglet Propriétés du formulaire sous "Scripts PHP":

$formId = 0; // CHANGE THIS VALUE to your form ID

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

$query
    ->select("*")
    ->from("__rsform_submission_values")
    ->where("FormId = " . $db->q($formId))
    ->where("FieldValue = " . $db->q($_POST['form']['email_address'] ));

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

$num_rows = $db->getNumRows();

// We found this email in the submissions
if ($num_rows > 0) {
    $invalid[] = RSresolveComponentName('email_address', $formId);
    echo RSshowForm($formId, $_POST['form'], $invalid);
}

Vous pouvez également créer une nouvelle règle de validation en ajoutant cette fonction à ce fichier: components/com_rsform/controller/validation.php, que vous pouvez sélectionner en modifiant le champ adresse_mail et en sélectionnant "unique" comme règle de validation.

function unique($param, $extra=null)
{        
    $db = JFactory::getDBO();
    $param = $db->getEscaped($param);
    $db->setQuery("SELECT * FROM #__rsform_submission_values WHERE `FieldName`='email_address' AND `FieldValue`='".$param."'");
    $db->query();
    $invalid = $db->getNumRows();

    if ($invalid)
        return false;

    return true;
}

Il y a un peu plus de documentation sur les validations personnalisées sur cette page. https://www.rsjoomla.com/support/documentation/rsform-pro/customizing-rsform-pro/custom-validation-rules.html

Ce fil pourrait également s'avérer utile: https://www.rsjoomla.com/forum/37-rsform-pro/9162-setup-form-so-each-user-can-only-submit-once-. html

3
Helge Sverre