Jump to content
ezzcardoso

foreach aninhado e array select

Recommended Posts

Pessoal, estou fazendo um script php para selecionar registros no banco de dados... que funciona normalmente.. porém, não estou sabendo como trarar o dados gerados pelo script. Vejamos um exemplo.

<?php
abstract class Eac
{
	private $localhost = "localhost";
	private $root = "root";
	private $password = "";
	private $database = "database";
	private $port = "3306";
	protected function open()
	{
		$conn = new mysqli($this->localhost, $this->root, $this->password, $this->database, $this->port);
		$conn->select_db($this->database);
		$conn->set_charset("utf8");
		if ($conn->connect_error)
		{
			return $conn->connect_error;
		}
		else
		{
			return $conn;
		}
	}
}
class SQL extends Eac
{
	public function insert($table, $array)
	{
		if (is_array($array))
		{
			$conn   = $this->open();
			$fields = array();
			$values = array();
			foreach ($array as $key => $value)
			{
				$fields[] = $key;
				$values[] = "'" . $value = $conn->real_escape_string($value) . "'";
			}
			$fields = implode(",", $fields);
			$values = implode(",", $values);
			$sql    = "INSERT INTO {$table} ({$fields}) VALUES ({$values})";
			if ($conn->query($sql))
			{
				return array(
					"Error" => false,
					"insert_id" => $conn->insert_id,
					"affected_rows" => $conn->affected_rows,
					"info" => $conn->info
				);
			}
			else
			{
				return array(
					"error" => $conn->error
				);
			}
			$conn->close();
		}
		else
		{
			echo ("Não é array");
		}
	}
	public function delete($table, $where)
	{
		$conn = $this->open();
		$sql  = "DELETE FROM {$table} {$where}";
		if ($conn->query($sql))
		{
			return array(
				"affected_rows" => $conn->affected_rows,
				"info" => $conn->info
			);
		}
		else
		{
			return array(
				"error" => $conn->error
			);
		}
		$conn->close();
	}
	public function update($table, $array, $where)
	{
		if (is_array($array))
		{
			$conn = $this->open();
			$sql  = "UPDATE {$table} SET ";
			$sets = array();
			foreach ($array as $column => $value)
			{
				$sets[] = $column . " = '" . $value = $conn->real_escape_string($value) . "'";
			}
			$sql .= implode(',', $sets);
			$sql .= $where;
			if ($conn->query($sql))
			{
				return array(
					"Error" => false,
					"insert_id" => $conn->insert_id,
					"affected_rows" => $conn->affected_rows,
					"info" => $conn->info
				);
			}
			else
			{
				return array(
					"error" => $conn->error
				);
			}
			$conn->close();
		}
	}
	public function select($table, $array, $rules)
	{
		$conn = $this->open();
		switch ($array)
		{
			case '*':
			    $conditions = array();
			    foreach ($rules as $column => $value)
				{
					$conditions[] =" {$column} {$value} ";
				}
				$condition = implode("",$conditions); 
				echo $sql = "SELECT * FROM {$table} {$condition}";
				break;
			case is_array($array):
				$fields = array();
				foreach ($array as $column => $value)
				{
					$fields[] = $value;
				}
				$conditions = array();
				foreach ($rules as $column => $value)
				{
					$conditions[] =" {$column} {$value} ";
				}
				$field = implode(",", $fields);
				$condition = implode("",$conditions);
				echo $sql   = "SELECT {$field} FROM {$table} {$condition}";
				break;
		}
		$select = $conn->query($sql);
		$result = array();
		if ($select->num_rows > 0)
		{
			$stack = array();
			while ($row = $select->fetch_array())
			{
				$stack[] = $row;
				
			}
			return ($stack);
		}
		else
		{
			echo "0 results";
		}
		$conn->close();
	}
}
?>

Aí em cima é meu script normal pra fazer o select e está 100% funcionando.

 

 

Agora o problema é quando eu faço o comando 

 

 

$database =  new SQL();

$cliente = $database->select("cliente","*",$rules = array());

