Ir para conteúdo

POWERED BY:

Arquivado

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

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");

 

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

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

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