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

xplode_me

SELECT * FROM construido através de variáveis recebidas

4 mensagens neste tópico

Olá, bom dia! ;)

Bem, preciso de fazer o seguinte, e estou meio bloqueado de soluções.

Vou ter uma página em que as pessoas escolhem através de checkboxes uma catrefada de opções, que são geradas dinamicamente, por isso nunca sei os nomes das variaveis q vou receber.

Preciso então de construir um "SELECT * FROM blogs WHERE id = "id_recebido1" OR id = "id_recebido2", etc...

Alguém tem uma sugestão de como ultrapassar este obstáculo?

Estava a pensar em usar o $_POST para saber as variáveis, mas depois, o número de vezes que o OR se repete, e a informacao lá incluida, não estou a ver como fazer...

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aconselho-te a começares com um bloco PHP no script, que recebe o $_POST e valida o input, de forma a evitar falhas, como retirar aspas, código, malicioso, etc, através da função strip_tags, por exemplo. Depois guarda os 2 valores em variáveis e só tens que fazer um select com essas variáveis:

SELECT * FROM blogs WHERE id = "<?=$var1 ?>" OR id = "<?=$var2 ?>" ou parecido, conforme o teu select.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que muda no select é o número de ids e o conteúdo deles?

Podes aceder aos ids através de funções de array?

Se *SIM* para as duas perguntas, eu faria qualquer assim

<?php
/* ... */
$ids = array();
foreach ($_POST['id'] as $v) {
  if ($v) $ids[] = sanitize($v);
}
$sql = "SELECT COLUNA1, COLUNA2, ..., COLUNAN FROM blogs WHERE id in (" . explode(', ', $ids) . ")";
/* ... */
?>

No código acima, a função sanitize() deve converter a string recebida numa coisa parecida que não atrapalhe o SQL ;)

Por exmplo, para MySQL: Mc'Donalds converte para Mc\'Donalds

e para MSSQL: Mc'Donalds convert para Mc''Donalds

Ah! o array $_POST['id'] é escrito no formulário como por exemplo

<form ...>
<label>id_a_enviar1<input type="text" name="id[]"></label>
<label>id_a_enviar2<input type="text" name="id[]"></label>
...
</form>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado aos dois, acabou por ficar isto:

$first = "1";
foreach ($_GET as $key => $value) {
if ($value == "on" && $first == "1") {
	$sqltemp = "SELECT * FROM posts WHERE feedID = '$key'";
	$first = "0";
}
if ($value == "on" && $first == "0") {
	$sqltemp .= " OR feedID = '$key' ";
}
}
$sqltemp .= "ORDER BY id ASC";
echo "$sql"; 

Os  $_GET's são os resultados de uma colecção de checboxes, e os que interessam são os que enviam o valor "on".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora