conseld 0 Denunciar post Postado Abril 9, 2015 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 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 9, 2015 Essa modelarem está errada. Campos: esporte1, esporte2, esporte3, esporte4 e bairro1, bairro2.. Vamos modelar novamente essa entidade, seguindo as formas normais ? Compartilhar este post Link para o post Compartilhar em outros sites
conseld 0 Denunciar post Postado Abril 9, 2015 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! Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Abril 9, 2015 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). Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 9, 2015 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á. Compartilhar este post Link para o post Compartilhar em outros sites
conseld 0 Denunciar post Postado Abril 9, 2015 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 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 9, 2015 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. Compartilhar este post Link para o post Compartilhar em outros sites
conseld 0 Denunciar post Postado Abril 9, 2015 Olá amigo eu tenho uma tabela com varias colulas e uma delas tem 4 esportes e 4 bairros http://www.qesporte.comSelecione 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 é conseldValeu!! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 9, 2015 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. Compartilhar este post Link para o post Compartilhar em outros sites
conseld 0 Denunciar post Postado Abril 10, 2015 Olá amigo a sua dica é interessante.Uma dúvida vou ter duas tabelas uma esporte e outra bairrosNa hora de conectar as tabelas tenho que usar o INNER JOIN.No meu esquema aqui só precisa cadastrar 4 esportes e 4 bairros.Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Abril 10, 2015 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! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Abril 10, 2015 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. Compartilhar este post Link para o post Compartilhar em outros sites