Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

30-07-2014 16:05


<?  if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $dados = db_dados("     SELECT          tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE 1         ".$busca."     ORDER BY          data DESC     LIMIT 1;         ");     $dados['titulo']=str_replace('\\','',$dados['titulo']);     $dados['texto']=str_replace('\\','',$dados['texto']);          ?> <div id='sitemeio2'>     <div style="margin:0 20px 20px 20px;">      <div class="titInterna" style="margin-top:0;"><span style="color:#ccc;">Nossos Produtos:</span></div>     <?  $post_departamentos = $_POST['categoria']; ?>  <select name="categoria" id="categoria" title="">                           <?php              if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $dados2 = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE 1         ".$busca."      ORDER BY          data DESC         ";                   $Lista2 = new Consulta($dados2,30,$PGATUAL);      while ($linha2 = db_lista($Lista2->consulta)) { $i++ ;           ?>              <option value="<?=$linha2['id_departamentos'];?>"><?=$linha2['id_departamentos'];?></option>               <?php                 }           ?>                          </select> <? if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $SQL = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."  id_departamentos LIKE '%".$post_departamentos['categoria']."%'     ORDER BY          data DESC                           ";                       $Lista = new Consulta($SQL,30,$PGATUAL);      while ($linha = db_lista($Lista->consulta)) { $i++ ;           ?>                     <div class='colunac3binterna'>             <div class='imgverde'><a href='<?=utf8_decode($dadosconfig['url']);?>/departamentos_ver/<?=$linha['id_departamentos'];?>'><img src='<?=utf8_decode($dadosconfig['url']);?>/arquivos/departamentos/<?=$linha['codigo'];?>/capa.jpg' width="120px" /></a></div>             <p><span class="categoriadep"><?=utf8_decode($linha['data1']);?></span><a href='<?=utf8_decode($dadosconfig['url']);?>/departamentos_ver/<?=utf8_decode($linha['id_departamentos']);?>'><?=utf8_decode($linha['titulo']);?>.  </a></p>             </div>                        <? echo $linha2; } ?> <div class="paginacao"><?=$Lista->geraPaginacao();?></div>            <!-- Resetar formatação -->         <div class='limpar'></div>         </div>

Link: http://www.vsestofados.com.br/Novo/departamentos/0

Como faço para filtrar pelo Select produtos pela categoria Sofas / Puffs

Pois não consigo interligar as variavel do

$post_departamentos = $_POST['categoria']; ?>  <select name="categoria" id="categoria" title="">


<SELECT> no LIKE
    WHERE ".$busca."  id_departamentos LIKE '%".$post_departamentos['categoria']."%' 

Como faria ? para interligar?

Obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

30-07-2014 16:26

A parte do select option você pode fazer assim

<select name="categorias"> <option></option> <option cat="1" <?php @$_POST['cat']=='1' ? print("selected=\"selected\"") : ""; ?>>1</option> <option cat="2" <?php @$_POST['cat']=='2' ? print("selected=\"selected\"") : ""; ?>>2</option> </select>

Onde tem as options com valores 1 e 2 você monta essa option no seu while da consulta MySQL. Pode montar essas options usando uma query com GROUP na coluna que gera as categorias.

Para a parte do WHERE, você pode fazer um if, tipo

$complemento = ""; if(isset($_POST['cat'])) { $complemento.=" AND coluna='..' "; } 

Nessa base você vai usar o $complemento no final da query da consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

30-07-2014 16:36

Deu erro no select

$SQL = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."  id_departamentos LIKE $complemento = "";  *ERRO if(isset($_POST['cat'])) { *ERRO $complemento.=" AND coluna='..' "; }      ORDER BY          data DESC                           "; 

deu erro nestas duas linhas
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

30-07-2014 17:25

Eu postei um exemplo, você colou o mesmo na sua consulta.
Onde eu coloquei coluna, é para você colocar o nome da coluna que tem a categoria, e não colocar o exemplo que postei.

Você tem o seguinte

SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.DATA,'%d/%m/%Y')  AS data1 ,         tbdepartamentos_categorias.*     FROM         tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."

O que é esse $busca?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

30-07-2014 17:44

Consulta para exibir todas as categorias no select

                          <?php              if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $dados2 = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE 1         ".$busca."      ORDER BY          data DESC         ";                   $Lista2 = new Consulta($dados2,30,$PGATUAL);      while ($linha2 = db_lista($Lista2->consulta)) { $i++ ;      $complemento = ""; if(isset($_POST['cat'])) { $complemento.=" AND  id_departamentos='categoria' "; }      ?>     <? } ?>

Select com variáveis da consulta do banco de dados

<select name="categorias"> <option></option> <option cat="<?=$linha2['id_departamentos'];?>" <?php @$_POST['cat']=='"$linha2[\'id_departamentos\']"' ? print("selected=\"selected\"") : ""; ?>><?=$linha2['categoria'];?></option> </select>

Consulta de Exibição dos produtos + variavel $complemento no LIKE

<?php  if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $SQL = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."  id_departamentos LIKE '%$complemento%'     ORDER BY          data DESC                           ";                       $Lista = new Consulta($SQL,30,$PGATUAL);      while ($linha = db_lista($Lista->consulta)) { $i++ ;           ?>

O que está errado pois não interligando ainda

Obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

30-07-2014 17:52


 SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.DATA,'%d/%m/%Y')  AS data1 ,         tbdepartamentos_categorias.*     FROM         tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."     ORDER BY         DATA DESC


Essa é a query que retorna a listagem dos itens pela baseado no select option, correto?

Se você fizer isso dá certo?

 SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.DATA,'%d/%m/%Y')  AS data1 ,         tbdepartamentos_categorias.*     FROM         tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca." AND tbdepartamentos_categorias.id_categoria='1'     ORDER BY         DATA DESC

