PHP + форма выбора опций - PullRequest
1 голос
/ 20 июля 2010

У меня есть выборка, которая выглядит следующим образом, она написана на HTML и не обрабатывается с помощью php,

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

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

Ответы [ 5 ]

2 голосов
/ 20 июля 2010

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

<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;
1 голос
/ 20 июля 2010

Вы можете сделать это с помощью 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>
1 голос
/ 20 июля 2010

Вы можете создать опции в цикле и проверить, равен ли текущий элемент значению в $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>
0 голосов
/ 20 июля 2010

попробуйте

<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>
0 голосов
/ 20 июля 2010
<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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...