View Full Version : Consultas a Base de Dados nos List Menus (PHP + MySQL)


khaluh
05-06-2007, 13:28
Viva

Estou a fazer um site para ser usado apenas a nível interno (o termo site aqui é um pouco relativo) e então, pretendo ter list menus para ir buscar informação, só que nao sei como o fazer.

Ou seja ( e exemplificando):

* tenho um formulário de inserção (ou de consulta, o procedimento será o mesmo, penso eu), onde os campos a inserir são:

1) itemtipo (onde o itemtipo é um campo a ser consultado na tabela tipo item e pretendo que apareça no list menu os tipos de item constantes na referida tabela)

2) local (onde o local é um campo a ser consultado na tabela local e pretendo que apareça no list menu os locais constantes na referida tabela)

3) forn (onde o forn é um campo a ser consultado na tabela fornecedores e pretendo que apareça no list menu os forrnecedores constantes na referida tabela)

khaluh
06-06-2007, 11:51
Viva

Então, fiz uma pergunta demasiado básica ou impossível de fazer como eu quero?

Eu posso inserir à unha, só que deixa de ser muito dinâmica, já que posso a qualquer altura inserir ou retirar elementos que pretendo que apareçam nos list menu e com as consultas estaria sempre actualizado

p3dro
06-06-2007, 12:56
Viva

Então, fiz uma pergunta demasiado básica ou impossível de fazer como eu quero?

Eu posso inserir à unha, só que deixa de ser muito dinâmica, já que posso a qualquer altura inserir ou retirar elementos que pretendo que apareçam nos list menu e com as consultas estaria sempre actualizado

list menus são dropdowns? se sim, vê se este exemplo te ajuda ...


//fazer ligação à bd

$sql=mysql_query("select id_fornecedor, nome_fornecedor from dados_fornecedores");
while($myrow=mysql_fetch_array($sql)){
$str.="<option value='$myrow[id_fornecedor]'>$myrow[nome_fornecedor]</option>";
}

$str="<select name='id_fornecedor'>$str</select>";

echo $str;

khaluh
06-06-2007, 16:24
Viva

P3dro, muito obrigado.

Era mesmo isto, assim ficou muito mais dinâmico.

Mas agora, com a solução surgiu-me outro problema.

Quero combinar isto:


<tr>
<td width="150">Fornecedor:</td>
<td width="250"><input name="fornecedor" type="text"
id="fornecedor" size="50" maxlength="100" /></td>
</tr>
Com isto:



while($myrow=mysql_fetch_array($sql))
{
$str.="<option value='$myrow[fr_id_forn]'>$myrow[fr_nome]</option>";
}

$str="<select name='fr_id_forn'>$str</select>";

echo $str;

Que quando for tratado pelo form action faça o que?
Que grave o valor do dropmenu na tabela fornecedores e as alterações efectuadas aos campos relativos ao fornecedor.



$nome = $_POST['nome'];
$servico = $_POST['servico'];
$morada = $_POST['morada'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$observacoes= $_POST['observacoes'];
echo "<br>";

$sql = "
UPDATE fornecedores
SET
fr_nome = '$nome',
fr_servico = '$servico',
fr_morada = '$morada',
fr_cont_email = '$email',
fr_cont_tel = $tel;
fr_observacoes = '$observacoes';
WHERE id = $id
";

$resultado = mysql_query($sql) or
die ("Erro ao actualizar dados do fornecedor.");

Pretendo que o que é colocado em $nome seja a selecção do dropmenu

p3dro
06-06-2007, 19:17
Viva

P3dro, muito obrigado.

Era mesmo isto, assim ficou muito mais dinâmico.

Mas agora, com a solução surgiu-me outro problema.

Quero combinar isto:


<tr>
<td width="150">Fornecedor:</td>
<td width="250"><input name="fornecedor" type="text"
id="fornecedor" size="50" maxlength="100" /></td>
</tr>
Com isto:



while($myrow=mysql_fetch_array($sql))
{
$str.="<option value='$myrow[fr_id_forn]'>$myrow[fr_nome]</option>";
}

$str="<select name='fr_id_forn'>$str</select>";

echo $str;

Que quando for tratado pelo form action faça o que?
Que grave o valor do dropmenu na tabela fornecedores e as alterações efectuadas aos campos relativos ao fornecedor.



$nome = $_POST['nome'];
$servico = $_POST['servico'];
$morada = $_POST['morada'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$observacoes= $_POST['observacoes'];
echo "<br>";

$sql = "
UPDATE fornecedores
SET
fr_nome = '$nome',
fr_servico = '$servico',
fr_morada = '$morada',
fr_cont_email = '$email',
fr_cont_tel = $tel;
fr_observacoes = '$observacoes';
WHERE id = $id
";

$resultado = mysql_query($sql) or
die ("Erro ao actualizar dados do fornecedor.");

Pretendo que o que é colocado em $nome seja a selecção do dropmenu


não sei se percebi bem a tua dúvida, pretendes k qdo estiveres a editar um registo a dropdown apareça automaticamente com o nome selecionado anteriormente?

será isto?


while($myrow=mysql_fetch_array($sql)){
$selected=($nome==$myrow["fr_nome"])?"selected":""; //verificar se coincide
$str.="<option value='$myrow[fr_id_forn]' $selected>$myrow[fr_nome]</option>";
}

$str="<select name='fr_id_forn'>$str</select>";

echo $str;