Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vinicius015

Menu Drop-Down com dados do banco

Recommended Posts

Pessoal, bom dia! To com um problemnas a uns dias e ta me impedindo de entregar o sistema.

Vejam se podeem me ajudar...


ANtes de mais nada, explicarei, é um sistema e cadastro de vistorias diárias para piscinas.


Tenho um cadastro de clientes e tenho um cadastro de piscinas que ligo elas ao ID do cliente, certo?


Agora, a parte onde empaquei...


Tenho uma página dos cadastro das vistorias, que após dar submit enviará os dados a tabela RELATÓRIO FINAL, nesta página tenho um menu drop-down(suspenso/select) que puxa da tabela "piscinas" as piscinas com o id de referencia 20142014 (que também é o id de cadastro do cliente). Então no caso tenho assim....


TABELA - CLIENTES

ID - 20142014

NOME CLIENTE - Dona Maria


e tenho a TABELA PISCINAS

ID - 01

IDP - 20142014

NOME - PISCINA QUENTE


ID - 02

IDP - 20142014

NOME - PISCINA CRIANÇAS


Quando abre o menu drop-down(suspenso/select), ele me mostra:

PISCINA QUENTE

PISCINA CRIANÇAS


Uso esta consulta SQL para que ele abra os resultados para mim:

$sql = "SELECT idp, idcondominio, nomepiscinaespelho FROM piscinasespelhos WHERE idcondominio='$codigo'";


Só que ai, ela esta consultando a tabela das PISCINAS (nome verdadeiro "piscinasespelhos"), eu queria saber, de qual forma faria para que ele fizesse assim...


Antes de puxar as piscinas neste (menu dop-down/suspenso), ele consultasse na tabela RELATÓRIO FINAL se já existe a piscina cadastrada lá.


Quando abro a página de cadastro de vistoria, ele me mostra o nome da piscina, mas o valor que incluo na tabela é o do ID, no caso, um exemplo:

PISCINA QUENTE - 01, queria que ele comparasse.


PISCINA QUENTE, ID 01, este id já esta cadastrado na tabela RELATÓRIO FINAL no campo idpiscina no dia de hoje? Se SIM, ele sumiria do menu drop-down, se NÃO, ele mostraria o resultado neste menu.


No caso, a cada vistoria que faço, o sistema inclui e volta na página de vistoria, ai toda ves ele viria eliminando a PISCINA na qual já foi feita a Vistoria.


Desde já obrigado,


Se caso alguém quiser dar consultoria nao tem problema, estou precisando mesmo terminar isto que é de um amigo meu.


Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema pode ser resolvido somente com a string certa de SQL. Uma String chatinha mas que vai te dar um ótimo resultado, segue abaixo um exemplo para você ter uma ideia.

SELECT * FROM tabela_1 campo_1 JOIN tabela_2 campo_2 ON (campo_2.referencia = campo_1.id) WHERE campo_2.referencia='$dado' ORDER BY campo_2.id

Aqui estamos relacionando duas tabelas. Estou buscando dados em uma tabela com base em um campo da outra,

na época não encontrei essa dica em forum nenhum, mais é só pensar que consegue usar essa string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

caso essa string não funcione, tente criar uma função para a busca.

 

No caso ela pegaria os dados da vistoria e os confrontaria com o relatório.

e pedir apenas os campos null, no caso os que não foram encontradas no relatório final.

Compartilhar este post


Link para o post
Compartilhar em outros sites

RenpanVil, obrigado pela ajuda...

 

Fiz da forma como instrui e não consegui, nem os resultados básicos ele puxou.

 

Poderia me auxiliar? Abaixo copio o código...

$sql = "SELECT *
FROM piscinasespelhos AS p JOIN relatoriofinal AS r
ON (r.idpiscinaespelho = p.idcondominio)
WHERE r.idpiscinaespelho='$idpiscinaespelho'
ORDER BY p.idcondominio";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz me desculpe gente, agora eu oi com atenção oque você quer.

 

Veja se entendei corretamente, você quer que em uma página onde tem um formulário você possa puxar as piscinas desse cliente que está sendo citado no formulário. É isso?

 

Se for as perguntas são:

 

1 - Há outro select onde você tem que selecionar o cliente, para ai sim selecionar a piscina?

2 - Você pretende fazer esse formulário em uma única etapa ou pode ser mais de uma tela?

 

