Ir para conteúdo
Fórum Script Brasil
  • 0

consulta dinâmica


biza

Pergunta

Fiz esse sistema de procura dinamica mas ele não esta funcionando bem :

$destinos= = $_REQUEST['destino'];// vai buscar a variável através de REQUEST
$ida= = $_REQUEST['ida'];// vai buscar a variável através de REQUEST
$volta== $_REQUEST['volta'];// vai buscar a variável através de REQUEST
$hoje= date("d-m-Y");

$sql2 = "SELECT ofertas.id_oferta, ofertas.oferta, ofertas.programa, ofertas.imagem, ofertas.data_ini, ofertas.data_lim, ofertas.preço, destinos.id_destino FROM ofertas 
                INNER JOIN destinos ON destinos.id_destino = ofertas.destino_id WHERE ";
                
                if (!empty($destinos)) {
        $dados[] = "ofertas.destino_id = ".$destinos;
                                } else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                                }
if (!empty($ida)){
    $dados[] = "ofertas.data_ini > = ".$ida;
}else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                                }
if (!empty($volta)) {
        $dados[] = "ofertas.data_lim <= ".$volta;
}  else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                                }
                   if (!empty($volta)){
        $dados[] = "ofertas.data_lim >= " .$hoje;
                   } else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                                }
                
$sql2 .= implode(" and ",$dados)." ORDER BY ofertas.oferta LIMIT {$inicio}, {$qnt}";
        
mysql_query($sql2) or die ("Erro na query".mysql_error());
$sql_query = mysql_query($sq2l);

if (mysql_num_rows($sql_query) > 0){
        while($linha = mysql_fetch_array($sql_query)){
//conteúdo que quero mostrar
}
else{
echo "<div id='erro' class='ali'>Não é possivel realizar a consulta para o Destino.<p>Obrigado!</p></div>";
}
mas a pagina continua sem mostrar nada ou seja não passa resultado nenhum ao imprimir a query ela morre dessa forma :SELECT * FROM destinos WHERE id_destino =13 (não passa daqui). ela já não le dessa linha de code para baixo:
if (!empty($destinos)) {
        $dados[] = "ofertas.destino_id = ".$destinos;

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Bom,

Tem um erro no início do script.

Use operador == somente para comparações e não para atribuição.

$destinos = $_REQUEST['destino'];// vai buscar a variável através de REQUEST
$ida = $_REQUEST['ida'];// vai buscar a variável através de REQUEST
$volta = $_REQUEST['volta'];// vai buscar a variável através de REQUEST
$hoje = date("d-m-Y");

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

  • 0

romero já alterei essa parte que voce me disse e agora esta dessa forma :

<? 
        $p = isset($_GET['p']) ? $_GET['p'] : 1;
        $qnt = 16;
        $inicio = ( $p * $qnt ) - $qnt;
        $dir ="ofertas/";
        
        $sql2 = "SELECT ofertas.id_oferta, ofertas.oferta, ofertas.programa, ofertas.imagem, ofertas.data_ini, ofertas.data_lim, ofertas.preço, destinos.id_destino FROM ofertas 
                INNER JOIN destinos ON destinos.id_destino = ofertas.destino_id WHERE ";
                
                if (!empty($destinos)) {
        $dados[] = "ofertas.destino_id = ".$destinos;
                } else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                }
if (!empty($ida)){
    $dados[] = "ofertas.data_ini >  ".$ida;
}else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                }
if (!empty($volta)) {
        $dados[] = "ofertas.data_lim < ".$volta;
}  else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                }
           if (!empty($volta)){
        $dados[] = "ofertas.data_lim > " .$hoje;
           } else {
        die('<div id="erro" class="ali">Não é possivel realizar a consulta! Seleccione o campo categoria e efectue novamente a procura.<p>Obrigado!</p></div>');
                }
        
$sql2 .= implode(" and ",$dados)." ORDER BY ofertas.oferta LIMIT {$inicio}, {$qnt}";
        
mysql_query($sql2) or die ("Erro na query".mysql_error());
$sql_query = mysql_query($sq2l);

if (mysql_num_rows($sql_query) > 0){
        while($linha = mysql_fetch_array($sql_query)){
//carega resto dos dados
}
?>
mas continua a não dar

Link para o comentário
Compartilhar em outros sites

  • 0

Bom,

Vi que você faz uma verificação de algumas variáveis, caso elas não forem preenchidas você executa um die();

O die(); tem o mesmo efeito do exit(); ele para o script.

Essa seria sua intenção? Caso alguma variável não for preenchida, o script vai parar?

Para fazer uma query dinâmica, você permite que o usuário preencha o campo que ele quiser.

Nessa linha, onde está a variável $sql21 ou seria $sql12 ?

$sql_query = mysql_query($sq2l);

Link para o comentário
Compartilhar em outros sites

  • 0

Observando tem isso:

$sql2 = "SELECT ofertas.id_oferta, ofertas.oferta, ofertas.programa, ofertas.imagem, ofertas.data_ini, ofertas.data_lim, ofertas.preço, destinos.id_destino FROM ofertas
                INNER JOIN destinos ON destinos.id_destino = ofertas.destino_id WHERE ";
Isso:
$dados[] = "ofertas.destino_id = ".$destinos;
E depois isso:
$sql2 .= implode(" and ",$dados)." ORDER BY ofertas.oferta LIMIT {$inicio}, {$qnt}";

Ou é "ofertas.destino_id" ou "ofertas.destino_id". Talvez seja isso. Aproveita e troca também "<?" por "<?php".

Editado por svjets
Link para o comentário
Compartilhar em outros sites

  • 0

Biza,

Faça o seguinte, imprima na tela sua query, copie e execute-a no banco de dados, assim você vai saber se teu script está montando a query de forma correta.

Depois desta linha.

$sql2 .= implode(" and ",$dados)." ORDER BY ofertas.oferta LIMIT {$inicio}, {$qnt}";

//imprime a query e pára o script
echo $sql2
exit();

Link para o comentário
Compartilhar em outros sites

  • 0
Ou é "ofertas.destino_id" ou "ofertas.destino_id". Qual a diferença?

Desculpe, quis dizer: Ou é "ofertas.destino_id" ou "ofertas.id_destino". Uma parte do código usa um nome do campo e outra parte usa outro nome. Verifique qual deles é o correto e substitua o errado no código.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...