0

サーバー上のファイルの値を変更する PHP フォームに取り組んできました。フォームは値を正しく変更しますが<option value="round" <?php if($shape == 'round'){?>selected="selected"<?php }?>>Round</option>、ファイルに設定されている現在の値を常に表示するフォームの一部が必要ですが、現在はそうではありません。

#file contents (the lines the values are on changed on a regular basis)
size=large
color-name=red
shape=round
height=short
weight=heavy

<?php

$file = "/home/user/color.props";
$contents = file($file, FILE_SKIP_EMPTY_LINES);

foreach($contents as $line) {
    list($option, $value) = explode('=', $line);
    if ($option == 'color-name') {
        $color_name = $value;
    } elseif ($option == 'shape') {
        $shape = $value;
    }
}

    if(isset($_REQUEST['color_choice'])){
        exec('sed -i '.escapeshellarg('s/color-name=.*/color-name='.$_REQUEST['color_choice'].'/g')." /home/user/color.props");
        echo 'Color setting has been updated';
    }

?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <select name="color_choice">;
        <option value="round" <?php if($shape == 'round'){?>selected="selected"<?php }?>>Round</option>;
        <option value="square" <?php if($shape == 'square'){?>selected="selected"<?php }?>>Square</option>;
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>
4

1 に答える 1

0

あなたが何を達成しようとしているのか正確にはまだわかりません。あなたの現在のコードは、ファイルから読み込まれている最後'color-name'のオブジェクトとオブジェクトのみを保存しています。'shape'次に、selectedこの変更を行うことでオプションを構成できます。

<option value="red" <?php if($color_name == 'red'){?>selected="selected"<?php }?>>Red</option>;
<option value="blue" <?php if($color_name == 'blue'){?>selected="selected"<?php }?>>Blue</option>;
<option value="green" <?php if($color_name == 'green'){?>selected="selected"<?php }?>>Green</option>;
<option value="purple" <?php if($color_name == 'purple'){?>selected="selected"<?php }?>>Purple</option>;

注:ファイルを読んでいる方法では、変数の最後に改行/改行が追加されます...たとえば、$color_name私の側では、文字列の最後に2つの余分な16進数値が含まれています:x0dおよびx0a

編集#2:フォームを次のようにしてみてください:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <select id="color_choice">
        <option id="round">Round</option>
        <option id="square">Square</option>
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>
<script>
    var option = document.getElementById("color_choice");
    option.options['<?php echo $shape ?>'].selected = true;
</script>

私が行った変更は次のとおりです:
1) php の代わりに javascript を使用して選択を変更する
2) oridの代わりに属性を使用する 3) フォームの最後にタグを追加しました (以前の場合は機能しない可能性があります)valuename
<script>

ファイルから取得する値のタイプに応じて、フォームとスクリプトを変更する必要があります...しかし、それを処理する方法を理解できるはずです。

于 2013-08-18T19:19:45.820 に答える