2017-06-10 5 views
-1

データベースに検証ルールを入れてカスタムhtmlフォームを保存したいと思います。PHPを使ってカスタムhtmlフォームをデータベースに保存する方法

私は、カスタムフィールドと選択、チェックボックス、ラジオ、テキストボックスなどのさまざまな要素を持つフォームがあるとします。これらの要素はすべてフォームとしてデータベースに保存されるため、このフォームを自分のサイトのどこにでも簡単に統合することができます。

+0

こんにちは、StackOverflowのへの歓迎。ヘルプページ、特に[ここではどのトピックについて聞かせていただけますか?](http://stackoverflow.com/help/on-topic)と[質問しないでください。」](http://stackoverflow.com/help/dont-ask)。さらに重要なことは、[Stack Overflow question checklist](http://meta.stackexchange.com/q/156810/204922)をお読みください。また、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)についても知りたいことがあります。 – natanelg97

答えて

0

colでhtmlコードを保存し、別のcolで検証オプションのjsonデータを保存できます。たとえば :

<input type="text" name="username" /> 
<input type="password" name="pass" /> 

と検証のため:

$validation = array(
    'username' => array(
    'regex' => '/\w{6,12}/', 
    'error' => 'Username must be 6 - 12 chars' 
), 
    'pass' => array(
    'func' => 'validate_password', 
    'error' => 'Week password' 
) 
); 

$validation_json_for_db = json_encode($validation); 

使用例:

// may be need to receive from db and json_decode parse 
$validation = array(
    'username' => array(
    'regex' => '/\w{6,12}/', 
    'error' => 'Username must be 6 - 12 chars' 
), 
    'pass' => array(
    'func' => 'validate_password', 
    'error' => 'Week password' 
) 
); 

$valid_errors = array(); 
foreach($validation as $key => $val){ 
    if(isset($_POST[$key])){ 
    $isValid = false; 
    if(isset($val['func'])){ 
     $isValid = call_user_func($val['func'], $_POST[$key]); 
    } elseif(isset($val['regex']){ 
     $isValid = preg_match($val['regex'], $_POST[$key]); 
    } 

    if(! $isValid){ 
     $valid_errors[$key] = $val['error']; 
    } 

    } 
} 
関連する問題