Jump to content

Combobox PHP


david_carlos
 Share

Go to solution Solved by david_carlos,

Recommended Posts

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;
}
}?>
Edited by apocsantos
geshi
Link to comment
Share on other sites

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

Edited by apocsantos
geshi
Link to comment
Share on other sites

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);
}
?>
Edited by chbcl

developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Link to comment
Share on other sites

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ções 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

Link to comment
Share on other sites

  • Solution

Assim Resolveu tudo

😛

<!--<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>
-->
Edited by david_carlos
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.