Gerar um <select> com uma opção selecionada

2,720 views
Skip to first unread message

PiX

unread,
Apr 28, 2011, 2:34:10 PM4/28/11
to Grupo PHP Brasil, Grupo PHP Google
Boa tarde,

Sou iniciante e tenho uma dúvida sobre como gerar um <select> com uma opção selecionada.

Tenho um método que faz uma consulta no banco de dados, traz todos o itens da tabela montando o <select>, isso no formulário de registro de itens.

Ex.:

public function selectTipoVeiculo() {
    $sql = "SELECT * FROM tipoveiculo";
    $query = self::consSql($sql);
    //Gerando conteúdo do combo select
    while ($tipoVei = self::list($query)) {
        echo "\t<option value=\"".$tipoVei['tipoVeiculo_id']."\">".$tipoVei['tipoVeiculo_nome']."</option>\n";
    }
}

Depois só chamo no form.:

<select>
<?php $form->selectTipoVeiculo() ?>
</select>

ok, mas e quando quero editar um item?

Tenho que fazer a consulta pelo ID (óbvio) e trazer todos as informações armazenadas, o modelo de formulário é o mesmo, porém, como faço para que o <select> acima fique com a opção (dentre as que foram trazidas da tabela) marcada com a propriedade HTML select="selected"?

Ex.:

<select name="tipoVei" id="tipoVei">
<option value="1" selected="selected">Carro</option>
<option value="2">Moto</option>
<option value="3">Utilitário</option>
<option value="4">Caminhão</option>
</select>


Terei que alterar meu método? se sim, onde?

Terei que criar outro método comparando os dados do primeiro método com esse segundo que irei criar?




Marcia Silva
web designer
www.pixwell.com.br
MSN: conta...@gmail.com
Skype: contato.pix



Franklin Carneiro Carvalho

unread,
Apr 28, 2011, 3:50:51 PM4/28/11
to list...@googlegroups.com
dentro do select vc vai ter 2 options

dados2 = vc tem os while dos dados registrado no banco
dados = vc tem todas as opções para o select

na primeira <option selected value=<? echo "$dados2[id]";?>><? echo "$dados2[nome]";?></option>

e na segunda vc chama o option com o restante dos dados <option value=<? echo "$dados_cat[id]";?>><? echo "$dados_cat[nome]";?></option>

tudo isso dentro de um select. tipo assim:


<select id="carros">
<option selected value=<? echo "$dados2[id]";?>><? echo "$dados2[nome]";?></option>
<option value=<? echo "$dados_cat[id]";?>><? echo "$dados_cat[nome]";?></option>
</select>


deu pra entender a lógica?

Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!



--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Samuka

unread,
Apr 28, 2011, 4:43:21 PM4/28/11
to LISTA PHP
Eu trabalho assim:

mysql_select_db($database_conn, $conn);
$query_RsCidades = "SELECT * FROM tb_cidades WHERE uf =
".GetSQLValueString($estado, "text")."";
$RsCidades = mysql_query($query_RsCidades, $conn);
$row_RsCidades = mysql_fetch_assoc($RsCidades);
$totalRows_RsCidades = mysql_num_rows($RsCidades);




$cidade_select = '<select name="cidade" id="cidade" class="formx"
><option value="" ';

do {

$cidade_select .= '<option value="'.
$row_RsCidades['id'].'"';

if (!(strcmp($row_RsCidades['nome'], $cidade)))
{$cidade_select .='selected="selected"';}

$cidade_select .= '>'.$row_RsCidades['nome'].'</option>';

} while ($row_RsCidades = mysql_fetch_assoc($RsCidades));
$rows = mysql_num_rows($RsCidades);

if($rows > 0) {
mysql_data_seek($RsCidades, 0);
$row_RsCidades = mysql_fetch_assoc($RsCidades);
}

$cidade_select .= '</select>';


O resultado fica assim:

<select name="cidade" id="cidade" class="formx" required="required">
<option value="">ESCOLHA</option>
<option value="0001">Acrelandia</option>
<option value="0002">Assis Brasil</option>
<option value="0003" selected="selected">Brasileia</option>
<option value="0004">Bujari</option>
<option value="0005">Capixaba</option>
<option value="0006">Cruzeiro do Sul</option>
<option value="0007">Epitaciolandia</option>
<option value="0008">Feijo</option>
<option value="0009">Jordao</option>
<option value="0010">Mancio Lima</option>
<option value="0011">Manoel Urbano</option>
<option value="0012">Marechal Thaumaturgo</option>
<option value="0013">Placido de Castro</option>
<option value="0014">Porto Acre</option>
<option value="0015">Porto Walter</option>
<option value="0016">Rio Branco</option>
<option value="0017">Rodrigues Alves</option>
<option value="0018">Santa Rosa</option>
<option value="0019">Sena Madureira</option>
<option value="0020">Senador Guiomard</option>
<option value="0021">Tarauaca</option>
<option value="0022">Xapuri</option>
</select>

Ajudei?

Samuel Caetano Peixoto
samuel...@gmail.com
17-3011-6752
> *Marcia Silva*
> web designerwww.pixwell.com.br
> *MSN: *contato....@gmail.com
> *Skype: *contato.pix

Heron Santos

unread,
Apr 29, 2011, 7:48:08 AM4/29/11
to list...@googlegroups.com
Costumo fazer assim:

$selecionado = '2';
foreach ($array as $item) {
   $selected = ($selecionado == $item['valor'] ? 'selected' : null);
   print "<option value='{$item['valor']}' {$selected}>{$item['nome']}</option>";
}

Abraços,
Heron Santos
Analista / Desenvolvedor WEB

www.heronsantos.com
+55 (21) 92645688

Antes de imprimir, pense em sua responsabilidade e compromisso com o meio ambiente.




--

Vinicius Rezende

unread,
Apr 29, 2011, 9:43:52 AM4/29/11
to list...@googlegroups.com
Ah, esqueci de falar.. no Kohana(e provavelmente Igniter) ele faz isso automático através do form::dropdown

2011/4/29 Heron Santos <heronr...@gmail.com>
Reply all
Reply to author
Forward
0 new messages