Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
zukinha

Opçoes filtro SQL

Recommended Posts

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...

Share this post


Link to post
Share on other sites
Tuntankamon

Uma variável e seleccionas uma query (onde devolve tudo) ou outra (onde devolve os resultados filtrados)...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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. :/

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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>

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.