Jump to content
Jeovane Carvalho

Acessar um array pegando seu índice dentro de uma classe através de outra página no PHP

Recommended Posts

Olá pessoal, estou precisando de um help !

 

Pois eu tenho uma classe assim:

 

DadosComboClasse.php

 

	
	class  DadosComboCidades {
	private $conecta_banco;
	
	public function __construct(){
	$this->conecta_banco= new Conexao();
	$this->conecta_banco->Conectar();
	}	
	public $array = array();
	public $imoveis_tipo;
	public $cidade;
	public $bairro;
	public $bairro_id2;
	public $idcidade;	
	public $negocios;
	public $qtd;
	public $bairro_id;
	public $id_cidade;
	public $id_tipo;
	public $id_bairro;
	public $nome_empresa_2;
	public $nome_empresa_3;
	public $nome_empresa_4;
	public $nome_empresa_5;
	public $titulo_cadastro;
	public $creci;
	public $facebook;
	public $twitter;
	public $linha_b;
	public $sloga;
	public $site;
	public $sqlT_1;
	public $sqlT_2;
	public $sqlT_3;
	public $sqlT_4;
	public $row;
	public $id='1';
	function BuscarCidades(){
	$result=$this->conecta_banco->banco; 

	$pega_cidade=new ComboCidades();=> instancio os ids ou arrays quando são requisitados tipo assim : finalidade ID:1 Tipo ID:3,9 (array)  
	$pega_cidade->PegarCidadeId();
	

	$ativo='1';


ARRAYS ABAIXO:

	$this->id_negocio=$pega_cidade->id_negocio;
	$this->id_tipo=$this->id_cidade=$pega_cidade->id_tipo;
	$this->id_cidade=$pega_cidade->id_cidade;

Acima eu pego os dados do array vindo da pagina combo_cidades.php
	
	if($pega_cidade->id_negocio):
	$negocio_array = explode(",",$pega_cidade->id_negocio);
	if($pega_cidade->id_tipo):
	$tipos_array = explode(",", $pega_cidade->id_tipo);
	if($pega_cidade->id_cidade):
	$cidades_array = explode(",", $pega_cidade->id_cidade);
	
	foreach($negocio_array as $negocio):
	foreach($tipos_array as $tipos):
	foreach($cidades_array as $cidades):

	$sqlT_1 = $result->prepare("SELECT i.id,t.tipo_nome,c.cidade,b.bairro,i.ativo FROM imoveis i LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) LEFT JOIN 		
	cidades c ON (c.id = i.id_cidade)LEFT JOIN bairros b ON (b.id = i.bairro) WHERE i.id_tipo_imovel IN ('".$tipos."') AND i.id_cidade IN ('".$cidades."') AND 	
	i.ativo=?  ORDER BY i.bairro DESC");
	$sqlT_1->bind_param('s',$ativo);
	$sqlT_1->execute();
	$this->sqlT_1=$sqlT_1->get_result();
	
Acima com get_result eu gero os dados que preciso do array  
	
	
abaixo são outras chamadas do sql que vou implementar na solução acima

	$sqlT_2=$result->prepare("SELECT id, bairro,ativo FROM bairros WHERE id AND ativo=? ORDER BY bairro");
	$sqlT_2->bind_param('s',$ativo);
	$sqlT_2->execute();
	$this->sqlT_2=$sqlT_2->get_result();
	
	"'%".$negocio."%'";
	$where = " i.ativo =? ";
	
	if( $negocio)  {
	$where .="AND i.id_negocio_tipo LIKE ?";
	}if( $tipos )  {
	$where .=" AND i.id_tipo_imovel IN ('".$tipos."')";
	}
	if( $cidades ) {
	$where .=" AND i.id_cidade IN ('".$cidades."')";
	}
	if($this->bairro_id2) {
	$where .=" AND i.bairro IN ('".$this->bairro_id2."')";
	}
	
	$sqlT_3 = $result->prepare("SELECT i.id,i.ativo,n.tipo,b.bairro,t.tipo_nome,c.cidade,i.id_negocio_tipo, COUNT(b.bairro) AS Qtd FROM  imoveis i 
	LEFT JOIN negocio_tipo n ON (n.id= i.id_negocio_tipo) 
	LEFT JOIN imoveis_tipo t ON (t.id = i.id_tipo_imovel) 
	LEFT JOIN cidades c ON (c.id = i.id_cidade)
	LEFT JOIN bairros b ON (b.id = i.bairro) 
	WHERE ".$where." GROUP BY b.bairro HAVING COUNT( b.bairro)  > 0 ORDER BY b.bairro ");
	//EXECUTA A QUERY  
	$conta=$sqlT_3->num_rows();
	$sqlT_3->bind_param('ss',$ativo,$negocio);
	$sqlT_3->execute();
	$this->sqlT_3=$sqlT_3->get_result();
	
	endforeach;
	endforeach;
	endforeach;
	
	endif;
	endif;
	endif;	
	
	}
	}

 

 

Abaixo a classe combocidades.php

 

 require_once("tags2.php"); 
    //RECEBE PARÃMETRO 
    class ComboCidades{
    private $conecta_banco;
    
    public function __construct(){
    $this->conecta_banco= new Conexao();
    $this->conecta_banco->Conectar();
    }
    
    public $id_negocio;
    public $id_tipo;
    public $busca_cidade;
    public $id_cidade;
    public function PegarCidadeId(){
    function filter( $str ){
    return addslashes( $str );
    }
    function getPost( $key ){
    return isset( $_GET[ $key ] ) ? filter( $_GET[ $key ] ) : null;
    }
    
    
    $this->id_negocio = getPost('id_negocio');
    $this->id_tipo = getPost('id_tipo');
    $this->id_cidade=getPost('id_cidade');
    
    }
    }
	 class ExibirBairros extends DadosComboCidades{
    
    public function Mostrar(){
    extract( $_GET, EXTR_OVERWRITE);
    $busca_bairro=new DadosComboCidades();
    $busca_bairro->BuscarCidades(); 
    $busca_bairro->id_cidade;
    if($busca_bairro->id_cidade==0):
    echo "<div class='atencao'></div><div class='atencao_text'>Selecione uma Cidade para pesquisar por Bairros !</div> "."<br />";
    endif;
    
    echo "<div class='sel'></div>"."<br />";
    /* MONTA CRITERIOS DE BUSCA */             
    //QUERY  
    
   

    echo '<br /><div class="botao-modal"><button type="button"  class="botao_marcar" title="Todos" id="todos" onclick="marcardesmarcar();">Selecionar Todos</button>	
	</div>';



    Aqui onde chamo os array já convertidos pelo foreach na classe DadosComboCidades.php

    echo'<br /><br /><div style=" font-weight:bold; margin-left:30px;">'.$busca_bairro->imoveis_tipo.' (s) </div>';
    echo'<br /><br /><div style=" font-weight:bold; margin-left:30px;">'.$busca_bairro->cidade.'</div>';
    echo'<div class="form_modal"><form name="form1">'.'<br /><br />';
    
    
      
      
    echo '<input type="checkbox" id="c'.$bairro.'" class="marcar" value="'.$bairro_id.'" name="bairro[]"/><label 
    for="c'.$bairro_id.'"><span></span></label>  '.$bairro.' - '.$cidade.' ('.$qtd.') <br />';
    
    //FECHA IF (row)                                               
    //PRINTA O RESULTADO  
    

    
    if($bairro_id):
    echo FALSE;
    else:
    echo "<div class='atencao'></div><div class='atencao_text'>Não existem imóveis para essa Busca !</div> "."<br />";
    
    
    echo'</form></div></b><br />';
    endif;
    }
    }
Abaixo onde istancio e chamo a classe DadosComboCidades
    $f=new ExibirBairros();
    $f->Mostrar();

RESUMINDO:

 

O que acontece é que eu não consigo pegar o array no seu índice, ou seja , por exemplo se o id tipo for ID: 1 rola beleza a busca  e a impressão dos dados mas se eu for buscar 2 informações no mesmo id tipo , assim => ID: array(5,9) , na outra página só consigo pegar o último id em vez de buscar 5,9 só busca o 9, por eu estar acessando o array de outra página , e pelo que entendi , acessando o array de outra página ele só percorre o último em vez do índice.

Mas se eu jogar todo código dentro da classe ai roda beleza , mas não quero misturar objeto com html (isso é má prática na programação), por isso estou remodelando meu código em POO

Se alguém tiver uma solução eu agradeço  .  :)

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

  • Similar Content

    • By granderodeo
      Estou tentando pegar dados de duas tabelas logo no inicio da sessão quando o usuário realiza o login, quando utilizo o 
      SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' Consigo realizar o login tranquilamente, até ai de boa, mais quando modifico o código para
       
      $comando="SELECT * FROM usuarios INNER JOIN orders ON usuarios.id_usuario = orders.id_usuario WHERE email.usuarios='$login' and senha.usuarios='$senha'"; Ele só me deixa fazer login se o usuário já tiver algum orders (pedido). O que estou tentando fazer é assim que o usuário loga, mostre também os pedidos que ele já fez etc, que são dados que estão em outra tabela. Alguém consegue ver meu erro?
    • By Fernando Rafael
      Estou tendo problemas com a leitura de porta serial com PHP, consigo facilmente escrever na mesma, mas sempre que no comando de abertura da porta eu coloco que haverá permissão de leitura o PHP trava e fica carregando infinitamente, e a porta fica bloqueada e só libera quando reiniciado o computador.
       
      Segue o cod:
      exec('MODE COM1:9600,n,8,1'); //seta configuração na porta COM $fp=fopen("COM1","r+b"); if(!$fp) {     echo("Erro ao abrir a porta com1");     exit; } else {         echo("COM1 aberta <br>"); } fwrite($fp,Chr(5));  //escrevendo valor na porta sleep(1); //pausa para retorno dos dados echo (fgets($fp)); fclose($fp); já tentei  colocar:
      fopen("COM1", "r+b");
      fopen("COM1", "r+t");
      fopen("COM1", "r");
      fopen("COM1", "w+");
      fopen("COM1", "r+");
       
      para escrever consigo normal, com o fopen("COM1", "w");.  mas já para ler.....
       
      Notei que na internet tem muito sobre esse problema, inclusive falaram em permissões de usuário, sendo que nos casos em que conseguiram, estavam usando o Linux.
      Eu estou usando o W7 e W10 com PHP 5.2, se for o caso de permissões, como resolvo isso? preciso configurar mais alguma coisa no php.ini?
       
      Também já tentei usar uma classe: phpSerial
       
      Mas retorna o seguinte erro:
      Warning: Reading serial port is not implemented for Windows in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\balanca\php_serial.class.php on line 503
       
       
    • By rogerblower
      Pessoal tenho a seguinte tabela
      id | id_etapa | id_evento | posicao | nome | pontos
      1  |  1             |        2         |   1           | joao      |  10
      2  |  1             |        2         |   2           | pedro    |  9
      3  |  1             |        2         |   3           | maria    |  8
      4  |  1             |       2          |   4           | jose       |  7
      5  |  2             |      2          |   3           | joao       |  8
      6  |  2             |  2              |   1           | pedro    | 10
      7  |  2             |   2             |  2            | maria    |  9
      8  |  2             |  2              |   4          | jose        |  7
       
      O resultado da consulta pretendido é este
      Pos  |  nome |   pontos
      1      |  pedro   | 19
      2      |   joao   | 18
      3      |  maria  |  17
      4      |  jose  |  14
       
      Com esta consulta não ordenando a coluna posicao como esperado, ela repete a posicao e não faz a soma, ex:
       1     joao     10
       1     pedro     10
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome, posicao ORDER BY pontos DESC posicao ASC"); Com esta outra consulta a soma esta correta o agrupamento nome esta correto, não se repetem, mas a coluna posicao fica fora de ordem;
       
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome ORDER BY pontos DESC posicao ASC"); Não estou conseguindo acertar a consulta, alguém me ajuda?
    • By rjlfurtado
      Segue abaixo o exemplo de como seria feito em SQL:
      CREATE TABLE tabela ( campo1 DOUBLE, campo2 DOUBLE, divisao DOUBLE AS (campo1/campo2) ); Agora eu preciso criar uma migração no Laravel 6, segue exemplo abaixo:
      $table->integer('qtd_saida'); $table->decimal('valor_uni', 8, 2); $table->double('valor_total')->as(qtd_saida * valor_uni);  
    • By Marxrj
      Olá a todos!,
      Queria aqui uma dica se alguém sabe como alinhar fotos no centro pelo bootstrap.
      Usando o padrão fotos retratos fica como abaixo
      __________  __________
      __________
       
      Mas eu queria que quando tivesse um número impar, a foto não ficasse alinhada na esquerda e sim centralizada como abaixo
      __________  __________
                __________
       
      Estou usando este padrão abaixo aonde ele alinha duas fotos ao lado, mas quando tem somente um ou em número impar, essa não centraliza e sim fica a esquerda.
      <div class="col-xs-12 col-sm-10 col-lg-6 col-md-3">
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.