GM3555 Postado Maio 30, 2011 Denunciar Share Postado Maio 30, 2011 Seria simples se o campo id_categoria tivesse apenas um id, mas o campo está assim:1#7#8#9#10#11#12#14#Ou seja, um produto pode pertencer a várias categorias que estão separadas pelo delimitador #.Seria preciso uma função na query para separar os id's pelo 'delimitador "#"' e comparar um por um.imagino que a solução seja algo "parecido" com isso:SELECT * FROM produtos WHERE substring('#', 'id_categoria', '#') = '".$_POST['id_categoria']."' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Ivan Ferrer Postado Maio 30, 2011 Denunciar Share Postado Maio 30, 2011 Experimente fazer assim:$ID = '1#7#8#9#10#11#12#14';$part_id=explode("#",$ID);$total_ids=8;for($x=0; $x<$total_ids; $x++){$ids=$part_id[$x];$SQL = "SELECT * FROM produtos WHERE id_categoria='$ids';} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GM3555 Postado Maio 30, 2011 Autor Denunciar Share Postado Maio 30, 2011 Acho que o algoritmo teria que estar na query,Para ilustrar melhor:$categoria = $_POST['categoria'];//digamos que seja parafusos SELECT * FROM produtos WHERE categoria=$categoria;Só que na tabela, o campo categoria está assim: parafusos#porcas#etc... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jefferson Oliveira Postado Maio 30, 2011 Denunciar Share Postado Maio 30, 2011 (editado) <?php function pegaIds($id){ $exp = explode("#",$id); $where = "WHERE "; for($i=0; $i < count($exp); $i++){ if($i == (count($exp)-1)){ #ULTIMO REGISTO $where .= " id_categoria = '$exp[$i]'"; }else{ $where .= " id_categoria = '$exp[$i]' and "; } } return $where; } $id = "1#7#8#9#10#11#12#14"; $where = pegaIds($id); echo $where; ?> Editado Maio 30, 2011 por Jefferson Oliveira Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fiote Postado Maio 30, 2011 Denunciar Share Postado Maio 30, 2011 Se você vai receber sempre um único ID pelo $_POST, pode fazer assim:SELECT * FROM Tabela WHERE '#'+Id_Categoria LIKE '%#$_POST[Id_Caregoria]#%' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 GM3555 Postado Maio 30, 2011 Autor Denunciar Share Postado Maio 30, 2011 Muito obrigado fiote deu certinho!Usei dessa forma:SELECT * FROM produtos WHERE id_categoria LIKE '%#".$id_categoria."#%'Obrigado também a todos que contribuiram! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
GM3555
Seria simples se o campo id_categoria tivesse apenas um id, mas o campo está assim:
1#7#8#9#10#11#12#14#
Ou seja, um produto pode pertencer a várias categorias que estão separadas pelo delimitador #.
Seria preciso uma função na query para separar os id's pelo 'delimitador "#"' e comparar um por um.
imagino que a solução seja algo "parecido" com isso:
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.