2011-05-16 123 views
6

我有一個職位PHP形式和一組輸入:HTML/PHP - 默認輸入值

  1. 您的姓名
  2. 你姓
  3. 我的名字

每個輸入長相相同,只有名稱變更:

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

如何設置預設當值=不可用時的t值?

[編輯]

確定,所以,通常我會做這樣的事情:

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

但在這種情況下,我有抓住輸入數據,並使用value="<?php echo get_option('your_name'); ?>"顯示它的PHP腳本。所以我不知道如何強制我的表單在我的輸入中顯示「Mike」。

+4

我不明白在什麼情況下'價值='**不會**可用。你能澄清*爲什麼*它可能不可用? – 2011-05-16 12:49:30

+0

@David Thomas,更新了這個問題。 – Wordpressor 2011-05-16 12:52:50

+0

還請記住要逃避特殊字符! http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php – Tel 2013-03-01 02:47:36

回答

5

您需要檢查get_option返回第一和替代的東西,如果默認是不提供

<?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返回一個空字符串(或別的東西),如果默認是不可用的。

+0

您可以使用我的小型庫[ValueResolver](https://github.com/LapaLabs/ValueResolver)來做更多簡單地 – 2015-07-09 10:50:38

0

你可以做一個switch語句,並且默認爲任何你想要的。

-2

設置一些變量在開始變量後。

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

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

那裏有一個巨大的XSS洞。 – Quentin 2011-05-16 12:52:35

+0

而且,不要挑剔地在'value'屬性中使用未終止的php行。 – 2011-05-16 12:55:57

+0

@大衛托馬斯,你是什麼意思的未終止的行? – 2011-05-16 12:59:25

0

由於value是默認的,只需添加一個條件在你get_option功能全,也許是這樣的:

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

這不是編寫HTML中所有邏輯的最佳實踐:) – Teneff 2011-05-16 13:01:39

+1

非常真實,但我只是展示了實現這一目標的方法。應該假設從PHP代碼和HTML中構建分離。 – Bjoern 2011-05-16 13:04:19

2

你可以改變get_option()功能是這樣的

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; 
} 
0

我同意智慧特內夫,但我會打破它。

在index.php我會在文檔的頂部以下

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

在您的形式將是:

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

然後我會在有一個單獨的文件根級別稱爲「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) 

檢查docs更多的例子

0

這是我如何解決了我的問題,我相信這是類似的,這個問題在$ _ POST讀值從否則$ _ POST值填充設置的默認邁克

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

希望這可以幫助別人。一天

0

只需使用一個三元運算符。它很容易試試這個

$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; ?>" />