2011-03-04 32 views
6

如果用户没有表单验证,然后使他们更容易,我们可以这样做:因此,在这种情况下如何“记住”在PHP中选择的表单值?

if(isset($_POST['submit'])) { 
    $email = $_POST['email']; 
    //.... 
} 

<input type="text" name="phone" value="<?php echo $phone; ?>" /> 
<input type="text" name="email" value="<?php echo $email; ?>" /> 
... 

,如果用户因为输入了一个电子邮件,但没有一个电话号码验证失败,那么当页面在提交时刷新并警告他们丢失的电话时,电子邮件(他们填写的)将已经在它的位置并且不需要用户重新输入。

但是我怎样才能“记住”用户选择的值,用于选择,无线电和复选框输入?

+0

选项通过普通的HTML功能,这些字段类型相似:“选择”,“检查”等。你不认识他们吗? – 2011-03-04 04:41:54

+0

此问题已被询问:http://stackoverflow.com/questions/2246227/keep-values-selected-after-form-submission – Infotekka 2011-03-11 15:57:56

回答

1

它的工作原理是相同的,但它会需要一些更多的工作:

<select name="whatever"> 
    <option value="Apple">Apple</option> 
    <option value="Banana" selected="selected">Banana</option> 
    <option value="Mango">Mango</option> 
</select> 
Banana is selected here. 

<input type="checkbox" name="fruits[]" value="banana" /> Banana 
<input type="checkbox" name="fruits[]" value="mango" checked="checked" /> Mango 
<input type="checkbox" name="fruits[]" value="apple" checked="checked" /> Apple 
Mango and Apple are checked here 

所以基本上你添加selected="selected"checked="checked"到相应的字段,当您生成表单。

另一个选择是使用类似jQuery的东西来做这些选择,一旦页面加载并准备好DOM操作。通过这种方式,您可以轻松地将所有更改放在一个地方,而不会忽略代码。当然,现在有一个缺点,你需要加载jQuery,你的用户需要有一个JS。

1

下面是一些示例代码。

<?php 
$options = array('option1' => 'Option 1', 'option2' => 'Option 2', 'option3' => 'Option 3'); 
$myselect = 'option2'; 
?> 
<select name="myselect"> 
<?php 
foreach($options as $key => $value) { 
    echo sprintf('<option value="%s" %s>%s</option>', $key, $key == $myselect ? 'selected="selected"' : '', $value); 
} 
?> 
</select> 

如果你经常做这样的事情,它会更加整齐,或者你甚至可以创建一个Form类助手。

这是一个基本选择功能:

<?php 
function form_select($name, $options, $selected) { 
    $html = sprintf('<select name="%s">', $name); 
    foreach($options as $key => $value) { 
     $html .= sprintf('<option value="%s"', $key); 
     if ($selected == $key) 
      $html .= ' selected="selected"'; 
     $html .= sprintf('>%s</option>', $value); 
    } 
    $html .= '</select>'; 
    return $html; 
} 

然后你就可以通过打电话只是简单地创建任何选择:

echo form_select('myselect', $options, $selected); 

可以easiliy使函数处理类似的风格,class和id其它属性。

0
<input type="radio" name="xxxx" <?php if ($xxx == 'VALUE') echo "checked=\"checked\""; ?>" /> 

与在选择