Alimentar ComboBox

ReVenG3r

Membro
Boas...

Gostava que me dissessem o porquê de quando passo os valores da minha combo para outra página...não me passam os valores correctos :S


Aqui fica uma pequena parte do código:

<!-- Insere os dados na Combo Por localidade fazendo a ligação à BD -->

<p> Localidade
<?php
$conexao = mysql_connect("localhost", "root", "") or die("Não foi possível conectar ao bd");
mysql_select_db("jokibook", $conexao) or die("Não foi possível selecionar o bd");
$sql = "select * from aluno group by localidade";
$tabela = mysql_query($sql, $conexao);
$linhas = mysql_num_rows($tabela);
if($linhas==0)
{
echo "<script>alert('Nenhum registro foi encontrado');</script>";
}
else
{
?>
<table>
<select name="localidade_select">
<?php
for($x=0; $x<$linhas; $x++)
{
$cod_aluno = mysql_result($tabela,$x,'cod_aluno');
$localidade = mysql_result($tabela,$x,'localidade');
?>
<option value="<?= $cod_aluno ?>"><?= $localidade ?></option>
<?php
}
?>
</select>
</table>


Após isto (procura) tento fazer com que a procura me devolva mesmo o valor selecionado da combo!!! Mas não me acontece isso :S em vez de aparecer valores alfabéticos...devolve-me o valor do código de utilizador que mora nessa localidade!!!


$localidadeproc= $_POST['localidade_select'];
echo $localidadeproc; (quando faço isto deveria-me devolver "Porto" ou "Lisboa" ou etc etc...mas em vez disso devolve-me um valor numerico referente ao codigo do utilizador que mora nessa localidade :S)
echo "<p>Nome procurado: $nomeproc";
$ligax = mysqli_connect('localhost', 'root','');
if (!$ligax){echo "<p> Falha na ligação."; exit; }
mysqli_select_db($ligax, 'jokibook');
$ano_select=$_POST['ano'];
$turma_select=$_POST['turma'];
$localidade=$_POST['localidade_select'];
//$procura="select * from aluno where aluno like '%".$nome."%';"; }//
// if($tipo=="nome_cliente"){$procurar="select * from turma where nome_cliente like '%".$nome."%';"; }//
$procura="select * from aluno where localidade like '%".$localidade_select."%' or nome='%".$nome."%';";
echo $localidade_select;
echo $localidade;
echo $procura;
//$procura = "Select * From aluno
// where nome like '%".$nomeproc."%'";
$result = mysqli_query($ligax, $procura);
$nregistos = mysqli_num_rows($result);
echo "Nº de registos encontrados: $nregistos";
?>
<table border="1">
<tr><td> Codigo: <td> Nome: <td> Morada: </tr>
<?php
for ($i=0; $i <$nregistos; $i++) {
$registo = mysqli_fetch_assoc($result);
echo '<tr> <td>' .$registo['cod_aluno']. '</td>';
echo '<td>' .$registo['nome']. '</td>';
echo '<td>' .$registo['morada']. '<td> </tr>'; }
?> </table>

Desde já obrigado e desculpme qualquer coisa :S
 
Se bem percebi o teu problema tenta trocar esta linha

PHP:
<option value="<?= $cod_aluno ?>"><?= $localidade ?></option>

por esta

PHP:
<option value="<?= $localidade ?>"><?= $localidade ?></option>
 
Se bem percebi o teu problema tenta trocar esta linha

PHP:
<option value="<?= $cod_aluno ?>"><?= $localidade ?></option>
por esta

PHP:
<option value="<?= $localidade ?>"><?= $localidade ?></option>

Exactamente :)

Hoje de tarde cheguei à brilhante conclusão que copy paste não leva a lá grande lado :P

Mas muitissimo obrigado pela ajuda :)

Excelente mesmo ;)

Abraços e continuação do Grandioso projecto que aqui está :)
 
Alimentar ComboBox Parte II

Ora boas...nas sequência do meu projecto e nas dúvidas que aqui postei:

Alimentar Combobox

Deparo-me com outro problema!!!

Como faço para ao escolher um dos campos que JÁ vou buscar à BD, na combo, ele me devolver (na mesma página ou se não for possivel que seja noutra) determinados valores de acordo com a pesquisa que faço???


É que tenho uma combo com os valores 10, 11 e 12 (admitindo que se trata de um livro de ponto online a desenvolver) e quando carrego em 10 gostava que aparecessem as disciplinas todas desse ano, e gostava que elas fossem mostradas numa tabela (isso não é dificil). Só não sei que código utilizar para que isto me execute determinadas funções quando mudo um campo da combo!!! Queria que ao escolher 11 aparecessem umas disciplinas (da BD) e por ai fora ;)

Fiz-me entender??? :)

Abraços e obrigado
 
Se bem percebi queres mostrar conteudos com um determinado id, id esse que te é devolvido na select.. para isso podes fazer:

$query = "SELECT disciplinas FROM turma WHERE ano=".$_POST['name_da_select']." ORDER BY disciplinas ASC";
mysql_query($query);

Ve lá se é isto que pretendes, mudando os nomes para o que tens claro, e depois diz algo...
 
Hmmm...vou (penso eu :P) facilitar algo as coisas...

Para já esqueçamos a parte das disciplinas!!!

Tenho na mesma tabela da BD (tabela chamada Turma) os campos: cod_turma, ano e num_turma!!!

E tenho duas combos...uma referente ao ano (10º, 11º, 12º) e outra referente à turma (10º1, 12º2, 10º3 e por aí fora)!!!

