Ir para conteúdo
Jeovane Carvalho

Fazer um select no banco de dados com um array

Recommended Posts

 

 

 

Olá senhores (as) boa tarde, estou tentando, fazer uma consulta no banco e extrair dados filtrados vindos de um array de uma combobox por exemplo:

 

$MySQLi->query ("SELECT i.id, b.bairro,c.cidade,t.tipo_nome FROM  imoveis i LEFT JOIN bairros b ON  (b.id=bairro)LEFT JOIN cidades c ON  (c.id=cidade)LEFT JOIN tipos t ON  (t.id=tipo_nome) WHERE i.ativo='1' AND i.tipo='".$tipo."' AND i.cidade='".$id_cidade."' AND i.bairro='".$id_bairro."'" ORDER BY id DESC")

 

Notem que na última concatenação ( $id_bairro ) é aonde eu recebo o array que por exemplo , lá na combo que desenvolvi se o usuário escolher 2 bairros , ele irá vir assim (id1, id 2) ..

Aí dentro do SELECT iria ficar no id_bairro=1,2, e sei que isso é errado eu já divide a variável com implode separando com vírgula , mas da erro e a consulta não aparece na tela, mas se o usuário escolher apenas uma opção bairro ela chega corretamente, somente com array que estou tendo dificuldade de buscar a consulta. 

E para ficar bem esclarecido, eu preciso que, com esse array id1, id2 , buscar essas 2 consultar e não todas do banco..

 

Desde já agradeço a ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi bem, basta você usar a clausura in no lugar de
 

$id_barro = "1,2,3"; // Você ira usar o implode, como disse que já fez para obter isso.
 

$MySQLi->query ("SELECT i.id, b.bairro,c.cidade,t.tipo_nome 
FROM  imoveis i 
LEFT JOIN bairros b ON  (b.id=bairro)
LEFT JOIN cidades c ON  (c.id=cidade)
LEFT JOIN tipos t ON  (t.id=tipo_nome) 
WHERE i.ativo='1' 
AND i.tipo='".$tipo."' 
AND i.cidade='".$id_cidade."' 
AND i.bairro in($id_bairro)  
ORDER BY id DESC");

 

  • +1 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, EdCesar disse:

Se entendi bem, basta você usar a clausura in no lugar de
 

$id_barro = "1,2,3"; // Você ira usar o implode, como disse que já fez para obter isso.
 


$MySQLi->query ("SELECT i.id, b.bairro,c.cidade,t.tipo_nome 
FROM  imoveis i 
LEFT JOIN bairros b ON  (b.id=bairro)
LEFT JOIN cidades c ON  (c.id=cidade)
LEFT JOIN tipos t ON  (t.id=tipo_nome) 
WHERE i.ativo='1' 
AND i.tipo='".$tipo."' 
AND i.cidade='".$id_cidade."' 
AND i.bairro in($id_bairro)  
ORDER BY id DESC");

 

EdCesar Obrigado por responder , eu já tinha tentado usar o IN, mas tinha usado sem tirar o sinal de igual = , estou no trampo e vou tentar isso quando chegar em casa depois da facu, eu rodei a net inteira mas não encontrei nenhum tópico ou tutorial com alguém com este mesmo problema que tenha sido solucionado, vou ver se consigoda maneira que você disse..

Os outros selects tbm irão vir com arrays , só que se eu resolver esse já consigo manipular os demais, vou tentar e posto se conseguir a solução aqui... 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, Jeovane Carvalho disse:

EdCesar Obrigado por responder , eu já tinha tentado usar o IN, mas tinha usado sem tirar o sinal de igual = , estou no trampo e vou tentar isso quando chegar em casa depois da facu, eu rodei a net inteira mas não encontrei nenhum tópico ou tutorial com alguém com este mesmo problema que tenha sido solucionado, vou ver se consigoda maneira que você disse..

Os outros selects tbm irão vir com arrays , só que se eu resolver esse já consigo manipular os demais, vou tentar e posto se conseguir a solução aqui... 

Pow cara valew mesmo pela ajuda, resolveu um dos meus problemas de consultar dados de um array, e consegui resgatar os dados , agora só falta resolver a paginação dinâmica (sem reload) na página, pois ela não pega o resto da busca mas isso já foi de grande ajuda..

Eu consegui resolver uns casos mais complexos e as vezes por causa de uma vírgula ou parênteses a gente se mata .. Valew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá eu ouvi o termo "(sem reload)" ???

 

Fica a dica ai:

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax#guia-definitivo-ajax

 

Não esquece de validar essas informações no implode...

Até algo simples assim:

<?php

$bairros = array('1', '2', '3');

$bairros_tratados = array();
foreach($bairros as $bairro){
	$bairros_tratados[] = intval($bairro);
}

print implode($bairros_tratados, ','); // string '1,2,3' (length=5)

é melhor q nada.

 

 

 

Ou algo mais elegante usando prepared statment

http://stackoverflow.com/questions/3703180/a-prepared-statement-where-in-query-and-sorting-with-mysql

 

 

Entenda o motivo:

http://php.net/manual/pt_BR/security.database.sql-injection.php

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 18/04/2017 at 09:46, gabrieldarezzo disse:

Opá eu ouvi o termo "(sem reload)" ???

 

Fica a dica ai:

https://github.com/gabrieldarezzo/desafiosInternos/tree/master/ajax#guia-definitivo-ajax

 

Não esquece de validar essas informações no implode...

Até algo simples assim:


<?php

$bairros = array('1', '2', '3');

$bairros_tratados = array();
foreach($bairros as $bairro){
	$bairros_tratados[] = intval($bairro);
}

print implode($bairros_tratados, ','); // string '1,2,3' (length=5)

é melhor q nada.

 

 

 

Ou algo mais elegante usando prepared statment

http://stackoverflow.com/questions/3703180/a-prepared-statement-where-in-query-and-sorting-with-mysql

 

 

Entenda o motivo:

http://php.net/manual/pt_BR/security.database.sql-injection.php

 

Cara valew , eu uso uma paginação dinâmica e consegui resolver meu outro  problema , mas tenho outro que é de java script  que não consigo enviar várias variáveis, mas jpa abri outro tópico https://forum.imasters.com.br/topic/557904-enviar-várias-variáveis-para-php-dentro-do-java-script/#comment-2225892

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Hannah25
      Eu estou criando um cms, encontrei algumas barreiras para concluir o projeto, alguém sabe como o wordpress substitui a função include pelas abreviações: wp_header(), wp_footer() e wp_ ?
      joker123 หวยหุ้น
      Seja lá o que for esta bem escondido naquele código enorme : (  
      Se alguém souber me ajude a criar essa função! ou uma alternativa sem ser a tradicional include uma personalizada...
    • Por Paulo Oliveira Albuquerque
      Ola pessoal
      Eu criei o meu codigo para listar os modulos de uma tabela do banco de dados
       
         ele funciona certo
       
        Só que neste código eu quero que ele me faz uma contagem do nome da tabela que onde esta os nome preciso para a listagem
       Ex:
      /// TABELA DO MODULO ///
      id      nome                            url                status      tabela    cor_bloco
      1      Nome da cidade       city.php           S            city            blue
      2      Nome da cidade2     city2.php         S           city2          blue
       
      Obs: Esta TABELA e as das cidades que quero que faz a contagem de quantos registro tem nela
       
      No php fiz assim
      <?php /* Connect To Database*/ require_once ("../conexion.php"); mysqli_set_charset($con,"utf8"); $action = (isset($_REQUEST['action'])&& $_REQUEST['action'] !=NULL)?$_REQUEST['action']:''; if($action == 'ajax'){ $query = mysqli_real_escape_string($con,(strip_tags($_REQUEST['query'], ENT_QUOTES))); $tables="modulos"; $campos="*"; $sWhere=" modulos.tabela LIKE '%".$query."%' OR modulos.nome LIKE '%".$query."%' OR modulos.id LIKE '%".$query."%'"; $sWhere.=" order by modulos.id DESC"; $tables1="modulos"; $campos1="*"; $sWhere1=" modulos.tabela"; //$sWhere1.=" order by modulos.id"; include 'pagination.php'; //include pagination file //pagination variables $page = (isset($_REQUEST['page']) && !empty($_REQUEST['page']))?$_REQUEST['page']:1; $per_page = intval($_REQUEST['per_page']); //how much records you want to show $adjacents = 10; //gap between pages after number of adjacents $offset = ($page - 1) * $per_page; //Count the total number of row in your table*/ $count_query = mysqli_query($con,"SELECT count(*) AS numrows FROM $tables where $sWhere "); if ($row= mysqli_fetch_array($count_query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $total_pages = ceil($numrows/$per_page); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos FROM $tables where $sWhere LIMIT $offset,$per_page"); //loop through fetched data if ($numrows>0){ ?> <?php //Contatar o total numeros das tabelas*/ $query = mysqli_query($con,"SELECT count(*) AS numrows FROM $sWhere1 "); if ($row= mysqli_fetch_array($query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $contagem = ceil($numrows); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos1 FROM $sWhere1"); //loop through fetched data if ($numrows>0){ ?>      
      <section class="content"> <!-- Small boxes (Stat box) --> <div class="row"> <?php $finales=0; while($modulos = mysqli_fetch_array($query)){ $id = $modulos['id']; $nome = $modulos['nome']; $url = $modulos['url']; $tabela = $modulos['tabela']; $cor_blocos = $modulos['cor_blocos']; $icone = $modulos['icone']; $status = '1'; $finales++; ?> <div class="col-lg-3 col-xs-6"> <!-- small box --> <div class="small-box bg-<?php echo ConfigPainel('cor_blocos'); ?>"> <div class="inner"> <h3><?php echo $contagem; ?></h3> <!-- AQUI É CONTADOR --> <p><?php echo $modulos['nome']; ?></p> </div> <div class="icon"> <i class="fa <?php echo $modulos['icone']; ?>"></i> </div> <a href="<?php echo $modulos['url']; ?>" class="small-box-footer">Gerenciar de Modulo <i class="fa <?php echo $modulos['icone']; ?>"></i></a> </div> </div> <!-- ./col --> <?php } } ?> <div class="col-md-12"> <div class="form-control"> <?php $inicios=$offset+1; $finales+=$inicios -1; echo "Mostrando $inicios al $finales de $numrows registros"; echo paginate( $page, $total_pages, $adjacents); ?> </div> </div> </div> <?php } } ?> </section>  
    • Por Nodio
      Olá todos, vejam a duvida
       
      O código original é:
      <ol-class="carousel-indicators"> <li data-target="#mainslider" data-slide-to="0" class="active"></li> <li data-target="#mainslider" data-slide-to="1"></li> <li data-target="#mainslider" data-slide-to="2"></li> <li data-target="#mainslider" data-slide-to="3"></li> </ol> ai ei quero pegar o numero de registro de um mysql e emular o data-slide-to
       
      <?php echo '<ol class="carousel-indicators">'; echo '<li data-target="#mainslider" data-slide-to="0" class="active"></li>'; $conta = mysqli_query($conn, "SELECT * FROM inicio"); if(mysqli_num_rows($conta) == false){ echo '<div align="center"><br /><strong>Nenhum cliente encontrado.</strong><br /></div>'; }else{ $i=0; while($ln = mysqli_fetch_object($conta)){ if ($i === 0) echo '</ol>'; ?> <li data-target="#mainslider" data-slide-to="<?php echo '$i'; ?>"></li> <?php $i++; if ($i === 5) { echo '</ol>'; } else { if ($i > 0){ echo '</ol>'; } } } } ?>  
      mas quando passa pro html, ele não reconhece a variavel e a source fica assim:
       
      <!-- Indicators --> <ol class="carousel-indicators"><li data-target="#mainslider" data-slide-to="0" class="active"></li></ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> Alguem pode me dar uma luz?
    • Por matheusmacias
      Bom, estou fazendo um sistema de login com ajax no arquivo acesslg.php tem:
       
      if (strcmp(basename($_SERVER["SCRIPT_NAME"]), basename(__FILE__)) === 0){ header("location: ../error/index.php"); } ^^ bloqueando o acesso direto só que, parece que esse comando ta bloqueando o script de validar o login
      <script type="text/javascript"> $(function(){ $('#logine').submit(function(){ $.ajax({ url: 'include_bella/acesslg.php', type: 'POST', data: $('#logine').serialize(), success: function(data){ $('.validatelg').html(data); } }); return false; }); }); </script>  
×

Informação importante

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