Ir para conteúdo
Fórum Script Brasil
  • 0

Realizar pesquisa no banco usando um array


julio.lage

Pergunta

Bom dia, pessoal
 
Preciso pegar um texto ou frase passado por um campo "text" e fazer uma pesquisa na qual retornará e exibirá imagens correspondentes às palavras digitadas. Estou usando "explode" para armazenar as palavras digitas num array e posteriormente realizar a pesquisa porém não acontece nada. Poderiam me ajudar?
OBS. A tabela no banco chama-se "associacao" e possui os campos "id", "palavra", "imagem".

 

 
<?php
include "conecta_db.php";
?>
<html>
<head></head>
<body>
<div>
             
        <h1> Teste com a função explode</h1>
        <form action="explode.php" method="POST">
            <div>
            <label>Digite o texto:</label><br>
            <input type="text" name="txtMensagem">
            </div>
            <input class="bt" type="submit" value="Enviar">
        </form>
    <div>
    
 <?php
    if($_POST){
           $texto = $_POST['txtMensagem'];
                $palavras = explode(" ", $texto);
                //Usando o comando "foreach" concateno os dados de cada posição deste array
                //afim de criar a condição que será passada para o comando SQL
 
                //Variável que guardará a condição
                $cond = null;
                foreach($palavras as $ids){
                                     $cond = $ids.','; //coloco uma vírgula após cada posição lida
                                    }
                //Pegamos o tamanho da variável "$cond"
                $size = strlen($cond);
                //Retiro a vírgula qu eficou no final da string e tenho a condição completa
                $condicao = substr($cond,0,$size-1);
                
                //A query fica assim:
                $sql=mysql_query("select * from associacao where palavra in($condicao)");
                
                while($row = mysql_fetch_array($sql)) {
                                                 // Escreve o valor da coluna imagem (que está no array $row)
                                                 echo $row['imagem'] "<br />";
 
                                                }
               }
?>
 
    </div>
    </div>
    </body>
</html>

 

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Devolve algum erro ou simplesmente não acontece nada?

Já fizeste um echo da variável $condicao para verificar que está tudo correcto?

Já agora, não deves usar a biblioteca mysql para aceder a bases de dados pois já não é mantida na versão actual do MySQL. Usa mysqli ou PDO.

Link para o comentário
Compartilhar em outros sites

  • 0

De cara você pode trocar tudo isso:

$cond = null;
foreach($palavras as $ids){
                     $cond = $ids.','; //coloco uma vírgula após cada posição lida
                    }
//Pegamos o tamanho da variável "$cond"
$size = strlen($cond);
//Retiro a vírgula qu eficou no final da string e tenho a condição completa
$condicao = substr($cond,0,$size-1);

Por:

$condicao = "'" . implode("','", $palavras) . "'";

O implode colocará uma aspa simples, uma vírgula e outr aaspa simples entre as palavras.
Eu concateno com aspas também, pois as strings no MySQL precisam estar entre aspas.
 

Depois disso dê um echo em seu SQL, veja como ficou, copie em um cliente (como o MySQL Workbench ou phpMyAdmin) e veja se ele executa.

Editado por MLeandroJr!
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...