var_dump($cliente);

Mostra o seguinte 

array (size=2)
  0 => 
    array (size=18)
      0 => string '21' (length=2)
      'id' => string '21' (length=2)
      1 => string 'Lula Luiz Inacio Da Silva' (length=25)
      'nome' => string 'Lula Luiz Inacio Da Silva' (length=25)
      2 => string 'CPF' (length=3)
      'tipo' => string 'CPF' (length=3)
      3 => string '12345678912' (length=11)
      'CPF_CNPJ' => string '12345678912' (length=11)
      4 => string '66552852154' (length=11)
      'telefone_celular' => string '66552852154' (length=11)
      5 => string '31454564' (length=8)
      'telefone_comercial' => string '31454564' (length=8)
      6 => string 'lula@povo.com.br' (length=16)
      'email' => string 'lula@povo.com.br' (length=16)
      7 => string '5936d1d7296d0' (length=13)
      'cliente_id' => string '5936d1d7296d0' (length=13)
      8 => string 'lula é um  ex presidente...' (length=28)
      'obs' => string 'lula é um  ex presidente...' (length=28)
  1 => 
    array (size=18)
      0 => string '20' (length=2)
      'id' => string '20' (length=2)
      1 => string 'Dilma Luiz Inacio Da Silva' (length=26)
      'nome' => string 'Dilma Luiz Inacio Da Silva' (length=26)
      2 => string 'CPF' (length=3)
      'tipo' => string 'CPF' (length=3)
      3 => string '12345678912' (length=11)
      'CPF_CNPJ' => string '12345678912' (length=11)
      4 => string '66552852154' (length=11)
      'telefone_celular' => string '66552852154' (length=11)
      5 => string '31454564' (length=8)
      'telefone_comercial' => string '31454564' (length=8)
      6 => string 'lula@povo.com.br' (length=16)
      'email' => string 'lula@povo.com.br' (length=16)
      7 => string '5936d1b61f716' (length=13)
      'cliente_id' => string '5936d1b61f716' (length=13)
      8 => string 'lula é um  ex presidente...' (length=28)
      'obs' => string 'lula é um  ex presidente...' (length=28)

 

agora... como que eu ponho isso em tabela ?????

 

 

eu fiz o seguinte.

 

 

 foreach($cliente as $key => $value){
 	foreach($value as $keys => $values){
 		
 		 echo $values->nome; $values->CPF;
	 	
	 }
	 
 	
 }

 

 

só que não funciona....

 

 

resultado 

 

Notice: Trying to get property of non-object 

 

 

...

 

 

 

