Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa tarde.
To montando um sistema de visitas.
Tenho um form que tem o ID de um CLIENTE, que vem em um FORM SELECT e neste mesmo form, tenho o campo hidden que pega data atual para inserir na tabela RELATÓRIO FINAL
vamos supor..
ID PRODUTO
1 CLIENTE1
2 CLIENTE2
3 CLIENTE3
Eu seleciono o cliente 1, preencho uma informação que tenho q preencher e insiro. até ai legal, funciona...
Sò que quando ele inseri a informação ele volta para a página de cadastro, ai queria ELIMINIAR O CLIENTE1 da lista do form select pelo fato do mesmo já ter sido inserido naquela data.
O FORM SELECT puxa os nomes e o id's do cliente das tabela CLIENTES, e deveria consultar a tabela RELATÓRIO FINAL, ver se algum dos clientes já foram visitados e inseridos os dados na DATA ATUAL e se já VISITADO ele elimina da listagem do FORM SELECT, caso não tenha sido registrado nenhuma visita ele mostra todos normalmente até que sejam registrados e eliminados.Giesta, ai vai o códio do FORM SELECT...
<select name="idpiscinaespelho">
<option value="01">- - Selecione - -</option>
<?php
$conexao = mysql_connect("dbmy0044.whservidor.com", "qualytratu_2", "xxxx") or die ('Erro na conexão.');
mysql_select_db("qualytratu_2", $conexao);
$sql = "SELECT idp, idcondominio, nomepiscinaespelho FROM piscinasespelhos WHERE idcondominio='$codigo'"; //FUNCIONA
//$sql = "SELECT * FROM piscinasespelhos FULL OUTER JOIN relatoriofinal
//ON piscinasespelhos.idp = relatoriofinal.idpiscinaespelho
//WHERE relatoriofinal.dataehora = CURRENT_DATE() AND idcondominio='$codigo'";
$qry = mysql_query($sql, $conexao);
while ($dados=mysql_fetch_array($qry)) {
$selecionado=$dados['idp']==$_POST['nomepiscinaespelho']?" selected":null;
echo "<option value=\"$dados[idp]\" $selecionado>$dados[nomepiscinaespelho]</option>";
}
?>
</select>$sql="SELECT * FROM piscinasespelhos.piscinas, realtoriofinal.relatorio WHERE piscinas.ipd=relatorio.idpiscinasespelhos AND relatorio.dataehora=current_date() AND piscinas.idcondominio=$codigo";Isso? '-'
A dúvida é sobre MySQL, não vou utilizar as tags do PHP. Nunca fiz uso do OUTER JOIN, portanto não sei como funciona especificamente.
Mas vamos analisar:
SELECT *
FROM piscinasespelhos # tabela de clientes
FULL OUTER JOIN relatoriofinal # tabela de clientes visitados
ON piscinasespelhos.idp = relatoriofinal.idpiscinaespelho # relacionamento entre as tabelas
WHERE
relatoriofinal.dataehora = CURRENT_DATE() # filtra o relatório para exibir somente esta data (atual)
AND idcondominio='$codigo' # id do condominio
A tabela piscinaespelhos contém o cadastro de todos os clientes e a tabela relatoriofinal, como o próprio nome já diz, contém o relatório final de clientes visitados.
Como não sei como o OUTER JOIN funciona na prática, e sei que com LEFT JOIN funciona, e inclusive, você pode executar uma consulta no lugar destas duas, portanto, farei esta substituição.
Primeiro a SQL para exibir todos os campos necessários da tabela piscinaespelhos:
SELECT
p.idp,
p.idcondominio,
p.nomepiscinaespelho
FROM piscinasespelhos AS p # tabela de clientes sob o ALIAS (apelido) p
WHERE
p.idcondominio='$codigo' # id do condominio
O LEFT JOIN verifica o relacionamento entre a tabela principal e a tabela secundária, priorizando a tabela a esquerda (no nosso caso será a tabela piscinasespelho), retornando todos os registros da tabela prioritária e somente os registros da tabela secundária se houver algum relacionamento (a tabela secundária será a tabela relatoriofinal, se não filtrarmos data, todas as visitas já cadastradas na tabela secundária serão exibidos).
SELECT
p.idp AS idpiscina,
p.idcondominio AS idcondominio,
p.nomepiscinaespelho AS nome,
r.dataehora AS horariovisita,
IF( r.idpiscinaespelho IS NULL, 'nao', 'sim' ) AS visitado
Esta seria a SQL no meu entendimento, é interessante que comente a linha 12 ("AND r.dataehora = CURRENT_DATE()") para ver o que seria exibido sem informar a data.
Lokodomau, WictorP e Giesta,
Obrigado pela prontidão em me ajudar...
Deixa eu explicar de uma forma mais simples...
Tenho a página cadastro.php, onde tenho o FORM SELECT que puxa da tabela "piscinaseespelhos" as piscinas e/ou espelhos cadastrados em um certo ID PRIMÁRIO de um cliente.
Ele puxa as informações corretamente, porém essa página de cadastro é uma página de cadastro de vistoria.
Portanto eu precisava que, toda vez que a página cadastro.php fosse aberta, o FORM SELECT antes de mostrar os valores da tabela "piscnaseespelhos" do determinado cliente, ele consultasse se algumas dessas piscinas ou espelhos já teriam sido vistoriadas no dia atual.
Caso vistoriadas, ele eliminaria o resultado.
Caso não, ele deixaria a disposição para que fosse feito a vistoria.
Acredito que tenha facilitado neh rs
acredito que seja uma duvida mto mais relacionada a php que ao banco.
Irei mover o topico.
Na verdade pode se fazer tanto com PHP quanto por SQL...
Vamos fazer uma suposição aqui...
Hierarquia das tabelas
TABLE piscinas
ID PISCINA APARTAMENTO
//
TABLE piscinas_vistas
ID PISCINA DATA Em SQL...
SELECT * FROM piscinas.piscinas, piscinas_vistas.vistas WHERE vistas.piscina=piscinas.id AND data=(função strtotime)
http://php.net/manual/pt_BR/function.strtotime.php
Em PHP...
$sql = mysql_query("SELECT * FROM piscinas ORDER BY id DESC");
while($ver = mysql_fetch_array($sql)) {
$consulta = mysql_query("SELECT * FROM piscinas_vistas WHERE piscina='".$ver['id']."' AND data=(função strtotime)");
if(mysql_num_rows($consulta) == 0) {
// retorna se não tiver sido visto
}else {
// retorna se tiver sido visto
}
}Boa noite,
Rapaz, você poderia criar um outra tabela que guardasse estes vistoriados e ai faria mais ou menos assim
<select required >
<option></option>
<?php
while($row = $primeiroArray ->fetch_assoc())
{
$query = mysql_query("SELECT *FROM vistoriados WHERE produto_id =".$row['id_produto']);
while($r = $query ->fetch_assoc())
{
$mostra .= "<option value=' ".$row['id_produto']." '>".$row['produto_nome']."</option>";
}
}
echo $mostra;
?>
</select>Opaa... Conseguimos...
ai vai a cura para este mau rs
abraços...
$sql2 = "SELECT idp, idcondominio, nomepiscinaespelho
FROM piscinasespelhos
WHERE
idp NOT IN(
SELECT idpiscinaespelho FROM relatoriofinal
WHERE dataehora = CURDATE()
)
Poderia postar a consulta do "FORM SELECT"?