0

Duvida em um While e JOINN no formulario

criado por Cleverton em 29/09/2011 3:09pm
Bom galera eu estou presisando de uma ajuda aqui estou fazendo um formulario que é o seguinte eu tenho 3 tabelas associadas do banco assim :

<select name="curso" class="text_form" id="curso"onblur="">
<?
$sql= mysql_query("SELECT c.id_curso as idCurso, c.descricao as descricaoCurso, p.descricao as periodoDescricao, h.descricao as descricaoHoras
FROM cursos c INNER JOIN periodo p ON c.id_periodo = p.id_periodo INNER JOIN horas h ON p.id_horas = h.id_horas AND ativo = 'A' AND c.regional = 1");
while ($linha = mysql_fetch_array($sql)) {

?>
<option value="<? echo $linha['idCurso'];?>"><? echo $linha['descricaoCurso'];?></option>

<?}?>
Apos selecionar o curso, vai aparecer em 2 campos a data e a hora em dois campos de texto. Só que não estou conseguindo arrumar uma maneira do resultado do select puxe "periodoDescricao" e o descricaoHoras. Não sei se expliquei certo mais é isso. Valeu ai.

Lista de Respostas:

0
30/09/2011 3:08pm
(~6 anos atrás)
Jayme A. C. Gimenez respondeu:
E os dados da tabela cursos estão vindo normalmente? Ou não aparece nada?

Mesmo que vc use os nomes completos das tabelas, e tire aqueles AND estranhos do final, o problema continua? Tipo:

$sql= mysql_query("SELECT cursos.id_curso as idCurso, cursos.descricao as descricaoCurso, periodo.descricao as periodoDescricao, horas.descricao as descricaoHoras
FROM cursos
INNER JOIN periodo ON cursos.id_periodo = periodo.id_periodo
INNER JOIN horas ON periodo.id_horas = horas.id_horas") or die(mysql_error());

0
04/10/2011 10:48am
(~6 anos atrás)
cleverton respondeu:
Os dados da tabela cursos vem normalmente popula o select do html tranquilamente. Bom o que quero fazer é o seguinte fera ao selecionar por exemplo curso 1 som um select parecido com de estado e cidade ele traga o restante das informaçoes das outras tabelas exemplo (Curso 1 aparece no select) ao selecionar ele apareça a sua descricao de periodo e de horas em campos de input text no html. Bom é isso obrigado

Entrei com este login prq perdi o outro =S

0
04/10/2011 11:15am
(~6 anos atrás)
Jayme A. C. Gimenez respondeu:
Bom, se entendi bem, o que vc quer fazer é uma coisa simples. Veja se entendi:
1) Uma página mostra uma combobox para o usuário selecionar um curso.
2) Ao selecionar um curso e clicar no submit, vc quer mostrar os dados desse curso selecionado, dados que estão em tabelas assessórias no bd.

Se for isso, só estaria faltando vc colocar um WHERE naquela query que lhe sugeri. Algo assim:

$sql= mysql_query("SELECT cursos.id_curso as idCurso, cursos.descricao as descricaoCurso, periodo.descricao as periodoDescricao, horas.descricao as descricaoHoras
FROM cursos
INNER JOIN periodo ON cursos.id_periodo = periodo.id_periodo
INNER JOIN horas ON periodo.id_horas = horas.id_horas
WHERE cursos.id_curso = $id_selecionado_na_combobox") or die(mysql_error());

Seria isso?

0
04/10/2011 11:35am
(~6 anos atrás)
cleverton respondeu:
Bom acho que isso vai esclarecer um pouco. Dessa maneira que esta ai so me traz o curso no select os inputs ficam vazios.
<tr>
<td width="126" height="35"><span class="text_form">Nome do Curso:</span><span class="obrigatorios">*</span></td>
<td width="574">
<select name="curso" class="text_form" id="curso" >
<?
$sql= mysql_query("SELECT c.id_curso as idCurso, c.descricao as descricaoCurso, p.descricao as periodoDescricao, h.descricao as descricaoHoras
FROM cursos c INNER JOIN periodo p ON c.id_periodo = p.id_periodo INNER JOIN horas h ON p.id_horas = h.id_horas AND ativo = 'A' AND c.regional = 1");
while ($linha = mysql_fetch_array($sql)) {

?>
<option value="<? echo $linha['idCurso'];?>"><? echo $linha['descricaoCurso'];?></option>

<?}?>
</select>
</td>
</tr>
<tr>
<td height="10"></td>
<td height="10" id=""></td>
</tr>
<tr>
<td height="35"><span class="text_form">Data:<span class="obrigatorios">*</span></span></td>
<td><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="216">
<input name="data" type="text" class="formtxt" id="data" value="<?echo($periodoDescricao);?>" onblur="this.style.backgroundColor='#ffffff'" onfocus="this.style.backgroundColor='#e3f0f3'" /></td>
<td width="28">&nbsp;</td>
<td width="58">Horário:</td>
<td width="268"><input name="horario" type="text" class="formtxt" value="<?echo($descricaoHoras);?>" id="horario" onblur="this.style.backgroundColor='#ffffff'" onfocus="this.style.backgroundColor='#e3f0f3'" /></td>
</tr>
</table></td>
</tr>

0
04/10/2011 11:41am
(~6 anos atrás)
cleverton respondeu:
Se faço desta maneira setando os campos de periodoDescricao e descricaoHoras dos inputs preechem mais não ao selecioanr o curso ficam parados, não dinamicos ao selecionar um curso.
while ($linha = mysql_fetch_array($sql)) {

$idCurso =$linha['idCurso'];
$descricaoCurso=$linha['descricaoCurso'];
$periodoDescricao=$linha['periodoDescricao'];
$descricaoHoras=$linha['descricaoHoras'];
?>
<option value="<? echo $linha['idCurso'];?>"><?echo$linha['descricaoCurso'];?></option>

<?}?>

0
04/10/2011 10:35pm
(~6 anos atrás)
Jayme A. C. Gimenez respondeu:
Esquece, por um momento, a sua combobox (esquece isso, <select name="curso" class="text_form" id="curso" > , agora) e me responde:

Essa sua query, se vc simplesmente dá echo no resultado dela, ela mostra ou não mostra tudo o que ela deveria mostrar?

Pergunto isso pelo seguinte:

1) Se sua query, nessa tarefinha simples que estou lhe propondo, não listar tudo o que ela deveria listar, seu problema está na query.

2) Agora, se ela lista tudo, seu problema pode estar ou na combobox ou nos scripts posteriores que trabalhariam os dados da combobox (sei que vc está se esforçando, mas ainda não ficou claro que tipo de combobox vc está querendo: aquelas simples, só com PHP, ou aquelas mais complicadas, com Ajax / JavaScript, nas quais vc não precisa recarregar a página para mostrar, por exemplo, as cidades depois que selecionamos um estado).

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)