Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

webruno

Pegar valor de todas as variaveis que começam com tal valor

Recommended Posts

E ai galera, beleza?Na minha url tenho os seguintes valores:index.php?cidades3=Sao Paulo&cidades5=Florianopolis&cidades9=Curitiba...Ou seja, as cidades são escolhidas pelo usuario por checkbox de um formulario que tem nomes de "cidades[0]", "cidades[1]", "cidades[2]"... o que está entre colchetes é definido por um loop.Depois de enviado o formulário através do GET, eu preciso recuperar os valores que estão em "cidades[?]".Como eu faço para recuperar esses valores que eu não sei o final?Tipo: $variavel = <comando> ($_GET[cidades]);Aí, $variavel[0] = "Sao Paulo"$varivel[1] = "Florianopolis"$variavel[2] = "Curitiba"Não sei se deu pra entender, mas agradeço a ajuda desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Fabyo, pode me explicar mais uma coisa?foreach ($_GET as $campo => $valor) { $$campo = $valor; }$query = mysql_query ("SELECT clientes.id, clientes.nome, clientes.sobrenome, clientes.cpf, login.cidade FROM clientes INNER JOIN login ON clientes.codigo = login.codigo WHERE login.cidade IN ('". implode("', '", $array_cidades) ."') ");Nesse caso eu substituo o $array_cidades por $campo? E se tiver outras coisas na URL tipoindex.php?cidades3=Sao Paulo&ok=BuscarPois ele envia todos os campo pra URL, sendo assim a busca no BD vai dar erro porque o SQL ia buscar o "OK" também.Valeu pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm, não sei se entendi muito bem...foreach ($_GET as $campo => $valor) { $$campo = $valor; }if ( $campo == cidades[] ) { array ($teste) = $valor; }Tá acusando parse error na linha 8 que é a do foreach. O filtro ficou certo?Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rresolvido dessa maneira:o filtro para selecionar os campos que eu queri: foreach ($_GET as $campo => $valor) { if ( $campo[0] == "c" ) { $$campo = $valor; $array_cidades[] .= $$campo; } }o SQL:$query = mysql_query ("SELECT clientes.id, clientes.nome, clientes.sobrenome, clientes.cpf, login.cidade FROM clientes INNER JOIN login ON clientes.codigo = login.codigo WHERE login.cidade IN ('". implode("', '", $array_cidades) ."') ");Obrigado pela ajuda Fabyo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só que desse jeito ta errado porque você ta pesquisando por um campo que começa com a letra c dai calhou de você acertar porque você procura por cidades, mas nao esta correto fazer assim

 

$campo[0] = "c" cidade

 

você pegou a primeira letra do campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim to ligado Fabyo, mas é que o que eu preciso é recuperar as valores da "cidades1", "cidades2"... sendo assim, eu só defini o valor inicial independente do nº do final.O problema que eu tava tendo é que eu não sabia as cidades que o usuario marcou no checkbox, então eu não poderia criar um laço com o FOR acrescentando o nº no fim de "cidades[$i]" porque eu não teria um parâmetro pra fazer ele parar. Porque teria muitas possibilidades de combinação.Tipo, uma hora poderia ser:index.php?cidades8=Porto AlegreOutra hora poderia ser:index.php?cidades25=Belo Horizonte&ok=BuscarEntão com o for ele iria verificar nº por nº até uma quantidade definida por mim.Bom, estou programando a pouco tempo em php, talvez eu esteja pensando errado.Como deveria ficar este código?Obrigado pelo help até aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao como falei do jeito que você esta fazendo ta gambiarra porque você ta pesquisando por algo que pode ser falho, pode ser que nesse seu formulario de certo, mas amnha ou depois você acrescente campos e por sorte você ter campos com nomes que começam com c seu script ira falhar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aham, entendi.. O que você sugere pra que fique certo? Como eu falei, se for usado loop com FOR o processamento vai verificar coisa que não precisa.Qual a melhor maneira? Valeu Fabyo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.