Ir para conteúdo
Fórum Script Brasil
  • 0

Caixas Select


carlos.antunes

Pergunta

Boa tarde a todos.

Preciso de ajuda !!!!

Uso um formulário para preenchimento de dados e outra página que a pessoa entra quando quer alterar as informações que ela já enviou.

Nessa página de edição, nas caixa tipo text, aparece os dados cadastrais que a pessoa preencheu, o problema é que não estou conseguindo fazer o mesmo com as várias caixas select, sempre aparece "selecione" e as opções todas.

Também preciso saber como fazer que uma caixa select seja "povoada" com as opções de acordo com as seleções feitas anteriormente. Como faço para submeter os dados na mesma página? (De acordo com a cidade e o estado que for preenchido, a terceira caixa abrirá as empresas dessa localidade).

Alguém pode me orientar?

Desde já agradeço a quem puder me ajudar.

Carlos.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
Guest Carlos Seiji

e ai beleza??

ae você vai precisar utilizar um asp + bd ou php + bd.

js ate daria para fazer mas do mesmo jeito precisaria do bd e para o que você precisa não tem como fugir.

se você esta montando em asp posso lhe enviar um exemplo mas demoraria um pouco para montar para você.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Carlos.

Obrigado por sua ajuda.

Eu estou usando php.

Estou postando nessa sessão porque creio que o que está faltando é alguma função de javascript.

Consegui resolver parte do meu segundo problema: a caixa select dependente da anterior está sendo povoada corretamente, mas... não mantém o valor selecionado.

<script language="javascript">

function envia2()

{document.busca2.action = "buscahoje.php"

document.busca2.submit();

}

</script>

<form name="busca1" method="post" action="<? $confi=1 ?>">

<?

$consulta1 = "SELECT estado FROM clientes ORDER BY estado ASC";

$resultado1 = mysql_query($consulta1);

$num1 = mysql_num_rows($resultado1);

?>

<td>Estado</td><td>

<select onChange="envia1()" name="campo1" id="campo1"  size="1" >

<option>Selecione</option> (comentário: se tiro essa linha, o javascript não funciona por ser onChange, tem que haver a alteração do que está selecionado previamente)

<?

for($i=0;$i<$num1;$i++) {

$estado = mysql_result($resultado1,$i,"estado");

?>

<option value="<? echo "$estado";?>"><? echo "$estado";?></option>

<? } ?></select></td> </tr> </form>   </td> </tr>

<tr>

<? if ($confi==1) {

$campo1 = $_POST["campo1"];

$consulta2 = "SELECT cidade FROM clientes WHERE estado= '$campo1' ORDER BY cidade ASC";

$resultado2 = mysql_query($consulta2);

$num2 = mysql_num_rows($resultado2);

?>

<form name=busca2" method="post" action="<? $confi=2 ?>">

<td>Cidade</td>

<td><select onChange="envia2()"  name="campo2" id="campo2"  size="1" >

<option>Selecione</option>

<?

for($i=0;$i<$num2;$i++) {

$cidade = mysql_result($resultado2,$i,"cidade");

?>

<option value="<? echo "$cidade";?>"><? echo "$cidade";?></option>

<? }

}?>

</select></td></tr></form>    </td> </tr>

<tr>

<form name="busca3" method="post" action="busca1a.php">