tbdepartamentos_categorias.id_categoria='1' Isso é só um exemplo, supondo que sejam os nomes da tabela e coluna do bd e o id de uma categoria existente seja 1.

Testa com valores reais e veja se funciona.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

30-07-2014 18:02

Assim Ele retorna só sofás

isso id_departamentos LIKE '%1%' ao envez disso que da erro

tbdepartamentos_categorias.id_categoria='1' Isso é só um exemplo, supondo que sejam os nomes da tabela e coluna do bd e o id de uma categoria existente seja 1.

se alterar de isso id_departamentos LIKE '%2%' retorna puffs funciona perfeitamente

 <?php  if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $SQL = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.data,'%d/%m/%Y')  as data1 ,         tbdepartamentos_categorias.*     FROM          tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca."  id_departamentos LIKE '%1%'     ORDER BY          data DESC                           ";                       $Lista = new Consulta($SQL,30,$PGATUAL);      while ($linha = db_lista($Lista->consulta)) { $i++ ;           ?>

ERRO na cosulta de :tbdepartamentos_categorias.id_categoria='1' Isso é só um exemplo, supondo que sejam os nomes da tabela e coluna do bd e o id de uma categoria existente seja 1.

Erro!

# 1064 - You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'AND tbdepartamentos_categorias.id_categoria='1' ORDER BY DATA DESC' at line 9


SELECT tbdepartamentos.*, DATE_FORMAT(tbdepartamentos.DATA,'%d/%m/%Y') AS data1 , tbdepartamentos_categorias.* FROM tbdepartamentos INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria) WHERE AND tbdepartamentos_categorias.id_categoria='1' ORDER BY DATA DESC


<?php  if ($_GET['id']>0) {     $busca = " AND id_departamentos=".(int)$_GET['id']; } else if ($_GET['categoria']>0) {     $busca = " AND tbdepartamentos.id_categoria=".(int)$_GET['categoria']; } $i=0; $SQL = " SELECT         tbdepartamentos.*,         DATE_FORMAT(tbdepartamentos.DATA,'%d/%m/%Y')  AS data1 ,         tbdepartamentos_categorias.*     FROM         tbdepartamentos         INNER JOIN tbdepartamentos_categorias ON (tbdepartamentos_categorias.id_categoria = tbdepartamentos.id_categoria)     WHERE ".$busca." AND tbdepartamentos_categorias.id_categoria='1'     ORDER BY         DATA DESC                           ";                       $Lista = new Consulta($SQL,30,$PGATUAL);      while ($linha = db_lista($Lista->consulta)) { $i++ ;           ?>

em vista que o primeiro de cima deu certo agora como eu faço para em vez de inserir o numero fazer com que trabalhe via variavel funcionando junto com o select?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

30-07-2014 19:32

Supondo que você envie os dados por GET

 AND tbdepartamentos_categorias.id_categoria='".$_GET['categoria']."'

Se for por post, só trocar o $_GET por $_POST
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

31-07-2014 01:47

Assim não funciona

".$busca." AND tbdepartamentos_categorias.id_categoria='1' 

Só funciona assim

".$busca."  id_departamentos LIKE '%1%' 


Nesta linha aonde eu coloco o ='".$_GET['categoria']."'?

obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

31-07-2014 07:49


".$busca."  id_departamentos LIKE '%".$_GET['categoria']."%' 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

31-07-2014 11:28


".$busca."  id_departamentos LIKE '%".$_GET['categoria']."%'  


Está dando este erro.

# 1064 - You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'id_departamentos LIKE '%0%' ORDER BY data DESC' at line 9

o que eu faço para resolver?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

31-07-2014 11:48

Faltou o AND

".$busca." AND  id_departamentos LIKE '%".$_GET['categoria']."%'

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

31-07-2014 12:00

Retorna Todas as Paginas em Branco em vista da URL http://www.vsestofados.com.br/Novo/departamentos/0

".$busca." AND id_departamentos LIKE '%".$_GET['categoria']."%'

COM $_GET['categoria'] Só consigo ver Sofas

se eu estiver na URL http://www.vsestofados.com.br/Novo/departamentos/1
COM $_GET['categoria'] Só consigo ver Puffs se eu alterar a URL para URL http://www.vsestofados.com.br/Novo/departamentos/2

".$busca." AND id_departamentos LIKE '%".$_POST['categoria']."%'

Agora na http://www.vsestofados.com.br/Novo/departamentos/0 com POST eu altero o select com o mouse de 1 para 2 e não acontece nada

como consigo resolver isso?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17721
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro de Select em Filtragem de Dados

31-07-2014 12:20

Se você alterar o select, deveria fazer um onchange para mandar o id por GET para o link, não?

Por post é se você usar formulários.

Segue um EXEMPLO

<select name="categorias" onchange="location.href='http://www.vsestofados.com.br/Novo/departamentos/'+this.value"> <option></option> <option value="1">1</option> <option value="2">2</option> </select>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 448

Erro de Select em Filtragem de Dados

31-07-2014 12:44

Agora deu certo

<select name="categorias" onchange="location.href='http://www.vsestofados.com.br/Novo/departamentos/'+this.value">    <option value="<?=$linha2['id_departamentos'];?>"><?=$linha2['categoria'];?></option>

só que quando eu seleciono algum item ou o 1 ou 2 no caso Sofa ou Puff não aparece mais os outros itens

se eu selecionar o Sofa não aparece mais puff para selecionar se eu selecionar puff não aparece Sofa

Mas ai você está filtrando. Não é isso que você queria? Se não for para filtrar, tem que tirar o filtro na query.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado