Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

zukinha

Opçoes filtro SQL

Mensagens Recomendadas

zukinha

Boas,

Tenho uma base de dados presentemente com 2000 artigos, a filtros na peskisa, aparece o ecra branco o utilizador escrever o que quer e depois a informação aparece, mas, acontece o seguinte, com a viriedade de "variaveis" creio que o utlizador tenha problemas em encontrar o que procura, deste modo pretendo criar um "botao" para retirar o filtro e mostrar toda a informação da tabela. É como criar duas opçoes de peskisa, o cliente escreve o que pretende, se nao conseguir encontrar carrega no dito "botao" e zás... Faz uma peskisa manual.

Alguem pode dar uma ajuda?

O codigo que tenho presentemente é:

<?php

//connect include

require("connect.php");

//favicon

echo '<head>

<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />

</head>';

//$write = mysql_query("INSERT INTO fogoes VALUES ('1120130100','CG7-20','2','fagor gama 700','','designação','','','')");

if ($_POST['submit']);

{

  //grab POST data

  $CapacidadeCestas_form = $_POST ['CapacidadeCestas'];

  $Preco_form = $_POST ['Preço'];

//extract data

$extract = mysql_query("SELECT * FROM congeladorashorizontais WHERE CapacidadeCestas ='$CapacidadeCestas_form' ORDER BY preço ASC") or die(mysql_error());

$numrows = mysql_num_rows($extract);

echo "<table border='1' width='100%'>

  <tr>

    <th>Modelo</th>

    <th>Volume</th>

    <th>Capacidade Cestas</th>

    <th>Capacidade Congelação</th>

    <th>Tipo</th>

    <th>Marca</th>

    <th>Preço</th>

    <th>Designação</th>

  </tr>

";

while ($row = mysql_fetch_assoc($extract))

{

      $Modelo = $row ['Modelo'];

      $Volume = $row ['Volume'];

      $CapacidadeCestas = $row ['CapacidadeCestas'];

      $CapacidadeCongelacao = $row ['CapacidadeCongelação'];

      $Tipo =  $row ['Tipo'];

      $Marca = $row ['Marca'];

      $Preco = $row ['Preço'];

      $Designacao = $row ['Descrição'];

echo "<tr>

  <td style=\"text-align:center;\"><b>".$Modelo."</b></td>

  <td style=\"text-align:center;\">".$Volume."</td>

  <td style=\"text-align:center;\">".$CapacidadeCestas."</td>

  <td style=\"text-align:center;\">".$CapacidadeCongelacao."</td>

  <td style=\"text-align:center;\">".$Tipo."</td>

  <td style=\"text-align:center;\">".$Marca."</td>

  <td style=\"text-align:center;\">".$Preco." €</td>

  <td style=\"text-align:center;\">".$Designacao."</td>

</tr>";

}

}

echo "</table><br />";

?>

<html>

<form action='mysql.php' method='POST'>

      <b>Cestas:</b> <input type='text' name='CapacidadeCestas'><br>

      <input type='submit' name='submit' value='Procurar'>

</form>

Desde ja obrigado pela ajuda...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

Boas,

Podes explicar melhor? Tipo eu nao percebo nada de nomes tecnicos.  :)

Podes dar uma maozinha ali no cod?

Ou entao explicame por outras palavras..

Obrigado desde ja.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yyajsayy

O que ele te quis dizer é o seguinte.

1- Fazes uma pesquisa por inteiro na base de dados, ou seja, seleccionas todos os dados.

Por exemplo:


SELECT * from fogoes;

//depois fazes a extração dos dados como tens feito para uma variavel e listas na tua tabela..

//#################COM FILTRAGEM##################################

SELECT * FROM fogoes WHERE modelo LIKE '%$string%'


Nesta ultima query estás a fazer uma pesquisa por exemplo aos modelos dos fogoes.

Imagina que tens a marca "metallico" , ao invocares a query %lic% retornará todos os modelos em que após a primeira letra e antes da penultima exista "lic"

Percebes?


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

Boas amigo eu percebi a ideia, e é mesmo isso que preciso, mas no entanto nao percebi como colocala em pratica. podes dar um ajuda no meu cod?

Ek eu fix copy paste e tentei adaptar e nao consegui ora da erro, ora nao funciona. :/

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yyajsayy

Então, só tens de fazer algo assim:


if(empty($_POST['CapacidadeCestas'])){

//isto quer dizer que a tua caixa de pesquisa está vazia, então vamos listar os dados todos

SELECT * FROM fogoes;

}

else

{

SELECT * FROM fogoes WHERE modelo LIKE '%$string%'

}

Agora é so adaptar isso ao teu código! :smoke:


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

Boas amigo, mais uma vez tentei i nao consegui.

o erro que me é apresentado é este:

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\teclasul\Congeladores horizontais\mysql.php on line 21

Presumo que me falte qualquer coisa, resta sabr é o ke é. LoL

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha
<?php

//connect include
require("connect.php");


//favicon
echo '<head>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
</head>';


//$write = mysql_query("INSERT INTO fogoes VALUES ('1120130100','CG7-20','2','fagor gama 700','','designação','','','')");



IF(empty($_POST['CapacidadeCestas']))


{


//isto quer dizer que a tua caixa de pesquisa está vazia, então vamos listar os dados todos


SELECT * FROM fogoes;


}


else


{


SELECT * FROM fogoes WHERE modelo LIKE '%$string%'


}


echo "<table border='1' width='100%'>
  <tr>
    <th>Modelo</th>
    <th>Volume</th>
    <th>Capacidade Cestas</th>
    <th>Capacidade Congelação</th>
    <th>Tipo</th>
    <th>Marca</th>
    <th>Preço</th>
    <th>Designação</th>
  </tr>
";

while ($row = mysql_fetch_assoc($extract))

{


       $Modelo = $row ['Modelo'];
       $Volume = $row ['Volume'];
       $CapacidadeCestas = $row ['CapacidadeCestas'];
       $CapacidadeCongelacao = $row ['CapacidadeCongelação'];
       $Tipo =  $row ['Tipo'];
       $Marca = $row ['Marca'];
       $Preco = $row ['Preço'];
       $Designacao = $row ['Descrição'];

echo "<tr>
  <td style=\"text-align:center;\"><b>".$Modelo."</b></td>
  <td style=\"text-align:center;\">".$Volume."</td>
  <td style=\"text-align:center;\">".$CapacidadeCestas."</td>
  <td style=\"text-align:center;\">".$CapacidadeCongelacao."</td>
  <td style=\"text-align:center;\">".$Tipo."</td>
  <td style=\"text-align:center;\">".$Marca."</td>
  <td style=\"text-align:center;\">".$Preco." €</td>
  <td style=\"text-align:center;\">".$Designacao."</td>
</tr>";


}

}

echo "</table><br />";

?>
<html>

<form action='mysql.php' method='POST'>
      <b>Cestas:</b> <input type='text' name='CapacidadeCestas'><br>
      <input type='submit' name='submit' value='Procurar'>
</form>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yyajsayy

Oh então mano, testas-te isso assim? nem estás a fazer querys, isso foi um exemplo que te fiz.

Tenta algo assim:



<?php

//connect include
require("connect.php");


//favicon
echo '<head>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
</head>';


//$write = mysql_query("INSERT INTO fogoes VALUES ('1120130100','CG7-20','2','fagor gama 700','','designação','','','')");


//tens de fazer a ligação
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db('bd',$link);

if(empty($_POST['CapacidadeCestas']))


{


//isto quer dizer que a tua caixa de pesquisa está vazia, então vamos listar os dados todos





$sql="SELECT * FROM fogoes";


}


else


{


$sql="SELECT * FROM fogoes WHERE modelo LIKE '%metal%'";


}

//executar a query
$extract=mysql_query($sql,$link);
mysql_close($link);

echo "<table border='1' width='100%'>
  <tr>
    <th>Modelo</th>
    <th>Volume</th>
    <th>Capacidade Cestas</th>
    <th>Capacidade Congelação</th>
    <th>Tipo</th>
    <th>Marca</th>
    <th>Preço</th>
    <th>Designação</th>
  </tr>
";

while ($row = mysql_fetch_assoc($extract))

{


       $Modelo = $row ['Modelo'];
       $Volume = $row ['Volume'];
       $CapacidadeCestas = $row ['CapacidadeCestas'];
       $CapacidadeCongelacao = $row ['CapacidadeCongelação'];
       $Tipo =  $row ['Tipo'];
       $Marca = $row ['Marca'];
       $Preco = $row ['Preço'];
       $Designacao = $row ['Descrição'];

echo "<tr>
  <td style=\"text-align:center;\"><b>".$Modelo."</b></td>
  <td style=\"text-align:center;\">".$Volume."</td>
  <td style=\"text-align:center;\">".$CapacidadeCestas."</td>
  <td style=\"text-align:center;\">".$CapacidadeCongelacao."</td>
  <td style=\"text-align:center;\">".$Tipo."</td>
  <td style=\"text-align:center;\">".$Marca."</td>
  <td style=\"text-align:center;\">".$Preco." €</td>
  <td style=\"text-align:center;\">".$Designacao."</td>
</tr>";


}

}

echo "</table><br />";

?>
<html>

<form action='mysql.php' method='POST'>
      <b>Cestas:</b> <input type='text' name='CapacidadeCestas'><br>
      <input type='submit' name='submit' value='Procurar'>
</form>

PS: Código não testado, provavelmente tem erros, mas a ideia é essa.


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

Boas amigo,

Obrigado pela a ajuda que me tens prestado. Sim tinha alguns erros, estou a adaptalo agr, mas surgiome uma duvida.

O que quer dizer esta parte?

(...)    LIKE '%metal%'";

Obrigaso mais uma vez por tudo... =D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yyajsayy

na caixa de texto, imagina que queres procurar um modelo que tenha o nome metalico.

Mas tens varios modelos mtealico:

-metalico bronzo

-metalico ferro

-metalico ouro

-ouro

-ferro

ele listava-te esses 3 com metalico.

Por outras palavras, listate-te todos os registo onde a palavra de pesquisa esteja contida.


"If it don't work the first time, rename it to version 1.0."

http://seguranca-informatica.pt

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
zukinha

Espectaculo era mesmo isto que precisava.

Ate porque vou ja colocar isto mas é como search de tudo. fasso relações entre as tabelas e depois basta colocar um nome explo: fogao e isto dame tudo o que tenha a palavra fogao... espectaculo =D

Brigado pela a ajuda =D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.