2017-03-04 3 views
2

フォームを持つページがあり、そこに投稿された値を保持したい。私は本当に、私はラジオフィールドを設定することになっていますどのように無線フォーム値の設定を検出する

<?php 
    if (isset($_POST['submit'])) { 
     $name = $_POST['name']; 
     $colour = $_POST['colour']; 
    } 
?> 
    <html> 
     <body> 
     <form action="/" method="post"> 
     <input type="text" name="name" value="<?php if(isset($_POST['name'])) { echo htmlentities ($_POST['name']); }?>"> 
      <input name="colour" type="radio" value="0">Red<br> 
    <input name="colour" type="radio" value="1">Blue<br> 
    <input name="colour" type="radio" value="2">Green<br> 
     <input type="submit" name="submit" value="Submit"> 
     </form> 
    ... 

:私は、テキスト入力でどのように行うかは働いてきたが、私はラジオボタンでそれを行う方法を働いたhavne'tそれぞれのラジオのオプションにイネットを持たなければなりませんか?

+0

あなたの形式でif文の量の心配...あなたのフォームが大きくなるために起こっている場合、あなたはあなたの人生を容易にするためにいくつかの部分を自動化について考えたいかもしれないようです。例えば。フォームの入力名と値を配列に格納し、ループスルーして名前を変数として、存在する値または空の文字列で設定できます。変数が設定されていないという通知エラーは発生しません。あなたはこの値= "<?php echo $ name;?>"を代わりに使うことができます – Yolo

答えて

3

簡単な答え:はい。

このようにすると、各<input>タグでラジオボタンを "checked"に設定する必要があります。これは値が一致するかどうかをテストします。

$colour = isset($_POST['colour']) ? $_POST['colour'] : -1; 

<input name="colour" type="radio" value="0" <?php if ($colour == 0) echo "checked" ?> >Red<br> 
<input name="colour" type="radio" value="1" <?php if ($colour == 1) echo "checked" ?> >Green<br> 
<input name="colour" type="radio" value="2" <?php if ($colour == 2) echo "checked" ?> >Blue<br> 
+0

ありがとうございます。私が間違っていたかどうかは分かりませんが、値を保持していないようですが、エラーもありませんか?これは私が試したものですhttps://gist.github.com/hiven/2c29ebd6ee67915817c02e6caa498ef8 – Jimmy

+1

私の間違い: 'selected'の代わりに' checked'を使います。私は答えを更新します – Psi

1

すべての入力をチェックインしています。

<?php 
    if (isset($_POST['submit'])) { 
     $name = $_POST['name']; 
     $colour = $_POST['colour']; 
    } 
?> 
    <html> 
     <body> 



<form action="/" method="post"> 
<input type="text" name="name" value="<?php if(isset($_POST['name'])) { echo htmlentities ($_POST['name']); }?>"> 
<input name="colour" type="radio" value="0" <?php if(isset($_POST['colour']) && $_POST['colour'] == 0) echo "checked"; ?>>Red<br> 
<input name="colour" type="radio" value="1" <?php if(isset($_POST['colour']) && $_POST['colour'] == 1) echo "checked"; ?>>Blue<br> 
<input name="colour" type="radio" value="2" <?php if(isset($_POST['colour']) && $_POST['colour'] == 2) echo "checked"; ?>>Green<br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

しかし、あなたは、配列の色を作成する場合は、forを作成し、ここでは、このfor

+0

それは試してみるとうまくいかないようです、 '' '[04-Mar-2017 14:34:15 UTC] PHP致命的なエラー:式の結果にisset()を使うことはできません(代わりに "null!== expression"を使うことができます)/home/hiven/public_html/index.php on line 11''' – Jimmy

+1

私はコードを変更します。どうぞご覧ください –

1

に入力を設定することができますが、フォームで物事のチェックを自動化する多くの方法の一つです。これは、宣言する必要のあるすべてのPHPタグを防止し、フォームを管理しやすくするのに役立ちます。

$formArray = [ 
    'name', 
    'color' 
]; 

$optionCoices = [ 
    'color'=>[ 
     '0'=>'Red', 
     '1'=>'Green', 
     '2'=>'Blue', 
    ] 
]; 
$postArray = array_fill_keys($formArray,''); // prevent notices since all keys are set to empty string 

if(isset($_POST['submit'])) { 

    // check if $_POST keys are set or set empty string 
    foreach($formArray as $key) { 

     $postArray[$key] = isset($_POST[$key]) ? $_POST[$key] : ''; 

    } 

} 

$form = ''; 
$form .= '<form method="post"> 
    <input type="text" name="name" value="'.$postArray['name'].'">'; 
// loop through option set and check if value is set in $postArray['color'] 
foreach($optionCoices['color'] as $choice=>$color) { 
    $form .= '<input name="color" type="radio" value="'.$choice.'" '.($postArray['color'] === (string)$choice ? ' checked="checked" ' : '').'>'.$color.'<br>'; 
} 
$form .= '<input type="submit" name="submit" value="Submit"> 
</form>'; 

echo $form; 
関連する問題