Ir para o conteúdo
david_carlos

[Resolvido] Combobox PHP

Mensagens Recomendadas

david_carlos

Boas,

ando já aqui a uns dias a batalhar como manter o valor da combobox depois do primeiro submit

aqui vai o código ver se me ajudam

<form action="" method="post" >
<select name="cb_tabelas" >
 <option value="0">--Selecionar Categoria--</option>
<option value="1">Marcas</option>
<option value="2">Produtos</option>
<option value="3">Projectos</option>
<option value="4">Promoções</option>
<option value="5">Enventos</option>
<option value="6">Nossas Marcas</option>
</select>

<input name="editar" type="submit" value="Editar" />


<?php
include("mysql.php");
if(isset($_POST['cb_tabelas']))
{
$var1 = $_POST['cb_tabelas'];
switch ($var1){
case 0:

echo "Selecione uma Categoria que queira Editar";
break;
case 1:



$sql = "select * from marcas";
$query = mysql_query($sql);?>
<table width="99%" border="1" cellspacing="0" cellpadding="0">
<tr>
<th colspan="4" scope="col"><p style="background: url(images/img007.png) no-repeat left top;">Clientes</p></th>
</tr>
<tr>
<td width="9%"><input name="Delete" type="submit" id="Delete" value="Delete"></td>
<td width="9%"></td>
<td width="76%"> </td>
</tr>
</table>

<?php echo "<table width=\"99%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<tr>";
echo "<th scope=\"col\" style=\"font-size:9px;\">#</th>";
echo "<th scope=\"col\" style=\"font-size:9px;\">id</th>";
echo "<th scope=\"col\" style=\"font-size:9px;\">Nome</th>";
echo "<th scope=\"col\" style=\"font-size:9px;\">Logo</th>";

echo "</tr>";

while($row = mysql_fetch_array($query)){


?>

<td align="center" ><input type="checkbox" name="arquivo[]" value="<?php echo $row['id_marca']; ?>"/></td>

<?php echo $row['id_marca']; ?>
<?php

echo"<td style=\"font-size:11px;\" style=\"text-align:center\">" ; echo $row['id_marca']."</td>";
echo"<td style=\"font-size:11px;\" style=\"text-align:center\">"; echo $row['nome']."</td>";
echo"<td style=\"font-size:11px;\" style=\"text-align:center\">"; echo $row['logo']."</td>";

echo"</tr>";
}


echo "</table>";
?>

<?php
if(isset($_POST['Delete']))
{

foreach($_POST['arquivo'] as $checkbox)
{
echo "OKKKKKKKK";
#mysql_query("DELETE FROM marcas WHERE id_marca='$checkbox'");
#echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=index.php?site=editar\">";


}}

if(isset($_POST['InserirCliente']))
{

echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=index.php?site=registar\">";
}
echo "</form>";
break;
case 2:
echo "Produtos";
break;
case 3:

break;
case 4:
break;
case 5:
break;
}
}?>

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MROverclock

A minha sugestão, que não sou muito expert, é:

Fazer a combo dentro do PHP, depois ao processares o POST apanhas qual foi a opção selecionada e nessa colocas o selected="true"

<option value="XX" selected="true">opção XX</option>

ou simplesmente

<option value="XX" selected>opção XX</option>

Para ser mais facil secalhar carregas os valores e as strings para um array e depois constrois isto com um While ou algo parecido. Não sei se há algo mais simples

Deixo-te aqui um pedaço de um código que fiz numa página minha há pouco tempo. Neste caso foi usado o GET em vez de POST, mas vai dar ao mesmo, apenas muda o método:

if($_SERVER['REQUEST_METHOD'] === 'GET')
{
(...)
$idColor = $_GET['idColor'];
(...)
}
(...)
//Aqui começas a construir a combo
$ddlistColors = "<select id='color' name='color'>";
//aqui fui buscar à base de dados a tabela de onde fui buscar os dados
$colorTable = $db->getColorList();

while($row = mysql_fetch_array($colorTable))
{
if($idColor == $row['idColor']) //Se for esta a seleccionada
 $ddlistColors .= "<option value='$row[idColor]' selected>$row[color]</option>";
else //se não for a seleccionada não mete o "selected"
 $ddlistColors .= "<option value='$row[idColor]'>$row[color]</option>";
}
//Fecha a combo
$ddlistColors .= "</select>";

Espero que tenha ficado suficientemente claro! Se esta não for a maneira mais simples/eficaz também agradeço sugestões

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
MROverclock

chbcl

Pelo que percebi ele faz submit e quem vai tratar o submit é a própria página (submit para a própria página) e ao fazer submit ele quer que o valor sleccionado se mantenha em vez de voltar para o default de quando é aberto a primeira vez

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
chbcl

chbcl

