Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal eu ja fiz de tudo para remover a duplicidade do banco de dados.
No começo ele está vindo em varios Checkbox que é selecionado em "Bairros" e utilizei como Array
for($m=0; $m<count($_POST["bairros"]); $m++){// LOOP 1
$pesquisar=($_POST["bairros"][$m]);
//Resgate do bairros(Array) e esporte (POST)
$query = "SELECT DISTINCT * FROM cadastro WHERE
(esporte1 = '".$_POST["esportes"]."' OR
esporte2 = '".$_POST["esportes"]."' OR
esporte3 = '".$_POST["esportes"]."' OR
esporte4 = '".$_POST["esportes"]."')
AND
(bairro1 = '".$pesquisar."' OR
bairro2 = '".$pesquisar."' OR
bairro3 = '".$pesquisar."' OR
bairro4 = '".$pesquisar."')
AND
ativarAparecer='sim' ORDER BY nomeCompleto ASC LIMIT 20";
$esporte= new consultar();
$esporte->executa($query);
//Loops resgatados
for($l=0; $l<$esporte->nrw; $l++){ //LOOP 2
echo $esporte->data["nomeCompleto"]."<br />";
$esporte->proximo();
}//Fecha LOOP2
}//Fecha LOOP1
* Destalhe essa função está orientação objeto.. Estou achando que estou errando no SQL no MYSQL falta algo ai
Alguem me ajuda?
Valeu
>
Essa modelarem está errada.
Campos: esporte1, esporte2, esporte3, esporte4 e bairro1, bairro2..
Vamos modelar novamente essa entidade, seguindo as formas normais ?
Olá amigo obrigado pela mensagem.
O POST esporte e importante pois é selecionado com "input radio" um esporte, o que vale mesmo são os bairros que imprimir varios esportes para este bairro, no momento está duplicando.
Acho que foi está dúvida?
Obrigado!
O que o @William quis dizer é que sua modelagem pode ser diferente, e isso pode sanar seu problema.
Acho. :closedeyes:
Ao invés de usar diversos campos esporte1, 2... crie uma tabela separada (ex: tbl_esporte), e depois uma tabela interligando o cadastro ao esporte (ex: tbl_esporte_cadastro).
Exato @Maykel-ctba.
Essa tabela com colunas "duplicadas" é a causa do seu problema, @newtwin.
Modelando essa tabela seguindo as Formas Normais o seu problema se resolverá.
Olá tenho isso no meu banco de dados
Pensei em fazer o GROUP
Eu não sei se a minha logica está certo.
Tente fazer assim antes de enviar para busca.
for($m=0; $m<count($_POST["bairros"]); $m++){
$pesquisar=($_POST["bairros"][$m]);
}
$query = "SELECT DISTINCT * FROM cadastro WHERE
(esporte1 = '".$_POST["esportes"]."' OR
esporte2 = '".$_POST["esportes"]."' OR
esporte3 = '".$_POST["esportes"]."' OR
esporte4 = '".$_POST["esportes"]."')
AND
(bairro1 = '".$pesquisar."' OR
bairro2 = '".$pesquisar."' OR
bairro3 = '".$pesquisar."' OR
bairro4 = '".$pesquisar."')
AND
ativarAparecer='sim' GROUP BY bairro1,bairro2,bairro3,bairro4 ORDER BY nomeCompleto ASC LIMIT 20";
bairro1 | bairro2 | bairro3 | bairro4
14 | 14 | 15 | 27
34 | 15 | 14 | 30
27 | 45 | 12 | 14
Explique o que é essa aplicação, e pq vc tem 4 bairros e 4 esportes.
Ai iremos te sugerir a modelagem correta, com a solução final na query.
Olá amigo eu tenho uma tabela com varias colulas e uma delas tem 4 esportes e 4 bairros
Selecione Esporte (Tenis) depois Bairros (Moema + Morumbi e Campo Belo) clique em pesquisar, Verifique que está duplicando varias vezes RPTenis
No html está usando input radio (Apenas seleciona um esporte)
esporte1 | sporte2 | esporte3 | esporte4
Bairros você seleciona varios usando checkbox
bairro1 | bairro2 | bairro3 | bairro4
14 | 14 | 15 | 27
34 | 15 | 14 | 30
27 | 45 | 12 | 14
E resultado como já mostrei acima, ele funciona mas está publicando.
Amigo muito super obrigado se quiser me adicionar no skype é conseld
Valeu!!
você precisa então de 3 tabelas:
TABLE bairros
id, nome
TABLE esportes
id, nome
TABLE esporte_bairro
id_bairro, id_esporte
Que é exatamente o que o @Maykel-ctba disse.
Em vez de tentar fazer tudo em uma única tabela, o correto é você Normalizar e usar o SQL corretamente.
Olá amigo a sua dica é interessante.
Uma dúvida vou ter duas tabelas uma esporte e outra bairros
Na hora de conectar as tabelas tenho que usar o INNER JOIN.
No meu esquema aqui só precisa cadastrar 4 esportes e 4 bairros.
Obrigado
Selecionando apenas um esporte
SELECT cad.*, ces.*, esp.* FROM cadastro cad, cadastro_esporte ces, esporte esp
WHERE ces.cadastro_id = cad.id
AND ces.esporte_id = esp.id
AND esp.esporte_id = 1 // * ID de esporte 1: Futebol, por exemplo
Trará todos os registros com seus característicos esportes. No exemplo, só futebol.
Você pode usar JOIN se quiser para unir tudo em uma linha, por exemplo. Tudo tem que testar!
No meu esquema aqui só precisa cadastrar 4 esportes e 4 bairros.
vc está subestimando a aplicação. E isso é um erro do ponto de vista de negócios.
Se amanhã precisarem ser 5, ou 6, vc terá que criar novas colunas, e mais gambiarras e mais gambiarras tudo por causa de uma modelagem ruim.
Essa modelarem está errada.
Campos: esporte1, esporte2, esporte3, esporte4 e bairro1, bairro2..
Vamos modelar novamente essa entidade, seguindo as formas normais ?