1 - Sim porque veja bem, para fazer com que ao escolher um cliente no primeiro select os nomes da piscina já estejam a mão você vai precisar fazer um select total no inicio desse form para um array, e dependendo de qual cliente for o próximo select só libera as piscinas desse cliente, uma solução interessante mais vai demandar JavaScript.

 

2 - Se optar por ter mais de uma etapa pode fazer a primeira com a escolha de de cliente e alguns outros dados, e ao clicar em submit vai para outro form onde você já pode fazer uma consulta na sua tabela de piscinas para pegar as piscinas disponíveis daquele cliente e ao clicar no submit novamente vai para o banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Renpanvil,

 

Nesta página eu tenho um select(menu suspenso) que nele tem uma consulta sql que puxa os nomes das piscinas cadastradas para este cliente (este select já possuo.. segue abaixo:

$sql = "SELECT idp, idcondominio, nomepiscinaespelho
FROM piscinasespelhos
WHERE idcondominio='$codigo'"; //FUNCIONA

Então, para o cliente 20142014 tenho a piscina2014-1 / piscina2014-2 / piscina2014-3

 

Quando eu cadastro uma vistoria, que é enviado os dados para a tabela relatoriofinal, vamos supor selecionei a piscina2014-2 e registrei os dados dela, o form envia os dados para uma página que faz o INSERT dos dados na tabela relatoriofinal. e automaticamente ele volta página de vistorias novamente para que ele possa fazer o cadastro de uma nova vistoria, só que ai, queria q a piscina2014-2 (que já fi a vistoria), sumisse do select, para evitar que os funcionários fizessem uma vistoria novamente desta piscina.

 

compreende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já entendi vamos ao código.

 

Pelo que entendi o cliente já está cadastrado nesse formulário então vaos utilizar o id dele para selecionar as piscinas e printar um looping par ao select

 

select para pegar as piscinas desse cliente(vou fazer em mysql_ porque vejo que é como você está utilizando):

<select name="classe" value="">

<?php
    //selecionando somente as piscinas do cliente na tabela piscinas
    //utilizando o id do cliente para o select $idcliente
    $query = "SELECT * FROM `piscinasespelhos` WHERE `idcondominio` = $idcliente ORDER BY id";
    $sql = mysql_query($catquery);

    while($reg = mysql_fetch_array($sql)){
        //aqui ele vai imprimir todas as piscinas 
        //que foram pegas atraves do id do cliente
        echo "<option>".$reg['nomepiscina']."</option>";
    }
?>

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repanvil,

 

É isso mesmo.. deu certo, só que agora ele mostra todas as piscinas, mas quando faço a vistoria de uma certa piscina. Ele irá incluir a mesma na tabela de relatório.

 

Só que quando acessar novamente a página de vistoria, queria que a piscina que já incluímos na data de hoje fosse eliminada do menu para que não haja uma dupla vistoria na mesma piscina.

 

E que ela só reaparecesse amanhã, então teria que ter um comparativo se a mesma foi cadastrada no dia de hoje...

 

Desde já obrigado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vendo alguns exemplos, fiz desta forma:

 

$sql2 = "SELECT idp, idcondominio, nomepiscinaespelho
FROM piscinasespelhos
WHERE
idp NOT IN(
SELECT idp FROM relatoriofinal
WHERE dataehora = CURDATE()
)
AND
idcondominio='$codigo'";

mas mesmo assim ainda não consegui o resultado =/
Caso alguém possa ajudar, agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o campo é DATETIME, use a função DATE(coluna) para filtrar somente o dia, caso contrário o banco entenderá que quer consultar tudo que seja no dia de hoje á meia noite (2015-08-18 = 2015-08-18 00:00:00).

 

Exemplo:

SELECT NOW() AS agora, DATE(NOW()) AS agora_convertido_em_hoje, CURDATE() AS tambem_hoje, CONVERT(CURDATE(), DATETIME) AS curdate_convertido_para_datetime

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, consegui com ajuda de um brother... mais a ajuda do Renpanvil, consegui.,...

 

 

Obrigado a todos...

$sql2 = "SELECT idp, idcondominio, nomepiscinaespelho
FROM piscinasespelhos
WHERE
idp NOT IN(
     SELECT idpiscinaespelho FROM relatoriofinal
     WHERE dataehora = CURDATE()
     )
AND
idcondominio='$codigo'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.