Ir para conteúdo

Arquivado

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

lendadomato

Montar Array fora do laço vindo do banco de dados

Recommended Posts

Olá pessoal,

 

estou precisando montar um array fora do laço de uma consulta vinda do banco de dados, segue o formato do array que tenho:

 

var feriado=new Array();
feriado['25/12/2017']='25/12/2017';
feriado['1/1/2018']='1/1/2018';
feriado['13/2/2018']='13/2/2018';
feriado['30/3/2018']='30/3/2018';
feriado['1/4/2018']='1/4/2018';
feriado['21/4/2018']='21/4/2018';
feriado['1/5/2018']='1/5/2018';
feriado['31/5/2018']='31/5/2018';
feriado['7/9/2018']='7/9/2018';
feriado['12/10/2018']='12/10/2018';
feriado['2/11/2018']='2/11/2018';
feriado['15/11/2018']='15/11/2018';
feriado['25/12/2018']='25/12/2018';

com esse array eu faço uma comparação que funciona da seguinte maneira:
 

if ((numerodasemana === 0) || (numerodasemana === 1) || (datacalendario === feriado[datacalendario])) {
            return true;
        } else {
            return false;
        }

mas só que eu queria substituir esses dados por dados vindos do banco de dados, segue a consulta:

$.ajax({
        data: 'idatendente='+idatendente,
	    type:'post',		//Definimos o método HTTP usado
	    dataType: 'json',	//Definimos o tipo de retorno
		url: 'listar-datas.php',//Definindo o arquivo onde serão buscados os dados
    success: function(dados){
      		  $.each(dados, function(i, obj){
				 feriado = obj.data;

			  })
    }
}); 

 Desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que ficou confuso o que quero, na verdade eu preciso desabilitar datas

do calendário do framework7, o atendente precisa desabilitar as datas que não poderá atender

por exemplo: feriado municipal, licença doença, maternidade e outros motivos. Segue o código completo

que desabilita datas do calendário:

var calendarDateFormat = fw7.calendar({
    input: '#calendario',
            dateFormat: 'DD, dia dd de MM',
            minDate: ontem,
// desabilita as datas informadas
            disabled: function(date){  
// formata a data
var numerodasemana= date.getDay();            
var dia= date.getDate();
var mes= date.getMonth() +1;
var ano= date.getFullYear();
var datacalendario = dia+'/'+mes+'/'+ano;

// início consulta que busca as datas gravadas no banco
var idatendente = "10";
$.ajax({
        data: 'idatendente='+idatendente,
	    type:'post',		//Definimos o método HTTP usado
	    dataType: 'json',	//Definimos o tipo de retorno
		url: 'model/Cadastros/Calendario/listar-datas.php',//Definindo o arquivo onde serão buscados os dados
        success: function(dados){
        $.each(dados, function(i, obj){
				 feriado = obj.data;
			  }) 
    },
});
// fim consulta que busca as datas no banco

// array com as datas setadas na mão
var feriado=new Array();
feriado['25/12/2017']='25/12/2017';
feriado['1/1/2018']='1/1/2018';
feriado['13/2/2018']='13/2/2018';
feriado['30/3/2018']='30/3/2018';
feriado['1/4/2018']='1/4/2018';
feriado['21/4/2018']='21/4/2018';
feriado['1/5/2018']='1/5/2018';
feriado['31/5/2018']='31/5/2018';
feriado['7/9/2018']='7/9/2018';
feriado['12/10/2018']='12/10/2018';
feriado['2/11/2018']='2/11/2018';
feriado['15/11/2018']='15/11/2018';
feriado['25/12/2018']='25/12/2018';

// faz a comparação para desabilitar as datas
// aqui eu faço a comparação do dia 0 e a que são domingo e segunda-feira
// e comparo as datas do array que são feriados
if ((numerodasemana === 0) || (numerodasemana === 1) || (datacalendario === feriado[datacalendario])) { 
            return true;
        }else{
            return false;
        }
            },
});

Os valores 0 e 1 representam todos os domingos e segunda-feira de todos os meses que também serão buscados no banco.

vou colocar outro dia qualquer inserido no banco para desabilitar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

fiz uma coisa muito doida, para no mínimo mostrar as datas junto com o datepicker ao clicar foi

fazer isso:

// início consulta que busca as datas gravadas no banco
var idatendente = "10";
$.ajax({
        data: 'idatendente='+idatendente,
	    type:'post',		//Definimos o método HTTP usado
	    dataType: 'json',	//Definimos o tipo de retorno
		url: 'model/Cadastros/Calendario/listar-datas.php',//Definindo o arquivo onde serão buscados os dados
        success: function(dados){
     
     if (dados.length > 0){	
			  var optionferiado = '';
			  $.each(dados, function(i, obj){
				  optionferiado += '<option value="'+obj.data+'">'+obj.data+'</option>';
			  })
		   }
      $('#selectferiado').html(optionferiado).show();
      

    }
});

$('#seletcdatas').html('<div class="content-block-title">pesquisar</div><ul>'+
    '<li>'+
            '<div class="item-content">'+
              '<div class="item-inner">'+
                '<div class="item-input">'+
                  '<select id="selectferiado"></select>'+
                '</div>'+
              '</div>'+
            '</div>'+
    '</li>'+
'</ul>');

$('#seletcdatas').html('<p id="selectferiado"></p>');
// fim consulta que busca as datas no banco

e no html:

<div class="list-block" id="seletcdatas"></div>

agora como faço para pegar esses valores do select e jogar na comparação dentro do datepicker?

if ((numerodasemana === 0) || (numerodasemana === 1) || (datacalendario === feriado[datacalendario])) { 
            return true;
        }else{
            return false;
        }
            },

o projeto parou por esse motivo e preciso muito de uma ajuda, até mesmo uma ideia

diferente desta que tenho e que funcione, agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa forma com variável global retorna apenas um registro.

success: function(dados){
     if (dados.length > 0){	
			 $.each(dados, function(i, obj){
				  diaferiado = obj.dataferiado;
			})
		  }
alert(diaferiado);
}

Consulta no banco:

    $qry = mysqli_query($con, "SELECT * FROM calendario where idatendente='$idatendente'");    
    while($resultado = mysqli_fetch_assoc($qry)){
        $vetor[] = array_map('utf8_encode', $resultado); 
    }    
//Passando vetor em forma de json
    echo json_encode($vetor);

Será que há alguma maneira de retornar esses dados como uma string e com um determinado formato em bloco?

Assim eu separo os dados com um split e faço a comparação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui em parte. Gravei no banco as datas separadas com vírgula

e depois a comparação e funcionou:

var idatendente = "10";
$.ajax({
        data: 'idatendente='+idatendente,
	    type:'post',		//Definimos o método HTTP usado
	    dataType: 'json',	//Definimos o tipo de retorno
		url: 'model/Cadastros/Calendario/listar-datas.php',//Definindo o arquivo onde serão buscados os dados
        success: function(dados){
     if (dados.length > 0){	
			 $.each(dados, function(i, obj){
				  diaferiado = (obj.dataferiado).split(',');
			})
		  }
}
});


// faz a comparacao
if ((numerodasemana === 0) || (numerodasemana === 1) || (diaferiado.indexOf(datacalendario) != -1)) { 
            return true;
        }else{
            return false;
        }

Senhor Moderador, por favor deixe este post em aberto caso alguém tenha a solução

e possa me ajudar na opção anterior, pois sei que terei muito trabalho para gravar novas datas

e remover datas antigas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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