0

現在、contact0 から contact101 という名前のテキスト入力ボックスが 100 個あります。Post データを取得して、各文字列に名前を付けようとしています。$contact0 = $_POST['contact0'];そこまでの意味$contact101 = $_POST['contact101'];は、ループなどでそれらを設定するより簡単な方法でなければなりません。全体的な最終結果は、テキストボックスに入力されたデータが送信時にテキストボックスの値になることだけです。任意の提案は、私が望む結果に対してこれを間違っている可能性があるのに役立ちます。

for ($i = 0; ;$i++){
if($i < 101){
$contact.$i = $_POST['contact'].$i;
echo $contact.$i;
}
else{
break;
}
}
4

2 に答える 2

2
for ($i = 0; $i <= 101; $i++){
     ${"contact".$i}  = $_POST['contact'.$i];
     echo ${"contact".$i};
}
于 2013-07-20T09:28:14.443 に答える
0

HTML フォームを修正することを検討してください。100 個の新しい変数を作成する代わりに、すべての連絡先を配列に割り当ててから、配列のインデックスでそれらを参照できます。

HTML

<input type="text" name="contacts[]" value="Contact 1 name"/>
<input type="text" name="contacts[]" value="Contact 2 name"/>
// etc...

PHP

$contacts = $_POST['contacts'];
var_dump($contacts);
// prints array(0 => 'Contact 1 Name', 1 => 'Contact 2 Name'...

配列になっているので、たとえば連絡先を参照して、$contacts[34]それが有効なエントリになることを知ることができます。

編集

実際の例:

<?php
    if (isset($_POST['contacts'])) {
        $contacts = $_POST['contacts'];
        echo "<p>The contacts are below:</p>";
        print_r($contacts);
    } else {
        echo "<p>Please enter the contacts</p>";
    }
?>

<form method="post" action="">
    <?php for($x = 0; $x < 100; $x++): ?>
    <input type="text" name="contacts[]" value="<?php echo (isset($contacts[$x])) ? $contacts[0] : ''; ?>"/>
    <?php endfor; ?>
    <input type="submit" name="submit" value="submit"/>
</form>

編集 2

フォームをループにしました。つまり、すべての連絡先入力が作成されます。これに加えて、すでにフォームを投稿している場合、各フィールドには正しい連絡先の値が含まれています。

echo isset($contacts[$x])) ? $contacts[$x] : '';構文がわからない場合ternary operatorは、1 行のif/elseステートメントです。

ここでもテストできます: http://phpfiddle.org/api/run/ugb-cta

于 2013-07-20T09:37:23.827 に答える