2011-05-16 22 views
6

は私がポストPHPのフォームや入力のセットを持っています同じ名前の変更のみ:HTML/PHPデフォルトの入力値

<input type="text" name="your_name" value="<?php echo get_option('your_name'); ?>" /> 

defaulを設定する方法値=が利用できないときのt値?

[編集]

オクラホマので、通常は私のような何かをしたい:

<input type="text" name="your_name" value="Mike" /> 

をしかし、この場合には、私は、入力データをつかみ、value="<?php echo get_option('your_name'); ?>"を使用して、それを表示するPHPスクリプトを持っています。だから私の入力に「Mike」と表示させるようにフォームを強制する方法はわかりません。

+4

私はどのような状況で 'value =' **が利用できないのか分かりません。あなたが*なぜそれが利用できないかもしれないかを明らかにすることはできますか? –

+0

@David Thomas、質問を更新しました。 – Wordpressor

+0

特殊文字をエスケープすることも忘れないでください! http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php – Tel

答えて

5

デフォルトが利用できない場合は、デフォルトが使用できない場合は、空の文字列(または他の何か)を返すように

<?php 
    $default = get_option('your_name'); 
    if($default == "") 
    { 
     $default = <whatever your default value is>; 
    } 
?> 
<input type="text" name="your_name" value="<?php echo $default; ?>" /> 
変更get_optionを最初get_optionのリターンをチェックする必要があり、かつ代替何か。

+0

あなたは私の小さなライブラリ[ValueResolver](https://github.com/LapaLabs/ValueResolver)を使ってより多くのことを行うことができます単純に –

0

switch文を実行して、デフォルトにすることができます。

-2

開始時にいくつかの変数をポスト変数で設定します。

<input type="text" name="your_name" value="<?php $var = get_option('your_name'); if ($var == '') $var = 'your_default'; echo $var; ?>" /> 
+3

そこには巨大なXSSの穴があります。 – Quentin

+0

そして、 'value'属性の中止されていないphpの行は、ばかばかしくはありません。 –

+0

@David Thomas、終了していない行はどういう意味ですか? –

0

よう

は、もしかしたらこのような何か、あなたのget_option -function周りの条件を追加、デフォルトで

function get_option($name) { 
    $defaults = array(
     'fist_name' => 'Mike', 
     'fist_name' => 'Wordpressor', 
     'my_name' => 'Dunno' 
    ); 
    // get the value from the $defaults array 
    $val = $defaults[$name]; 

    // but if the same value has already been posted - replace the default one 
    if (isset($_POST[$name])) { 
     $val = $_POST[$name]; 
    } 
    return $val; 
} 
+1

すべてのロジックをhtmlの中に書くのはベストプラクティスではありません:) – Teneff

+1

非常に真実ですが、私はそこに着く手段を実証していました。 PHPコードとHTMLからの構造化された分離が仮定されなければなりません。 – Bjoern

2

あなたのようなものであることをget_option()機能を変更することができます。value以来

$name_val = ""; 
if(isset($_POST["your_name"]) 
{ 
    $name_val = $_POST["your_name"]; 
} 

<input type="text" name="your_name" value="<?= $name_val?>"> 
0

私は同意する私はそれを打ち破るだろう。

<form method="post" action=""> 
<input id="names"><? echo $defaultText; ?> </input> 
</form> 

その後、私は上の別々のファイルを持っているでしょう:私はドキュメントフォームは、それは次のようになりますされている

<? 
$defaultText = include 'default_text.php'; 
?> 

の先頭に次のだろうindex.phpの中

"default_text.php"と呼ばれるルートレベル。「

<? 
$Name = <<<EOD Name EOD; 
return $Name; 
?> 
0
<input type="text" name="your_name" value="<?php echo empty(get_option('your_name')) ? "TheDefaultValue" : get_option('your_name'); ?>" /> 
0

次の例のように、この場合には、私の小さな図書館ValueResolverを使用することができます。

$default = ValueResolver::resolve(get_option('your_name'), '<whatever your default value is>'); 

と能力にもあり、名前空間use LapaLabs\ValueResolver\Resolver\ValueResolver;

を使用することを忘れないでくださいをタイプキャスト。たとえば、変数の値がintegerの場合は、次のようにします。

$id = ValueResolver::toInteger('6 apples', 1); // returns 6 
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value) 

は、これがデフォルトに設定し、私は$ _POSTが読み込まれたときに値が他の$ _POST値から移入され、私は似ていると信じて私の問題で、この問題を解決する方法であるより多くの例

0

ためdocsをチェックマイク

value="<?php if (isset($_POST['name'])) echo $_POST['name']; else echo "Mike"?>" > 

これは、誰かが単に三項演算子を使用

0

をonedayお役に立てば幸いです。それはかなり簡単に試してください

$default = 'Mike'; 

$your_name = get_option('your_name'); 

$condition = !empty($your_name) ? $your_name : $default; 

<input type="text" name="your_name" value="<?php echo $condition; ?>" /> 
関連する問題