Jump to content
nmoa

[Resolvido] array e mysql

Recommended Posts

nmoa

boa tarde

vou ver se me consigo explicar da melhor forma :)

a ideia é saber se uma variável está vazia ou não e ir acrescentando numa raiz total

$total = $destritos.$concelhos.$reslocal.$resnatu.$resneg;

ou seja preciso saber se a var $destritos está vazia...se não tiver aparece, e assim sucessivamente.

depois de verificar se estão vazias ou não necessito que ele me conte quantas são

se for uma a var $total= a uma unica variavel e for mais que uma $total = 'var'+" AND " + "var"

a ideia é esta informação ir complementar uma chamada à base de dados, na parte do WHERE

$local =mysql_query("SELECT *, i.id_imovel as im, i.id_energetico as ener FROM imovel as i
INNER JOIN`imovel_localizacao` as l ON l.`id_imovel`=i.`id_imovel`
INNER JOIN`imovel_caracteristicas` as caract ON caract.`id_imovel`=i.`id_imovel`
INNER JOIN `destritos` as d ON d.`id_destritos`=l.`id_destritos`
INNER JOIN `concelhos` as c ON c.`id_concelhos`=l.`id_concelhos`
INNER JOIN `freguesia` as f ON f.`id_freguesia`=l.`id_freguesia`
INNER JOIN `imovel_valor` as valor ON valor.`id_imovel`=i.`id_imovel`
INNER JOIN `tipo_negocio` as tipo ON tipo.`id_tipo_negocio`=valor.`id_tipo_negocio`

WHERE $total AND i.ativo=1 LIMIT $page_position, $item_per_page ");

não sei se foi muito confuso :|

obrigado pela ajuda

Share this post


Link to post
Share on other sites
HappyHippyHippo

explicaste mal, mas acho que deu para perceber o que queres.

diz-me só uma coisa, essa informação (os dados das variáveis) está guardada nos parâmetros da chamada ($_POST ou $_GET) ?

se não está, o que determina quais os dados que estão nas variáveis que descreves ?

ps : depois de responderes, vais ver que a solução é muito simples


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo
$where = array();
foreach ($_GET as %key => $value)
 $where[$key] = $value;
$sql = " ... where " . implode(" and ", $where) . " ... ";


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
tiago.f

$where = array();
foreach ($_GET as %key => $value)
 $where[$key] = $value;
$sql = " ... where " . implode(" and ", $where) . " ... ";

Deveria ser $key em vez de %key acho eu...

Share this post


Link to post
Share on other sites
HappyHippyHippo

Deveria ser $key em vez de %key acho eu...

escrever à pressão é o que dá, mas acho que o criador do tópico deverá ter corrigido por si só

------------------------------------------------

além disso, o código está completamente errado, estava a confundir com um código semelhante para o problema diferente.

o código que tencionava apresentar seria

$where = array();
foreach ($_GET as %key => $value)
 $where[] = $key . " = " . $value;
$sql = " ... where " . implode(" and ", $where) . " ... ";

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
nmoa

escrever à pressão é o que dá, mas acho que o criador do tópico deverá ter corrigido por si só

------------------------------------------------

além disso, o código está completamente errado, estava a confundir com um código semelhante para o problema diferente.

o código que tencionava apresentar seria

$where = array();
foreach ($_GET as %key => $value)
 $where[] = $key . " = " . $value;
$sql = " ... where " . implode(" and ", $where) . " ... ";

a minha ideia final é esta

$where = array();
foreach ($_GET as $key => $value)
if ($key=="f"){
$key = "l.id_freguesia";
}
if ($key=="neg"){
$key = " valor.id_tipo_negocio";
}
if ($key =="d"){
$key = " l.id_destritos";
}
if ($key=="c"){
$key = " l.id_concelhos";
}
if ($key=="natureza"){
$key= "i.id_natureza";
}

$total = $destritos.$concelhos.$reslocal.$resnatu.$resneg;
$where[] =$key . " = " . $value;
$sql = implode(" and ", $where) . "";

mas os key está a ser substituído e eu quero que seja acrescentado se realmente houver a condição

Edited by apocsantos

Share this post


Link to post
Share on other sites
tiago.f

Meu, tens que por esse codigo dentro do foreach :)

$where = array();
foreach ($_GET as $key => $value) {
if ($key=="f"){
$key = "l.id_freguesia";
}
if ($key=="neg"){
$key = " valor.id_tipo_negocio";
}
if ($key =="d"){
$key = " l.id_destritos";
}
if ($key=="c"){
$key = " l.id_concelhos";
}
if ($key=="natureza"){
$key= "i.id_natureza";
}

$where[] =$key . " = " . $value;
}
$total = $destritos.$concelhos.$reslocal.$resnatu.$resneg;
$sql = implode(" and ", $where) . "";

Edited by apocsantos

Share this post


Link to post
Share on other sites
HappyHippyHippo

o php permite que a condição da estrutura switch ... case seja uma string

foreach ($_GET as $key => $value) {
 switch ($key) {
   case "f" :        $where[] = " l.id_freguesia = '{$value}'";        break;
   case "neg" :      $where[] = " valor.id_tipo_negocio = '{$value}'"; break;
   case "d" :        $where[] = " l.id_destritos = '{$value}'";        break;
   case "c" :        $where[] = " l.id_concelhos = '{$value}'";        break;
   case "natureza" : $where[] = " i.id_natureza = '{$value}'";         break;
 }
}

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.