Ir para conteúdo

Arquivado

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

rocha10

Dados de Array

Recommended Posts

Olá boas tardes,

 

estou com um problema que não consigo resolver, agradeço se algum colega me ajudar... é o seguinte.

 

tenho uma tabela mysql com ID's de input múltiplo, a estrutura da tabela quando é gravado os ID´s fica ["1","7","10"], agora queria separar estes ID's e criar uma consulta para pegar o nome correspondente 1, 7, 10 noutra tabela... de referir que seria em codeigniter ..

 

agradeço

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

podias passar para min um exemplo como ficaria a consulta no model no controller o codigo que fiz e o seguinte:

 

controler:

    foreach ($data as $key => $strID) {
            $Modelos_data = $this->model_modelos->getmodelosData($strID['Stock_id']);

            var_modelos = $Modelos_data;

    };

model:

    public function getmodelosData($id = null)
    {
        $sql = "SELECT * FROM modelos WHERE id = ?";
        $query = $this->db->query($sql, array($id));
        return $query->result_array();
    };

 

como passar para a view os modelos dos id em questão... peço desculpa mas no codeigniter estou perdido ainda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa forma:

On 10/29/2018 at 7:49 AM, rocha10 said:

    foreach ($data as $key => $strID) {             $Modelos_data = $this->model_modelos->getmodelosData($strID['Stock_id']);             var_modelos = $Modelos_data;     };

Serão feitas várias requisições ao database.

 

Tente assim:

<?php
// separa a ids em $data
$ids = array_column($data, 'Stock_id');

// guarda o retorno do model (que vai buscar os dados no database)
$this->data['modelos_data'] = $this->seu_model->getmodelosData($id);

// entrega os dados para a view, onde você poderá usar a variável $modelos_data
$this->load->view('sua-view', $this->data);



// no model
public function getmodelosData($id = null){
  // verifica se $id é um array (considera array de inteiros)
   if(is_array($id)){
     $this->db->where_in('suaTabela.suaID', $id);
     // se $id não for um array, considera-se que seja um inteiro
   } else {
     $this->db->where('suaTabela.suaID', $id);
   }
   return $this->db->get('suaTabela')->result_array();
};

Se funcionar, uma única requisição terá sido feita ao database.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, peço desculpa pela ausência!!

 

Ainda não consegui resolver esta dor de cabeça... vou deixar aqui o código que fiz, tive que reestruturar, para ver se alguém me pode ajudar.

 

	no model subfam
	public function get_subfam_Id($id = null){
		$sql = "SELECT * FROM tb_sub_fam WHERE id = ?";
		$query = $this->db->query($sql, array($id));
		return $query->row_array();
	}

	No controler
	public function fetchArtigosData(){
		$result = array('data' => array());
		
		$data = $this->model_artigos->getArtigosData();
		
		foreach ($data as $key => $value) {
			// aqui vai pegar os id's da tabela (tb_sub_fam_id) o formato que este gravado é ["1","3"] json, se for só um id da certo, mas assim não da...
			$sub_fam_id = json_decode($value['tb_sub_fam_id']);
			$obj = $this->model_subfam->get_subfam_Id($sub_fam_id);
				
			$result['data'][$key] = array(
				$value['nome'], //nome do artigo
				$obj['none_sub_fam'], //aqui devia neste caso criar duas tabelas dinamicamente com nome do id 1 e outra tabela com o id 3 para depois apresentar na data table.
			);
		}

		echo json_encode($result);
	}


	na views
	<div class="table-responsive">
		<table id="tabela_art" class="table table-hover table-responsive">
			<thead class="thead-default">
				<tr>
					<th>Nome Artigo</th>
					<?php foreach ($nome_fam as $k => $v): ?>						
					<th>
						<?php echo $v['tb_nome_fam_data']['name'] ?>							
					</th>				
					<?php endforeach ?>
				</tr>
			</thead>
		</table>
		
	</div>
		
	<script type="text/javascript">	
	var manageTable;
	var base_url = "<?php echo base_url(); ?>";

	$(document).ready(function() {
		manageTable = $('#tabela_art').DataTable({
		'ajax': base_url + 'artigos/fetchArtigosData',
		'order': [],
		});
	</script>
 
	a data table teria que ficar com o nome do artigo, e neste caso com o nome sub familia 1 e sub familia 2.

	agora como eu faço isso! ou da mesmo para fazer! não sei e agradecia uma ajuda.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá rocha, tudo bem? Espero que sim!

 

O json_decode como o amigo @washalbano informou deve funcionar.


$array = json_decode($sub_fam_id, true);

foreach($array AS $chave => $valor) {

 echo $chave."<br>";

}

 

Faça o teste com este código, deve funcionar.

 

Abraços, Wictor Pamplona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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