0

電話番号を入力できるフォームがあります。プラスボタンをクリックして、さらにフィールドを追加できます。これらの値をすべてデータベースに保存する必要がありますが、それを実行するための列は1つだけです。

電話番号には、[モバイル]、[自宅]、[職場]などを選択できるタイプのドロップダウンもあります。したがって、各フィールドのタイプと番号をペアにしてから、すべてのペアを組み合わせる方法が必要です。その後、情報が必要になったときに、すべてを引き出してすべての値を配列に配置できるようにします。暗号化と復号化のようなものです。

私は次のようなことを考えていました:

type:number;type:number;type:number;type:number;type:number;type:number

explodeとimplodeを使用して暗号化と復号化を行うことができます。

しかし、これはどれくらい良いですか?また、電話番号を検索する検索機能もあります。私のやり方は、検索機能が簡単に調べることはできないと思います。

4

3 に答える 3

4

それは悪い考えだと思います。自宅、職場、モバイルなど、限られた種類の番号を計画している場合は、番号ごとに列を追加することをお勧めします。それ以外の場合は、別のデータベーステーブル「phone_numbers」を作成し、これを顧客IDなどに関連付けて、必要な数の番号を追加します。検索は、より速く、より簡単に実装できます。

それでも単一のフィールドに保存する必要がある場合は、提案されているようにphp implode()とexplode()を使用してください。私がこれを行う場合、パイプ記号「|」など、顧客がめったに思いつかない文字を使用します。区切り文字として。もちろん、str_replaceなどの手法を使用して、ユーザーが誤って入力で使用した場合は除外する必要がありますが、文字がほとんど使用されていない場合に最適です。

于 2012-12-08T01:37:24.810 に答える
2

検索は間違いなく機能しません。特に、オートコンプリートなどの検索を使用する場合は、特定の数字で始まるすべての数字をすばやく選択できるようにする必要があります。

2つのオプションがあります。列を追加するか、人のタイプ、番号、IDのみを含む電話番号用の別のテーブルを追加します。

于 2012-12-08T01:38:22.517 に答える
0

PHPコード:

$delimiter = "|";
if (isset($_POST['editfill_mobile'])) {
        $mobileArray = $_POST['editfill_mobile'];
        $replymobile = "";
        $i = 0;
        foreach ($mobileArray as $key => $value) {
            $i++;
            $replymobile .= $value;
            $replymobile .= $delimiter;
        }
    }

この$replymobileをデータベース列にそのまま保存します。

最終的に、データベースにクエリを実行するときに、上記の文字列を分割してデータを解析する必要がある場合があります...。

于 2012-12-11T07:58:45.440 に答える