album_view.php?album=5;9;10;13
Como podem ver, a variável album recebe vários valores separados por ;(ponto e vírgula). Este é só um exemplo, os valores passados poderiam ser os IDS álbuns de uma galeria de fotos. Seria necessário colocar estes valores em um array e fazer o select no banco de dados.
Agora a pergunta que não quer se calar: Como fazer um select passando um array como parâmetro?
Muito simples, vejam
<?php
#recebe os valores passados via GET
$ab = $_GET['album'];
#Retiramos os ponto e vírgula usando "explode" que retornará um array
$rr = explode(';',$ab);
#Agora temos um array contendo os valores que foram passados
#Usando o comando "foreach" vamos concatenar os dados de cada posição deste array
#afim de criarmos a condição que será passada para o comando SQL
#Variável que guardará a condição
$cond = null;
foreach($rr as $ids){
$cond. = $ids.',';//colocamos um vírgula após cada posição lida
}
#Pegamos o tamanho da variável "$cond"
$size = strlen($cond);
#Retiramos a vírgula que ficou no final da string e teremos a condição completa
$condicao = substr($cond,0,$size-1);
#A partir de agora nós conectaremos ao banco de dados, não vou colocar o código
#O segredo está na cláusula "IN" do SQL
#A query ficaria assim:
$sql=mysql_query("select * from tb_album where id_album in($condicao) order by id_album");
#Traduzindo: selecione tudo da tabela tb_album se id_album estiver na($condição) ordenado pelo id_album
#O resto do código é com você
?>
Coloquei somente algumas partes do código, é claro que você deverá conectar ao banco de dados, etc,etc...
Só para frisar, o segredo está no modo como você criará a condição e depois utilizar-se da cláusula "IN" para retornar o que foi passado.
Espero que tenham entendido, caso tiver algum erro favor comentar.
Muito bom.. eu gostei bastante..
ResponderExcluirseria possível fazer isso no select? no lugar do "*"?
obrigado
Este comentário foi removido pelo autor.
ResponderExcluirMuito bom. Eu não conhecia a clausula IN. Isso ajuda bastante.
ResponderExcluirOlá,
ResponderExcluirEstou desenvolvendo um projeto de uma rede de blogs voltados ao desenvolvimento web, e gostaria de saber se você gostaria de participar. Caso sim, por favor responder ao e-mail natanajunges@gmail.com Site: rededevweb.blogspot.com.br
Atenciosamente, Natan Junges.
Muito bom amigo, me polpou um tempao em um filtro. Eu iria usar dois foreach e depois excluir o que nao estava no filtro.
ResponderExcluir