次のフィールドを持つRSFormがあります。
新しいデータのみを取得したいのですが、$_POST
送信されたメールアドレスがすでにデータベースにあるかどうかを確認するスクリプト?
RSFormsのドキュメントによると、私はこれを使用してこれを行うことができます
$_POST['form']['email_address']
しかし、どのコードを使用するのか本当にわかりません。
「PHP Scripts」の下のフォームのプロパティタブにある2番目のテキストエリアに以下を入力する必要があります。
$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);
}
このファイルにこの関数を追加して、新しい検証ルールを作成することもできます。components/ com_rsform/controller /validation.php。email_addressフィールドを編集し、検証ルールとして「一意」を選択することで選択できます。
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;
}
このページには、カスタム検証に関するもう少しドキュメントがあります。 https://www.rsjoomla.com/support/documentation/rsform-pro/customizing-rsform-pro/custom-validation-rules.html
このスレッドも役立つかもしれません: https://www.rsjoomla.com/forum/37-rsform-pro/9162-setup-form-so-each-user-can-only-submit-once-。 html