Minha questão é.... COMO  posso organizar aquela Array   em uma tabela de marcação HTML 

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 Erick Plant
      Olá! Precisando de uma ajudinha.
       
      FICAREI MUITO GRATO PELA AJUDA...SE PUDEREM ME DAR UMA LUZ!
       
      Estou arrumando um código que foi de outra pessoa, mas antes disso, preciso "apagar o incêndio" aqui e fazer funcionar uma implementação.
       
      Tenho um dropzone que carrega um arquivo sem necessidade de form. O problema começa por agora. Foi-me pedido para que eu implementasse um select trazendo do banco uma info e que enviasse via get 'junto com a url que envia as informaçoes do arquivo'.
      O carregador do select foi feito, eu estou pegando o value do select dinamicamente, pois não tem form.
      Porém, o problema é q nao sei como pegar esse value capturado para implentá-lo  na url via get.
       
       
      o js  e o dropzone na pag é esse:
      //AQUI EU PEGO O VALOR DO SELECT DE FORMA DINÂMICA id = ''; $(document).ready(function () { $("#seguimento").change(function () { id = $('#seguimento').val(); }); }); Dropzone.autoDiscover = false; Dropzone.options.tstDz = { //////////////////////////////////////////////////////// //AQUI O DROPZONE QUE PASSA OS PARAMETROS VIA GET /////////////////////////////////////////////////////// url: "<?= base_url('homeCgmrr/MonitoramentoPadraoDesempenho/addDoc?ambiente='.$ambiente.'&value='); ?>", paramName: "arquivo", maxFilesize: 2, acceptedFiles: ".xlsx,.ods,.xls,.csv", addRemoveLinks: true, // init: function () { // this.on("complete", function (file) { // setGallery(file); // }) // } init: function () { this.on('error', function(file, response) { $.notify("Você não pode fazer upload de arquivos com essa extensão, apenas arquivos .xlsx !", 'warning'); }); this.on('success', function(file, resp){ if(resp['status'] == false){ $.notify("Ocorreu erro no preenchimento da planilha. Por favor, verifique e tente novamente.", 'warning'); setGalleryError(file); }else{ setGallery(file); $.notify("Arquivo enviado com Sucesso!", 'success'); } }); } };  
      Como eu posso fazer pra carregar o id SE o base_url está em PHP?
      url: "<?= base_url('homeCgmrr/MonitoramentoPadraoDesempenho/addDoc?ambiente='.$ambiente.'&value='AQUI VAI O ID); ?>",  
      Obrigado pela ajuda!
       
    • By Elisame Araújo
      Bom dia,
       
      Estou montando um site de clã de jogos online (especificamente de Battlefield), e neste momento estou desenvolvendo o painel de administração do site, mas me deparei com uma dúvida que não consigo encontrar uma situação na internet que se aplique ao que eu preciso.
       
      A situação é a seguinte:
       
      Eu tenho um módulo onde o administrador vai adicionar um mapa, um tamanho de jogo e um modo para a rotação do servidor do clã, a exemplo desse pop-up:
       
      A lista de mapas vem do BD.
       
      O que eu preciso é que o segundo e o terceiro <select> sejam preenchidos baseados na seleção do primeiro. Onde, a exemplo:

       
      Seleção de Mapa: Ilhas Lofoten
      Opções Disponíveis a partir do 1º Select: 16 e 32 Jogadores
      Opções Disponíveis a partir do 1º e 2º Select: Dominação, TDM, etc.
       
      Para ficar mais simplificado: Seleção 1 > Opções A Partir de Seleção 1 > Opções A partir de Seleção 1 e 2
       
      Infelizmente eu ainda não tenho conhecimento em JavaScript ou JQuery ou JSON - ainda estou para aprender -, e não consigo encontrar uma resposta simplificada para isso
       
      Como eu poderia fazer isso da maneira mais simples ou didática?
       
    • By violin101
      Caros amigos, saudações...
       
      Estou com um pequeno problema de paginação.
       
      Tenho uma tabela de HISTÓRICO onde toda a movimentação que for realizada com o Produto o sistema grava nessa tabela do MySql.  <<=== até aqui tudo bem
       
      O problema é o seguinte:
       
      quando exibo todos os dados na Tabela da seguinte forma, o sistema faz a conta corretamente.
      DATA MOV        HISTÓRICO                                           QTDE     SALDO
      01/11/2020......Saldo Inicial.........................................100 +      100
      02/11/2020......Venda conf. Compr. n.0001...............   30 -          70
      02/11/2020......Devol. conf. Compr. n.0002...............   10 +         80
      02/11/2020......Venda conf. Compr. n.0003...............   15 -          65
      =====================================================
      ESTOQUE ATUAL DO PRODUTO...............................................65
       
       
      Quando faço a paginação o resultado da TABELA fica assim:
      PÁGINA 1
      DATA MOV        HISTÓRICO                                           QTDE     SALDO
      01/11/2020......Saldo Inicial.........................................100 +      100
      02/11/2020......Venda conf. Compr. n.0001...............   30 -         70
       
      =====================================================
       
      PÁGINA 2
      DATA MOV        HISTÓRICO                                           QTDE     SALDO
      02/11/2020......Venda conf. Compr. n.0002...............   10 +          10
      02/11/2020......Venda conf. Compr. n.0003...............   15 -           - 5
       
      ======================================================
       
      Como faço para passar o Resultado final da Página ,1 para a Página 2  e etc ?
       
      Abaixo posto o Código que estou usando.
       
      Controller
      //Função para Visualizar e Paginar Histórico de Produtos function history($id = null) { if (!$this->permission->checkPermission($this->session->userdata('permissao'), 'rProduto')) { $this->session->set_flashdata('error', 'Você não tem permissão para visualizar o histórico do produto.'); redirect(base_url()); } //URL para fazer paginação $url_hist = $id!=NULL ? base_url('admin/produtos/history/'.$id) : base_url('admin/produtos/history/'.$id); /**Paginação*/ $get_total_results = $this->produtos_model->getHistory($id); $tot_histores = $get_total_results['total']; $get_paginar = $this->pagina_history($url_hist, $tot_histores, 2); $get_produtos = $this->produtos_model->getHistory($id, $get_paginar['inicio'], $get_paginar['final']); $this->load->view('estilo/header', $this->data); $this->load->view('admin/produtos/history', array("results" => $get_produtos['dados'], "paginar" => $get_paginar['paginacao']) ); } /*Função para paginar*/ public function pagina_history($url_pagination, $tot_histores, $result_hist_pagina=2){ $this->load->library('table'); $this->load->library('pagination'); $config['base_url'] = $url_pagination; $config['total_rows'] = $tot_histores; $config['per_page'] = $result_hist_pagina; $config['page_query_string'] = TRUE; $config['next_link'] = 'Próxima'; $config['prev_link'] = 'Anterior'; $config['full_tag_open'] = '<div class="pagination alternate"><ul>'; $config['full_tag_close'] = '</ul></div>'; $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li><a style="color: #2D335B"><b>'; $config['cur_tag_close'] = '</b></a></li>'; $config['prev_tag_open'] = '<li>'; $config['prev_tag_close'] = '</li>'; $config['next_tag_open'] = '<li>'; $config['next_tag_close'] = '</li>'; $config['first_link'] = 'Primeira'; $config['last_link'] = 'Última'; $config['first_tag_open'] = '<li>'; $config['first_tag_close'] = '</li>'; $config['last_tag_open'] = '<li>'; $config['last_tag_close'] = '</li>'; $qtidade = $config['per_page']; $this->pagination->initialize($config); $dados['final'] = $qtidade; $dados['inicio'] = $this->input->get('per_page') != NULL ? $this->input->get('per_page') : '0'; $dados['paginacao'] = $this->pagination->create_links(); return $dados; }  
      MODEL:
      //Função de Busca Histórico do Produto function getHistory($id=null, $inicio=NULL, $quantidade=NULL){ $inicio = $inicio != NULL ? "LIMIT {$inicio},{$quantidade}" : ""; $numClie = $this->session->userdata('idCli'); //Executa SQL no Mysql $sql = $this->db->query("SELECT historico.*, produtos.*, clientes.*, marcas.* FROM historico INNER JOIN produtos ON produtos.idProdutos = historico.prd_idProdutos INNER JOIN clientes ON clientes.idClientes = historico.clie_idClientes INNER JOIN marcas ON marcas.idmarcas = produtos.marcas_idmarcas WHERE historico.prd_idProdutos = $id AND historico.clie_idClientes = $numClie ORDER BY idhistorico ASC {$inicio} "); $dados['inicio'] = $inicio; $dados['total'] = $sql->num_rows(); $dados['dados'] = $sql->result_array(); return $dados; }  
      VIEW:
      <?php defined('BASEPATH') OR exit('No direct script access allowed'); $this->load->view('admin/tema/topo'); ?> <div class="content-wrapper"> <!-- Content Header (Page header) --> <section class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1>Histórico do Produto</h1> </div> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="<?php echo base_url()?>admin/">Home</a></li> <li class="breadcrumb-item active">Histórico do Produto</li> </ol> </div> </div> </div><!-- /.container-fluid --> </section> <?php if (!$results) { ?> <section class="content"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="card"> <div class="card-header"> <a href="<?php echo base_url() ?>admin/produtos" id="" class="btn btn-danger"> <i class="fa fa-undo"></i> Voltar </a> </div> <div class="card-body"> <table id="tab_histprd" class="table table-bordered table-hover"> <thead style="background: #cecece;"> <tr> <th style="text-align:center;">Data Lançamento</th> <th style="text-align:center;">Nr Dcto</th> <th style="text-align:center;">Histórico do Produto</th> <th style="text-align:center;">Movimentação</th> <th style="text-align:center;">Resultado</th> </tr> </thead> <tbody> <tr> <td colspan="5" style="text-align:center;"> <img src="<?php echo base_url()?>assets/img/logo_mail.png" alt="" style="height:100%; margin: 50px 40px;"> </td> </tr> </tbody> </table> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> <!-- /.col --> </div> <!-- /.row --> </div> <!-- /.container-fluid --> </section> <?php } else { ?> <section class="content"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="callout callout-success"> <h5> <strong><?php echo $results[0]['cod_interno']; ?> - <?php echo $results[0]['descricao']; ?> - <?php echo $results[0]['mrc_descr']; ?></strong> </h5> </div> <div class="card"> <div class="card-body"> <form id="frmHist" action="<?php echo base_url(); ?>admin/relatorios/imprHistory" method="post"> <div class="row"> <div class="col-lg-3"> <label for="dataInicial">Data Início:&nbsp;<span class="required">*</span></label> <div class="controls"> <input type="date" name="dataInicial" value="" class="form-control" style="width:70%;" required /> </div> </div> <div class="col-lg-3" style="margin-left:-70px;"> <label for="dataFinal">Data Final:&nbsp;<span class="required">*</span></label> <div class="controls"> <input type="date" name="dataFinal" value="" class="form-control" style="width:70%;" required /> </div> </div> <div class="col-lg-3" style="margin-left:-75px; margin-top:31px;"> <input type="hidden" id="idPrd" name="idPrd" value="<?php echo $results[0]['idProdutos']; ?>" /> <input type="hidden" id="idInt" name="idInt" value="<?php echo $results[0]['cod_interno']; ?>" /> <button type="submit" class="btn btn-success" formtarget="_blank"> <i class="fa fa-print"></i> Imprimir </button> &nbsp;&nbsp; <a href="<?php echo base_url() ?>admin/produtos" id="" class="btn btn-danger"><i class="fa fa-undo"></i> Voltar</a> </div> </div> <div class="clearfix"></div> <br/> <table id="tab_histprd" class="table table-bordered table-hover"> <thead style="background: #cecece;"> <tr> <th style="text-align:center;">Data Lançamento</th> <th style="text-align:center;">Nr Dcto</th> <th style="text-align:center;">Histórico do Produto</th> <th style="text-align:center;">Movimentação</th> <th style="text-align:center;">Resultado</th> </tr> </thead> <tbody> <?php $saldo = 0; foreach ($results as $r) { //Converte Data para Padrão Brasileiro $dta_hist = date(('d/m/Y'), strtotime($r['dtahist'])); if ($r['credito'] == 0) { $mvts = number_format($r['credito'], 0, ",", "."); $corc = '#000000'; } else { $mvts = number_format($r['credito'], 0, ",", ".").' +'; $corc = '#080871'; } if ($r['debito'] == 0) { $mvto = number_format($r['debito'], 0, ",", "."); $cors = '#000000'; } else { $mvto = number_format($r['debito'], 0, ",", ".").' -'; $cors = '#AF0F0F'; } //Executa Cálculo entre CRD x DEB $saldo = ($r['credito'] - $r['debito']) + $saldo; $result = number_format($saldo, 0, ",", "."); //Mostra da Tabela echo '<tr>'; echo '<td width="70" height="10" style="text-align:center;">' .$dta_hist. '</td>'; echo '<td width="70" height="10" style="text-align:left;">' .$r['numdcto']. '</td>'; echo '<td width="240" height="10" style="text-align:left;">' .$r['historico']. '</td>'; if($mvts != 0){ echo '<td width="90" height="10" style="text-align:right; color:'.$corc.'"> <strong>'.$mvts.'</strong></td>'; } elseif($mvto != 0) { echo '<td width="90" height="10" style="text-align:right; color:'.$cors.'"> <strong>'. $mvto.'</strong>&nbsp;</td>'; } else { echo '<td width="90" height="10" style="text-align:right;">0</td>'; } echo '<td width="90" height="10" style="text-align:right;">'.$result.'</td>'; echo '</tr>'; }//Fim do Foreach ?> </tbody> </table> <?php echo $paginar; ?> </form> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> <!-- /.col --> </div> <!-- /.row --> </div> <!-- /.container-fluid --> </section> <?php } ?> </div> <?php $this->load->view('estilo/footer'); ?>  
       
      Grato a todos.
       
      Atenciosamente,
       
      Cesar
    • By landerbadi
      Olá pessoal, boa noite
       
      Tenho uma tabela no banco de dados mysql com três colunas (id, audio, tocado) e um player de audio html5 simples.
       
      <audio controls>
        <source src="horse.ogg" type="audio/ogg">
        <source src="horse.mp3" type="audio/mpeg">
      </audio>
       
      Fiz uma consulta no bd para me retornar um (1) registro. Com base nessa consulta o player toca o audio correspondente.
      Preciso fazer com que após o término do audio seja gravado na coluna 'tocado' no bd a palavra 'OK'.
      Tem como fazer isso?
    • By Matheus B. Siqueira
      Fala pessoal, meu problema é o seguinte: Tento retornar os valores do json_encode via AJAX, só que na hora de armazenar no const ele da erro de:
      <b>Notice</b>: Undefined variable: videos_pendentes in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> <br /> <b>Notice</b>: Trying to access array offset on value of type null in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> null); Não sei qual seria a melhor forma de retornar esses dados, alguma sugestão?
      AJAX:
      $('#btn-lista-videos-carousel').click(function() { var nome_monitor = $("#nomecomp").val(); $.ajax({ url: 'pesquisar_video_pendente.php', data: {nome_monitor}, dataType: 'json', type: "POST", complete: function(data) { const videos_pendentes = JSON.parse(<?php echo json_encode($videos_pendentes[0]) ?>); let itens = ''; let indicadores = ''; $('#botaobaixar').hide(); $('#tudo_monitor').hide(); $('#carouselExampleIndicators_2').hide(); if (videos_pendentes.length > 0) { videos_pendentes.forEach(function(video, indice) { indicadores += '<li data-target="#carouselExampleIndicators" data-slide-to="' + indice + '" class="' + (indice == 0 ? 'active' : '') + '"></li>' itens += '<div data-link_video="' + video.link_video + '" data-id="' + video.idvideo_monitor + '" data-titulo="' + video.titulo_video + '" data-situacao="' + video.situacao + '" class="carousel-item ' + (indice == 0 ? 'active' : '') + '">'; itens += ' <iframe width="100%" height="350" src="https://www.youtube.com/embed/' + video.link_video + '" frameborder="0" allowfullscreen></iframe>' itens += '</div>'; }); $('#tudo_monitor').show(); $('#carouselExampleIndicators').show(); $('#carousel-indicadores').html(indicadores); $('#carousel-itens').html(itens); } else { alert('Nenhum vídeo pendente'); } } }); }); E o meu PHP, a qual busca os dados no mysql:
      <?php $monitor = $_POST['nomecomp']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor, $usuario, $senha, $banco); $consulta = "SELECT * FROM video_monitor WHERE video_monitor.monitor = '$monitor' AND video_monitor.pendente = 1 OR video_monitor.pendente = 3"; $resultados = mysqli_query($conexao, $consulta); $videos_pendentes = array(); while ($video = mysqli_fetch_assoc($resultados)) $videos_pendentes[] = $video; mysqli_free_result($resultados); mysqli_close($conexao); $videos_pendentes = json_encode($videos_pendentes); echo json_encode($videos_pendentes); ?>  
×

Important Information

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