2

ユーザーが値を入力しない場合にのみ使用される非表示の値を追加できるようにしたい単純なフォームがあります。値は単純なテキスト入力フィールド用であり、HTML、PHP、JavaScript、JQuery、またはそれらの任意の組み合わせを使用できます。値属性は、現在そのフォームの DB に値を含むように既に設定されていることをさらに説明しましょう。ただし、DB にその特定のフィールドの現在の値がなく、ユーザーが自分で値を入力しない場合は、POST でデフォルト値を渡したいと思います。

私はいくつかの調査を行い、カスタム属性などの例を見つけました...しかし、これらは私にはうまくいきません。フォーム内のすべてのフィールドを単一の配列として新しい関数に渡す配列ビルダーを使用しているためです。どんな助けでも大歓迎です!

以下に示すコードは、フォームの作成です... ご覧のとおり、トーナメント内に多数のラウンドが存在するため、2 つの別個のフィールドが重複して作成されます。また、2 ラウンド フォームの出力 HTML コードも提供しました。問題のフィールドに DB の NULL 値があり、ユーザーが自分の値を入力しない場合は、"false" の値を渡したいと思います。

                $rchkpos = array();
                $rchkscore = array();

                for ($i=0; $i<=$tournament['numRounds']; $i++)
                {
                    $rchkthis = array("$i" => "round".$i."pos");
                    $rchkthis2 = array("$i" => "round".$i."score");

                    $rchkpos = array_merge($rchkpos, $rchkthis);
                    $rchkscore = array_merge($rchkscore, $rchkthis2);

                    if ($i > 0)
                    {
                        $roundpos = $rchkpos[$i];
                        $roundscore = $rchkscore[$i];

                        if (!is_null($stats2[$roundpos])){
                            $roundposvar = "$stats2[$roundpos]";
                        }else{ 
                            $roundposvar = false;
                        }

                        if (!is_null($stats2[$roundscore])){ 
                            $roundscorevar = "$stats2[$roundscore]";
                        }else{ 
                            $roundscorevar = false;
                        }

                        $team_stats.="
                        <tr valign='top'>
                            <td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_POSITION . "</td>     
                            <td class='alt1' align='center'>            
                                <input type='text' name='round[".$rchkpos[$i]."]' value='$stats2[$roundpos]' size='40' maxlength='5' />
                            </td>
                        </tr>

                        <tr valign='top'>
                            <td align='center'>" . LANG_MAN_ROUND . " $i " . LANG_MAN_SCORE . "</td>
                            <td class='alt1' align='center'>
                                <input type='text' name='round[".$rchkscore[$i]."]' value='$stats2[$roundscore]' size='40' maxlength='5' />
                            </td>
                        </tr>";
                    }
                }

出力 HTML の例:

                 <tbody><tr valign="top">
                            <td align="center">Round 1 Position</td>        
                            <td align="center" class="alt1">            
                                <input type="text" maxlength="5" size="40" value="2" name="round[round1pos]">
                            </td>
                        </tr>

                        <tr valign="top">
                            <td align="center">Round 1 Score</td>
                            <td align="center" class="alt1">
                                <input type="text" maxlength="5" size="40" value="false" name="round[round1score]">
                            </td>
                        </tr>
                        <tr valign="top">
                            <td align="center">Round 2 Position</td>        
                            <td align="center" class="alt1">            
                                <input type="text" maxlength="5" size="40" value="false" name="round[round2pos]">
                            </td>
                        </tr>

                        <tr valign="top">
                            <td align="center">Round 2 Score</td>
                            <td align="center" class="alt1">
                                <input type="text" maxlength="5" size="40" value="false" name="round[round2score]">
                            </td>
                        </tr>
                </tbody>
4

2 に答える 2

4

あなたはおそらく次のようにすることができます:

HTML

<input type="text" name="name" />
<input type="hidden" name="name_default" value="name_default" />

PHP (フォーム送信後)

if(!isset($_POST['name'])) {

    $_POST['name'] = $_POST['name_default'];

}

または、次のような配列を作成します。

$array_check = array('name', 'telephone', 'gender');

foreach($array_check AS $key => $value) {

    if(!isset($_POST[$value])) {

        $_POST[$value] = $_POST[$value."_default"];

    }    

}

ユーザーは非表示の入力の値を編集できることに注意してください (Firebug などの開発者ツールを使用)。常に入力を確認してください。

于 2013-07-15T19:41:31.490 に答える