Pelo que percebi ele faz submit e quem vai tratar o submit é a própria página (submit para a própria página) e ao fazer submit ele quer que o valor sleccionado se mantenha em vez de voltar para o default de quando é aberto a primeira vez

Se bem entendi, ele pode fazer isso em javascript, mas se insiste em criar em PHP pode ao fazer o print das options fazer algo assim:

FORMA NÃO ORGANIZADA:

<?php
$array = [
'1' => [
 'nome' => 'Marcas',
 'selected' => FALSE
],
'2' => [
 'nome' => 'Marcas',
 'selected' => FALSE
],
'3' => [
 'nome' => 'Projectos',
 'selected' => FALSE
],
'4' => [
 'nome' => 'Promoções',
 'selected' => FALSE
],
'5' => [
 'nome' => 'Eventos',
 'selected' => FALSE
],
'6' => [
 'nome' => 'Nossas Marcas',
 'selected' => FALSE
]
];
if(isset($_POST['cb_tabelas'])){
if($_POST['cb_tabelas'] == 0){
print "ERRO: Escolha uma opção válida!";
}
else{
$array[$_POST['cb_tabelas']]['selected'] = TRUE;
}
 ?>
 <form action="" method="post" >
	 <select name="cb_tabelas" >
		 <option value="0">--Selecionar Categoria--</option>
		 <?php
		 foreach($array as $key => $value){
			 if($value['selected'] == TRUE){
				 print "<option value=\"". $key ."\" selected>". $value['nome'] ."</option>";
			 }
			 else{
				 print "<option value=\"". $key ."\" >". $value['nome'] ."</option>";
			 }
		 }
		 ?>
	 </select>
	 <input name="editar" type="submit" value="Editar" />
 </form>
<?php
}
else{
?>
 <form action="" method="post" >
	 <select name="cb_tabelas" >
		 <option value="0">--Selecionar Categoria--</option>
		 <?php
		 foreach($array as $key => $value){
			 if($value['selected'] == TRUE){
				 print "<option value=\"". $key ."\" selected>". $value['nome'] ."</option>";
			 }
			 else{
				 print "<option value=\"". $key ."\" >". $value['nome'] ."</option>";
			 }
		 }
		 ?>
	 </select>
	 <input name="editar" type="submit" value="Editar" />
 </form>
<?php
}
?>

FORMA ORGANIZADA:

<?php
function print_select($array){
?>
<form action="" method="post" >
<select name="cb_tabelas" >
<option value="0">--Selecionar Categoria--</option>
<?php
foreach($array as $key => $value){
if($value['selected'] == TRUE){
print "<option value=\"". $key ."\" selected>". $value['nome'] ."</option>";
}
else{
print "<option value=\"". $key ."\" >". $value['nome'] ."</option>";
}
}
?>

</select>

<input name="editar" type="submit" value="Editar" />
</form>
<?php
}

$array = [
'1' => [
'nome' => 'Marcas',
'selected' => FALSE
],
'2' => [
'nome' => 'Marcas',
'selected' => FALSE
],
'3' => [
'nome' => 'Projectos',
'selected' => FALSE
],
'4' => [
'nome' => 'Promoções',
'selected' => FALSE
],
'5' => [
'nome' => 'Eventos',
'selected' => FALSE
],
'6' => [
'nome' => 'Nossas Marcas',
'selected' => FALSE
]
];
if(isset($_POST['cb_tabelas'])){
if($_POST['cb_tabelas'] == 0){
print "ERRO: Escolha uma opção válida!";
}
else{
$array[$_POST['cb_tabelas']]['selected'] = TRUE;
}

print_select($array);
}
else{
print_select($array);
}
?>

Editado por chbcl

developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
capesone

Ao carregares as opções da lista, para cada 1, verificas se o valor da opção é aquele que pretendes que tens armazenado em algum lado

presumindo que estas obter as opçoes de alguma lista.

#valor pretendido

$opcoes = null; defines string para nao dar erro de nao definido ao concatenar a string

$pretendido = "xxxuuu";

for/foreach/while{ #percorres lista de opçoes

if($value == $pretendido) $selected ="selected=\"selected\"";

else $selected = null;

$opcoes.="<option value=\"abc\" {$selected}>Texto</option>";

}

echo "<select name=\"yyyy\">{$opções}</select>";

A opção que o sistema marcar como selected irá ficar automaticamente selecionada

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
david_carlos

Assim Resolveu tudo

:P

<!--<select name="cb_categoria" id="select">
<option <?php# if ($row['categoria'] == 1 ) echo 'selected'; ?> value="1">Películas</option>
<option <?php# if ($row['categoria'] == 2 ) echo 'selected'; ?> value="2">Car Audio</option>
<option <?php# if ($row['categoria'] == 3 ) echo 'selected'; ?> value="3">Vinil</option>
</select>
-->

Editado por david_carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.