2010-07-20 3 views
1

Я отборное, что выглядит так, что написано в в HTML и не визуализируется с помощью любого PHP,PHP + форма выбора параметров

<select name="position">           
<option value="left">Left</option> 
    <option value="right">Right</option> 
    <option value="centre">Centre</option> 
    </select> 

значение отправляется в базу данных, а позже получает возвращаемые база данных как переменная в форме $v['position'], используя эту и мою первоначальную форму, как я могу сделать параметр, который соответствует varibale по умолчанию?

ответ

0

попробуйте это

<select name="position">           
    <option value="left" <?php echo $v['position']=='left'?'selected="selected"':'' ?> >Left</option> 
    <option value="right" <?php echo $v['position']=='right'?'selected="selected"':'' ?>>Right</option> 
    <option value="centre" <?php echo $v['position']=='centre'?'selected="selected"'?:'' >>Centre</option> 
</select> 
2

Вы не указали, когда форма отображается снова. Если сразу после пользователь отправите форму, вам нужно вставить этот фрагмент кода для каждой опции:

<option value="left"<?php echo $v['position'] == 'left' ? ' selected' : ''; ?>>Left</option> 
<option value="right"<?php echo $v['position'] == 'right' ? ' selected' : ''; ?>>Right</option> 
<option value="centre"<?php echo $v['position'] == 'centre' ? ' selected' : ''; ?>>Centre</option> 

ИЛИ:

Вы должны итерацию через переменные с помощью PHP :(

$html = '<select name="position">'; 

$opts = array('left', 'right', 'centre'); 
foreach($opts as $option) 
{ 
    $html .= '<option value="' . $option . '"'; 
    $html .= $option == $v['position'] . ' selected' : ''; 
    $html .= '>' . ucfirst($option) . '</option>'; 
} 
$html .= '</select>'; 

print $html; 
0
<select name="position">            
    <option value="left"<?php echo ($v['position'] == 'left') ? ' selected="selected" : ''; ?>>Left</option> 
    <option value="right"<?php echo ($v['position'] == 'right') ? ' selected="selected" : ''; ?>>Right</option> 
    <option value="centre"<?php echo ($v['position'] == 'centre') ? ' selected="selected" : ''; ?>>Centre</option> 
</select> 
1

Вы можете создать параметры в цикле и проверить, соответствует ли текущий элемент значению в $v['position'] и соответственно установить атрибут selected.

<?php 
$options = array('left'=>'Left', 'right'=>'Right', 'centre'=>'Centre'); 
?> 

<select name="position">  
<?php foreach($options as $value=>$text):?>          
    <option value="<?php echo $value ?>" 
      <?php echo ($v['position'] == $value) ? 'selected="selected"' : '' ?> > 
      <?php echo $text ?> 
    </option> 
<?php endforeach; ?> 
</select> 
1

Вы можете сделать это с помощью DOM, не касаясь своего HTML. Если это ваш HTML:

$template = <<< TPL 
<select name="position"> 
    <option value="left">Left</option> 
    <option value="right">Right</option> 
    <option value="centre">Centre</option> 
</select> 
TPL; 

И это значение, которое было выбрано:

$value = 'right'; 

Вы можете сделать

$dom = new DOMDocument; 
$dom->loadXml($template); 
$xPath = new DOMXPath($dom); 
$node = $xPath->query(sprintf('//option[@value = "%s"]', $value)); 
if($node->item(0)) { 
    $node->item(0)->setAttribute('selected', 'selected'); 
} 
echo $dom->saveXML($dom->documentElement); 

И выведет:

<select name="position"> 
    <option value="left">Left</option> 
    <option value="right" selected="selected">Right</option> 
    <option value="centre">Centre</option> 
</select> 
Смежные вопросы