Quero que ao seleccionar um campo do Ano me modifique (indo buscar à BD) os num_turma referentes a esse ano!!!

Entendes???

Tenho isto:

<html>
<Script Language="JavaScript">
function getStates(what) {
if (what.selectedIndex != '') {
var ano = what.value;
document.location=('menu_procurar.php?ano=' + ano);
}
}
</Script>
<head>

e ainda:

<select name="ano_select" onChange="getStates(this);">
<option value="">Seleccione o Ano</option>
<?php
$ano=$_GET['ano'];
$sql = "select num_turma from turma where ano=$ano group by num_turma";
echo $sql;
for($x=0; $x<$linhas; $x++)
{
$ano = mysql_result($tabela,$x,'ano');
?>

<option value="<?= $valor ?>"><?= $ano ?></option>
<?php
}
?>


depois quero modificas as coisas aqui:

<?php
$conexao = mysql_connect("localhost", "root", "") or die("Não foi possível conectar ao bd");
mysql_select_db("jokibook", $conexao) or die("Não foi possível selecionar o bd");

$sql = "select num_turma from turma where ano=$ano group by num_turma";

echo $sql;
echo $ano;
$tabela = mysql_query($sql, $conexao);
$linhas = mysql_num_rows($tabela);

if($linhas==0)
{
echo "<script>alert('Nenhum registro foi encontrado');</script>";
}
else
{
?>
<table>
<select name="turma_select">
<?php

for($x=0; $x<$linhas; $x++)
{
$num_turma = mysql_result($tabela,$x,'num_turma');
?>
<option value="<?= $num_turma ?>"><?= $num_turma ?></option>
<?php
}
?>
</select>
</table>

Que tenho eu de fazer??? :S

Abraços
 
Há, mas implica fazeres refresh da página, o que não tem problema, visto ser uma aplicação académica em que não foi leccionado Ajax.

Lendo na diagonal o teu código, penso que a ideia está correcta, ou seja, ao alterares o valor de uma combobox (evento onChange), vais passar os argumentos que queres através da query string, para serem processados posteriormente.

Tenta explicar melhor o problema concreto que estás a ter.
 
Ora cá estou eu novamente :P

Pois bem...após ter conseguido alimentar uma combo após seleccionar outra (medo getstates) deparo-me com um problema ainda maior :S

É que após carregar a 1ª combo...quero carregar outros dados a partir dos dados carregados na 2ª combo!!!

Muito complicado?

Eu passo o código que tenho:

Script:

<Script Language="JavaScript">
function getStates(what) {
if (what.selectedIndex != '') {
var ano_select = what.value;
document.location=('admin index.php?pagina=inserir&ano_select=' + ano_select);
}
}

</Script>






Carregar a 2ª Combo:

<font face="arial" style="font-size:11px">Ano:</font>
<?php
$ano_select=$_GET['ano_select'];
$conexao = mysqli_connect("localhost", "root", "") or die("Não foi possível conectar ao bd");
mysqli_select_db($conexao,'jokibook') or die("Não foi possível selecionar o bd");
$sql = "select ano from turma group by ano";
$result = mysqli_query($conexao,$sql);
$linhas = mysqli_num_rows($result);
?>
</td>
<td>
<select type="text" size=1 value="2" onChange="getStates(this);">
<option value="">Seleccione o Ano</option>
<?php
for($x=0; $x<$linhas; $x++)
{
$consulta = mysqli_fetch_assoc($result);
?>
<option value="<?php echo $consulta["ano"]; ?>"<?php if ($ano_select==$consulta["ano"]){ echo "SELECTED";}?>><?php echo $consulta["ano"]; ?></option>
<?php
}
?>
</select>

<font face="arial" style="font-size:11px">Turma:</font>
<?php
if (isset ($ano_select)){

$sql1 = "select num_turma from turma where ano=$ano_select";
$result1 = mysqli_query($conexao,$sql1);
$linhas1 = mysqli_num_rows($result1);
?>
</td>
<td>
<select type="text" size=1 value="2" onChange="getStates(this);">
<option value="">Seleccione a Turma</option>
<?php
for($x=0; $x<$linhas1; $x++)
{
$consulta1 = mysqli_fetch_assoc($result1);
?>
<option value="<?php echo $consulta1["num_turma"]; ?>"<?php if ($turma_select==$consulta1["num_turma"]){ echo "SELECTED";}?>><?php echo $consulta1["num_turma"]; ?></option>
<?php
}
?>
</select>


E agora o Local onde queria carregar os dados através da 2ª Combo:

Disciplinas:
<?php
if (isset ($turma_select)){

$sql2 = "select nome_disciplina from disciplina, turma_aluno, turma where disciplina.cod_disciplina=turma_aluno.cod_disciplina and turma.num_turma=$ano_select";
$result2 = mysqli_query($conexao,$sql1);
$linhas2 = mysqli_num_rows($result1);
?>
</td>
<td>
<?php
for ($i=0; $i <$linhas2; $i++){
echo '<tr> <td><font face="verdana" size="-2">' .$sql2['nome_disciplina']. '</td></font>';
}}
?>


O principal problema com que me deparo é que quando selecciono um valor da 2ª combo ele como que me faz "reset" aos valores seleccionados! Creio ter a ver com o meu metodo getstates definido no script...

Tenho que criar outro script independente do usado na 1ª combo? Ou o mesmo serve para várias combos?

Abraços
 
Back
Topo