thiagosvl 1 Denunciar post Postado Outubro 30, 2015 Boa tarde! Estou montando um sistema de busca PHP e até então está da seguinte forma: <?php $busca = $_POST["busca"]; $procura = "+" . $busca; $procura_textos = mysqli_query($conecta, "SELECT * FROM conteudo WHERE MATCH(titulo,texto) AGAINST('" . $busca . "' IN BOOLEAN MODE)"); while($textos = mysqli_fetch_object($procura_textos)) { echo '<div class="textos">'; echo '<div class="cadaTexto"><div class="titulo-textos"><a href="textosC.php?id='.$textos->id.'">'.$textos->titulo.'</a></div>'; echo (limitarTexto('<div class="texto"><pre>'.$textos->texto.'</pre></div>', $limite = 450)); echo '<a class="linkTextoCompleto" href="textosC.php?id='.$textos->id.'">'.'Clique para ler +'.'</a></div></div>'; echo '<div class="clear">'.'</div>';} ?> Tenho um banco de dados que serve a três páginas, que são elas: DICIONARIO, TEXTOS E PONTOS. O banco tem a seguinte estrutura: ID - id de cada POSTAGEM ID_CATEGORIA - QUE SERÁ DICIONARIO, TEXTOS OU PONTOS ID_DICIONARIO - SERVE PARA O MENU ID_PONTOS - SERVE PARA O MENU TITULO - ... TEXTO .. AUTOR .. VISUALIZAÇÕES .. DATA .. PLAY - CARREGA VIDEO DO YOUTUBE DOWNLOAD - LINK PARA O DOWNLOAD DA MUSICA A listagem com ó codigo PHP lá de cima acontece e lista todos os itens procurados, mas eu gostaria de impor condições, por exemplo: Quando eu pesquisar 'forum', provavelmente ele estará na página TEXTOS ou na página DICIONARIO e dificilmente na página PONTOS, ou seja, não será preciso carregar o CAMPO PLAY e nem o campo DOWNLOAD. Caso eu procure um trecho de uma música, a estrutura para cada post deve seguir o mesmo que a página PONTOS segue, que é carregar o download, o play.. No código a estrutura é sempre a mesma, e isso complica.. Como agir? desde já, agradeço! Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Outubro 30, 2015 se vc tiver suas condições definidas, basta criar if's e montar sua query dentro deles, depois executa. Ex: if($condicao == 1){ $sql = "SELECT coluna1, coluna3, coluna5 FROM tabela;"; } else if($condicao == 2){ $sql = "SELECT coluna1, coluna2, coluna10 FROM tabela;"; }... else if($condicao == N) $sql = "SELECT colunax FROM tabela;"; } else{ //cria uma consulta padrão, que pode ser a geral por exemplo $sql = "SELECT * FROM tabela;"; } $procura_textos = mysqli_query($conecta,$sql); while... Compartilhar este post Link para o post Compartilhar em outros sites
thiagosvl 1 Denunciar post Postado Outubro 30, 2015 A situação pra mim parece tão complexa que pra falar a verdade eu não consigo nem explicar.. Do jeito que você explicou, a pesquisa vai caindo em cada condição $sql e a que correspoder ele executa? Mas e se no caso for encontrado o resultado em duas categorias, os dois serão exibidos? Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Outubro 30, 2015 Por isso que falei, vc precisa definir suas condições. Mas ele sempre vai executar somente uma das condições. Caso a primeira condição seja aceita, ele ja encerra as verificações e executa a query. Vc só precisar usar uma boa lógica para definir suas condições de busca :D Compartilhar este post Link para o post Compartilhar em outros sites
thiagosvl 1 Denunciar post Postado Outubro 30, 2015 Com o seguinte codigo, como eu faço para dizer que na condição 1 os 'echos' serão diferentes em cada $sql ? No caso, esse echo que a seguir seria para TEXTOS, e eu preciso de uma estrutura while diferente para DICIONARIO e outra para PONTOS.. <?php $busca = $_POST["busca"]; $procura = "+" . $busca; if($condicao == 1){ $sql = "SELECT * FROM conteudo WHERE MATCH(titulo,texto) AGAINST('" . $busca . "' IN BOOLEAN MODE)" ; } else if($condicao == 2){ $sql = "SELECT coluna1, coluna2, coluna10 FROM tabela;"; } else if($condicao == N){ $sql = "SELECT colunax FROM tabela;"; } else{ //cria uma consulta padrão, que pode ser a geral por exemplo $sql = "SELECT * FROM conteudo WHERE MATCH(titulo,texto) AGAINST('" . $busca . "' IN BOOLEAN MODE)"; } $procura_conteudo = mysqli_query($conecta, $sql); while($textos = mysqli_fetch_object($procura_conteudo)) { echo '<div class="textos">'; echo '<div class="cadaTexto">'; echo 'A categoria é '.'<b style="color:red">'.$textos->id_categoria.'</b>'; echo '<div class="titulo-textos"><a href="textosC.php?id='.$textos->id.'">'.$textos->titulo.'</a></div>'; echo (limitarTexto('<div class="texto"><pre>'.$textos->texto.'</pre></div>', $limite = 300)); echo '<a class="linkTextoCompleto" href="textosC.php?id='.$textos->id.'">'.'Clique para ler +'.'</a></div></div>'; echo '<div class="clear">'.'</div>';} ?> Compartilhar este post Link para o post Compartilhar em outros sites
thiagosvl 1 Denunciar post Postado Novembro 1, 2015 É assim que cada post está aparecendo com a estrutura atual: echo '<div class="textos">';echo '<div class="cadaTexto">';echo 'A categoria é '.'<b style="color:red">'.$textos->id_categoria.'</b>';echo '<div class="titulo-textos"><a href="textosC.php?id='.$textos->id.'">'.$textos->titulo.'</a></div>';echo (limitarTexto('<div class="texto"><pre>'.$textos->texto.'</pre></div>', $limite = 300));echo '<a class="linkTextoCompleto" href="textosC.php?id='.$textos->id.'">'.'Clique para ler +'.'</a></div></div>'; echo '<div class="clear">'.'</div>';} Sendo que os posts de música devem aparecer com uma formatação diferente, que no caso seria: echo '<div class="pontos"><div class="titulo-pontos">'.$row['titulo'].'</div>';echo '<div class="Flexible-container-pontos">'.$row['play'].'</div>'; echo '<div class="ponto-pontos"><pre>'.$row['texto'].'</pre></div>';echo '<a href="'.$row['download'].'" target="_blank">Download<label class="icon-download"></label></a></div>';echo '<div class="clear">'.'</div>';} Ficando da seguinte forma: Compartilhar este post Link para o post Compartilhar em outros sites
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 2, 2015 vc pode criar cada estrutura dentro dos if's, de acordo com as condições que determinar Compartilhar este post Link para o post Compartilhar em outros sites