Jump to content
Fórum Script Brasil
  • 0

Realizar pesquisa no banco usando um array


julio.lage
 Share

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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.

Edited by MLeandroJr!
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...