<? if ($confi==2) {

$campo2 = $_POST["campo2];

$consulta3 = "SELECT atividade FROM clientes WHERE cidade= '$campo2' ORDER BY atividade ASC";

$resultado3 = mysql_query($consulta3);

$num3 = mysql_num_rows($resultado3);

?>

<td>Atividade:</td><td>

<select name="atividade" id="atividade"  size="1">

<?

for($i=0;$i<$num3;$i++) {

$atividade = mysql_result($resultado3,$i,"atividade");

?>

<option value="<? echo "$atividade";?>"><? echo "$atividade";?></option>

<? }

}?>

</select</td> </tr>  </td> </tr>

<tr><td>

<input value=" BUSCAR " type="submit" name="submit"></td>

</tr></form>

Alguém pode me ajudar a complementar o código, para que mantenha o valor selecionado?

Creio que pra vocês não é tão difícil quanto pra mim...

Também continuo com o outro problema:

Uso um formulário para preenchimento de dados e outra página que a pessoa entra quando quer alterar as informações que ela já enviou.

Nessa página de edição, nas caixa tipo text, aparece os dados cadastrais que a pessoa preencheu, o problema é que não estou conseguindo fazer o mesmo com as várias caixas select, sempre aparece "selecione" e as opções todas.

Agradeço muito.

Carlos Antunes.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Carlos Seiji

ae se entendi bem sua logica você tem 3 combo ou select como preferir na qual dependendo do que for selecionado no primeiro ele constroi o segundo e dependendo do valor do sengudo ele constroi o terceiro certo??

so não entendi porque você não fez em js para não precisar atualizar toda hora a pagina, mas tudo bm isso não vem ao caso.

e o seu problema é q cada vez que você seleciona o segundo combo o primeiro perde o valor e quando você seleciona o valor do 3 combo o 2 e o 1 combo perdem os valores certo??se for isso tenta o q vou te mostrar so q vou montar como logica e não como php porque não entendo de php ok?

<script language="javascript">
function envia2()
{document.busca2.action = "buscahoje.php"
document.busca2.submit();
}
</script>
<form name="busca1" method="post" action="<? $confi=1 ?>">
<?
$consulta1 = "SELECT estado FROM clientes ORDER BY estado ASC";
$resultado1 = mysql_query($consulta1);
$num1 = mysql_num_rows($resultado1);
?>
<td>Estado</td><td>
<select onChange="envia1()" name="campo1" id="campo1"  size="1" >
<option>Selecione</option> (comentário: se tiro essa linha, o javascript não funciona por ser onChange, tem que haver a alteração do que está selecionado previamente)
<?
for($i=0;$i<$num1;$i++) {
$estado = mysql_result($resultado1,$i,"estado");
[COLOR=red]se $_POST["campo1"] = $estado; 
$val1 = "selected";
fim de se[/COLOR] ?>
<option value="<? echo "$estado";?>" [COLOR=red]<? echo $val1 ?>[/COLOR]><? echo "$estado";?></option>[COLOR=red]<? $val1 = "" ?>[/COLOR]
<? } ?></select></td> </tr> </form>   </td> </tr>

<tr>
<? if ($confi==1) {
$campo1 = $_POST["campo1"];
$consulta2 = "SELECT cidade FROM clientes WHERE estado= '$campo1' ORDER BY cidade ASC";
$resultado2 = mysql_query($consulta2);
$num2 = mysql_num_rows($resultado2);
?>
<form name="busca2" method="post" action="<? $confi=2 ?>">
<td>Cidade</td>
<td><select onChange="envia2()"  name="campo2" id="campo2"  size="1" >
<option>Selecione</option>
<?
for($i=0;$i<$num2;$i++) {
$cidade = mysql_result($resultado2,$i,"cidade");
[COLOR=red]se $_POST["campo2"] = $cidade; 
$val2 = "selected";
fim de se[/COLOR] 
?>
<option value="<? echo "$cidade";?>" [COLOR=red]<? echo $val2; ?>[/COLOR]><? echo "$cidade";?></option>[COLOR=red]<? $val2 = "" ?>[/COLOR]
<? } 
}?>
</select></td></tr></form>    </td> </tr>

<tr>

<form name="busca3" method="post" action="busca1a.php">
<? if ($confi==2) {
$campo2 = $_POST["campo2"];
$consulta3 = "SELECT atividade FROM clientes WHERE cidade= '$campo2' ORDER BY atividade ASC";
$resultado3 = mysql_query($consulta3);
$num3 = mysql_num_rows($resultado3);
?>

<td>Atividade:</td><td>
<select name="atividade" id="atividade"  size="1">
<?
for($i=0;$i<$num3;$i++) {
$atividade = mysql_result($resultado3,$i,"atividade");
?>
<option value="<? echo "$atividade";?>"><? echo "$atividade";?></option>
<? }
}?>
</select</td> </tr>  </td> </tr>

<tr><td>
<input value=" BUSCAR " type="submit" name="submit"></td>
</tr></form>

Link para o comentário
Compartilhar em outros sites

  • 0

Poxa, Carlos Seiji. Agradeço demais por sua atenção.

Você entendeu perfeitamente o problema que estou tendo, fiz as alterações que você sugeriu e mudei mais algumas coisas, no entanto, o problema continua...

Até a seleção da cidade vai bem, mas depois continua perdendo as informações.

Eu não fiz em javascript porque não conheço essa linguagem, se tiver alguma sugestão para resolver o problema de forma diferente da que estou usando, fique à vontade.

Estou quebrando a cabeça e não estou conseguindo avançar em nada.

Abaixo segue o código como está agora.

<?

include "conecta.php"; //Conecta com a nosso banco de dados MySQL

?>

<html>

<head>

<script language="javascript">

function envia1()

{document.busca1.action = "buscahoje.php"

document.busca1.submit();

}

</script>

<script language="javascript">

function envia2()

{document.busca2.action = "buscahoje.php"

document.busca2.submit();

}

</script>

<script language="javascript">

function envia3()

{document.busca3.action = "buscahoje.php"

document.busca3.submit();

}

</script>

</head>

<body link="#FFFFFF" vlink="#FFFFFF" alink="#CCCCCC" leftmargin="0" topmargin="3" marginwidth="0" marginheight="0" bgcolor="#FFFFFF" background="imagens/fundo.jpg">

<div align="center">

<table>

<?

//---------------------------------------------------------------------------------------------// FORM 1 - ESTADO

?>

<tr>

<form name="busca1" method="post">

<?

$consulta1 = "SELECT estado FROM clientes";

$resultado1 = mysql_query($consulta1);

$num1 = mysql_num_rows($resultado1);

?>

<td width="255" align="right">Estado:</font></b></td>

<td width="470">

<select onChange="envia1()" name="campo1" id="campo1"  size="1" >

<option>Selecione</option>

<?

for($i=0;$i<$num1;$i++) {

$estado=mysql_result($resultado1,$i,estado);

if ($_POST["campo1"] == $estado) {

$val1 = "selected";

}

?>

<option value=<? echo "$estado";?>" <? echo "$val1"; ?>><? echo "$estado";?></option><? $val1 = "" ?>

<? } ?>

</select>

</font></b>

</td> </tr>

</form>

  </td> </tr>

<?

//---------------------------------------------------------------------------------------------// FORM 2 - CIDADE

?>

  <tr>

<form name="busca2" method="post">

<?

$campo1 = $_POST[campo1];

$consulta2 = "SELECT cidade FROM clientes WHERE estado LIKE '$campo1'";

$resultado2 = mysql_query($consulta2);

$num2 = mysql_num_rows($resultado2);

?>

<td width="255" align="right">Cidade:</font></b></td>

<td width="470">

<select onChange="envia2()" name="campo2" id="campo2"  size="1" style="background-color: #FFFFFF; font-family: Arial; color: #000080; border: 2 solid #000080">

<option>Selecione</option>

<?

for($i=0;$i<$num2;$i++) {

$cidade = mysql_result($resultado2,$i,cidade);

if ($_POST["campo2] == $cidade) {

$val2 = "selected";

}

?>

<option value="<? echo "$cidade";?>" <? echo "$val2"; ?>><? echo "$cidade";?></option><? $val2 = "" ?>

<?

} ?>

</select>

</font></b>

</td> </tr>

</form>

  </td> </tr>

<?

//--------------------------------------------------------------------------------------------

// FORM 3 - ATIVIDADE

?>

<tr>

<form name="busca3"  method="post">

<?

$campo1 = $_POST[campo1];

$campo2 = $_POST[campo2];

$consulta3 = "SELECT atividade FROM clientes WHERE estado LIKE '$campo1' AND cidade LIKE '$campo2'";

$resultado3 = mysql_query($consulta3);

$num3 = mysql_num_rows($resultado3);

?>

<td width=255" align="right">Atividade:</font></b></td>

<td width="470">

<select onChange="envia3()" name="campo3" id="campo3"  size="1" style="background-color: #FFFFFF; font-family: Arial; color: #000080; border: 2 solid #000080">

<option>Selecione</option>

<?

for($i=0;$i<$num3;$i++) {

$atividade = mysql_result($resultado3,$i,atividade);

if ($_POST["campo3] == $atividade) {

$val3 = "selected";

}

    echo "<option $val3 value='$atividade'>$atividade</option>";

}

?>

</select>

</font></b>

</td> </tr>

  </td> </tr>

  </form>

 

<?

//---------------------------------------------------------------------------------------------

// FORM 4 - BUSCA - GERA RESULTADO

?>

  <form name="busca4" method="post" action="result.php">

<?

$campo1 = $_POST[campo1];

$campo2 = $_POST[campo2];

$campo3 = $_POST[campo3];

 

$sql = "select * from clientes where cidade LIKE '$campo1' AND estado LIKE '$campo2' AND atividade LIKE '$campo3'";

$result = mysql_query ($sql);

if(mysql_num_rows($result) > 0) {

while($array = mysql_fetch_array($result)) {

?>

 

<input type=hidden" name="id" value="<?echo $array['id];?>">

<input type="hidden" name="cidade" value="<?echo $campo1;?>">

<input type="hidden" name="estado" value="<?echo $campo2;?>">

<input type="hidden" name="atividade" value="<?echo $campo3;?>">

  <tr>

<td width="255" align="right"> &nbsp;</td>

<td width="470"> <font size="3" face="MS Sans Serif" color="#000000">

<input value=" BUSCAR " type="submit" name="submit" style="background-color: #93AEB2; color: #FFFF00;

font-family: Arial; font-weight: bold; border: 2px solid #000000; ; float:left"></font></td>

  </tr>

  </form>

 

<?

}

}

?>

  <tr>

  <font face="Arial" color="#000080"><center>

              </font></center></tr>

  </table>

  </div>

    </td>

  </tr>

</table>

<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>

</div>

</body>

</html>

Muito obrigado.

Carlos Antunes.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Carlos Seiji

e ai beleza??

poxa minha logica esta errada , pois você utiliza 4 forms diferentes ou seja perde o valor dos inputs ao enviar o segundo formulario.

mas já pensei em outra logica.

quanto em js ate mandaria para você já q seria bem melhor, mas estou muito enrolado aki no trampo e em casa to tendo de fazer um sistema em delphi dai não terei tempo para montar o script para você já que so tenho um script pronto que vai ate 2 combos e não tenho como utilizar este já pronto teria de fazer um novo.

mas acho que agora vai funcionar corretamente.

coloquei linhas de comentario html para explicar o do porque que fiz as modificacoes ok?

se der ou não certo posta aki.

[]'s

<?
include "conecta.php"; //Conecta com a nosso banco de dados MySQL

?>

<html>
<head>

<script language="javascript">
function envia1()
{document.busca1.action = "buscahoje.php"
document.busca1.submit();
}
</script>

<script language="javascript">
function envia2()
{document.busca2.action = "buscahoje.php"
document.busca2.submit();
}
</script>

<script language="javascript">
function envia3()
{document.busca3.action = "buscahoje.php"
document.busca3.submit();
}
</script>
</head>
<body link="#FFFFFF" vlink="#FFFFFF" alink="#CCCCCC" leftmargin="0" topmargin="3" marginwidth="0" marginheight="0" bgcolor="#FFFFFF" background="imagens/fundo.jpg">
<div align="center">
<table>
<?
//---------------------------------------------------------------------------------------------// FORM 1 - ESTADO
?>

<tr>

<form name="busca1" method="post">

<?
$consulta1 = "SELECT estado FROM clientes";
$resultado1 = mysql_query($consulta1);
$num1 = mysql_num_rows($resultado1);
?>
<td width="255" align="right">Estado:</font></b></td>
<td width="470">
<select onChange="envia1()" name="campo1" id="campo1"  size="1" >
<option>Selecione</option>
<?
for($i=0;$i<$num1;$i++) {
$estado=mysql_result($resultado1,$i,estado);
if ($_POST["campo1"] == $estado) {
$val1 = "selected";
}
?>
<option value="<? echo "$estado";?>" <? echo "$val1"; ?>><? echo "$estado";?></option><? $val1 = "" ?>
<? } ?>
</select>
</font></b>
</td> </tr>
</form>
  </td> </tr>

<?
//---------------------------------------------------------------------------------------------// FORM 2 - CIDADE
?>

  <tr>

<form name="busca2" method="post">

<?
$campo1 = $_POST[campo1];
$consulta2 = "SELECT cidade FROM clientes WHERE estado LIKE '$campo1'";
$resultado2 = mysql_query($consulta2);
$num2 = mysql_num_rows($resultado2);
?>
<td width="255" align="right">Cidade:</font></b></td>
<td width="470">
<select onChange="envia2()" name="campo2" id="campo2"  size="1" style="background-color: #FFFFFF; font-family: Arial; color: #000080; border: 2 solid #000080">
<option>Selecione</option>
<?
for($i=0;$i<$num2;$i++) {
$cidade = mysql_result($resultado2,$i,cidade);
if ($_POST["campo2"] == $cidade) {
$val2 = "selected";
}
?>
<option value="<? echo "$cidade";?>" <? echo "$val2"; ?>><? echo "$cidade";?></option><? $val2 = "" ?>
<?
} ?>
</select>
<input type="hidden" name="campo1" value="<? echo $campo1 ?>"> <!-- Criei este input hidden para gravar o valor do primeiro input utilizei o mesmo nome do primeiro input do primeiro form para que o php pegue o valor sem problemas -->
</font></b>
</td> </tr>
</form>
  </td> </tr>


<?
//--------------------------------------------------------------------------------------------
// FORM 3 - ATIVIDADE
?>

<tr>

<form name="busca3"  method="post">

<?
$campo1 = $_POST[campo1];
$campo2 = $_POST[campo2];
$consulta3 = "SELECT atividade FROM clientes WHERE estado LIKE '$campo1' AND cidade LIKE '$campo2'";
$resultado3 = mysql_query($consulta3);
$num3 = mysql_num_rows($resultado3);
?>
<td width="255" align="right">Atividade:</font></b></td>
<td width="470">
<select onChange="envia3()" name="campo3" id="campo3"  size="1" style="background-color: #FFFFFF; font-family: Arial; color: #000080; border: 2 solid #000080">
<option>Selecione</option>
<?
for($i=0;$i<$num3;$i++) {
$atividade = mysql_result($resultado3,$i,atividade);
if ($_POST["campo3"] == $atividade) {
$val3 = "selected";
}
    echo "<option $val3 value='$atividade'>$atividade</option>";
$val3 = ""
}
?> <!-- zerei o valor da variavel $val3, pois se não zerar ele vai continuar escrevendo selected nos options assim ficando selecionado o ultimo item mesmo que o correto seja o segundo -->
</select>
<input type="hidden" name="campo1" value="<? echo $campo1 ?>">
<input type="hidden" name="campo2" value="<? echo $campo2 ?>"> <!-- Desta vez criei dois inputs hidden pois temos que recuperar os dois forms anteriores. -->
</font></b>
</td> </tr>
  </td> </tr>
  </form>
  

<?
//---------------------------------------------------------------------------------------------
// FORM 4 - BUSCA - GERA RESULTADO
?>

  <form name="busca4" method="post" action="result.php">

<?
$campo1 = $_POST[campo1];
$campo2 = $_POST[campo2];
$campo3 = $_POST[campo3];
  
$sql = "select * from clientes where cidade LIKE '$campo1' AND estado LIKE '$campo2' AND atividade LIKE '$campo3'";
$result = mysql_query ($sql);

if(mysql_num_rows($result) > 0) {

while($array = mysql_fetch_array($result)) {

?>
  
<input type="hidden" name="id" value="<?echo $array['id'];?>">
<input type="hidden" name="cidade" value="<?echo $campo1;?>">
<input type="hidden" name="estado" value="<?echo $campo2;?>">
<input type="hidden" name="atividade" value="<?echo $campo3;?>">

  <tr>
<td width="255" align="right"> &nbsp;</td>
<td width="470"> <font size="3" face="MS Sans Serif" color="#000000">
<input value=" BUSCAR " type="submit" name="submit" style="background-color: #93AEB2; color: #FFFF00;
font-family: Arial; font-weight: bold; border: 2px solid #000000;; float:left"></font></td>
  </tr>
  </form>
  
<?
}
}
?>
  <tr>
  <font face="Arial" color="#000080"><center>

              </font></center></tr>
  </table>
  </div>
    </td>
  </tr>

</table>
<p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
</div>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - carlos.antunes -

Olá, Carlos Seiji.

Funcionou perfeitamente !!!

Agradeço imensamente por sua ajuda, eu não estava conseguindo avançar em meu projeto por causa deste problema...

Agora a busca está OK, fiz apenas uma pequena alteração no final. Estou postando aqui, quem sabe, pode ser útil para alguém.

Um grande abraço, amigo.

Carlos Antunes.

<?

//---------------------------------------------------------------------------------------------

// FORM 4 - BUSCA - GERA RESULTADO

?>

<form name="busca4" method="post" action="result.php">

<?

$campo1 = $_POST[campo1];

$campo2 = $_POST[campo2];

$campo3 = $_POST[campo3];

?>

<input type="hidden" name="estado" value="<?echo $campo1;?>">

<input type="hidden" name="cidade" value="<?echo $campo2;?>">

<input type="hidden" name="atividade" value="<?echo $campo3;?>">

<tr>

<td width="255" align="right">&nbsp;</td><td width="470">

<input value=" BUSCAR " type="submit" name="submit" style="background-color: #93AEB2; color: #FFFF00; font-family: Arial; font-weight: bold; border: 2px solid #000000; ; float:left"></font></td> </tr>

</table></div>

</td>  </tr>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...