Ir para conteúdo

Arquivado

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

Cleudiney T Brandão

Criar DIV que atualize coluna <td> dentro do while

Recommended Posts

Saudações desenvolvedores,

 

Estou precisando da ajuda de vocês em uma questão:

Tenho uma pagina onde dentro de um laço while gero a consulta ao banco, mostrando um resultado por linha, sendo que em uma das colunas preciso que seja atualizada a cada 10 minutos apenas a coluna. 

Ja tentei com Ajax, mas aí atualiza apenas o primeiro resultado do while. 

Não posso dar refresh em toda a pagina pois tenho um MODAL que as vezes é chamado e se der refresh em toda a página perco as informações do modal. 

Alguém me daria uma dica de como fazer?

a parte do código a qual me refiro é esta aqui:

<!-- Inicio Modal -->
			<div class="modal fade" id="myModalcad" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
			
			<div class="modal-dialog" style="width: 1500px; margin: 0 auto; height: 100%;" role="document">
					<!-- botao Cadastrar -->
					<div class="modal-content">
						<div class="modal-header">
							<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
							<h4 class="modal-title text-center" id="myModalLabel">Cadastrar Receita</h4>
						</div>
							
						<!-- botao Cadastrar -->
						<div class="modal-body " >
							<form method="POST" action="processa.php" enctype="multipart/form-data">
								<div class="form-group">
									<label for="recipient-name" class="control-label">Nome:</label>
									<input name="nome" type="text" class="form-control">
								
								</div>
								<!--nao e do alterar -->
								<div class="form-group">
									<label for="message-text" class="control-label">ConsultaXXXXX:</label>
									<textarea  style="width:100%;height:630px" name="detalhes" class="form-control"></textarea>
								</div>
								
								<div class="modal-footer">
									<button type="submit" class="btn btn-success">Cadastrar</button>
								</div>
							</form>
						</div>
						<!-- botao Cadastrar -->
					</div>
				</div>
			</div>
			<!-- Fim Modal -->
			<!-- botao Cadastrar -->
			<? while($colunas_prontuario = mysqli_fetch_assoc($preenche))
							{ 
						$Descricao=['Descricao'];
			?>	
				<div id="lista">		
			<!-- TABELA -->
			<div class="row">
				<div class="col-lg-12">
					<table class="table table-striped" >
						
						<thead>
							<tr>
								<th>Hora</th>
								<th>Dra</th>
								<th>CodPac</th>								
								<th>Paciente</th>
								<th>Convenio</th>
								<th>Contato</th>	
								<th>Alergico</th>									
								<th>Ação</th>
							</tr>
						</thead>
						<tbody>
							
							<?php 
							
							
							while($rows_cursos = mysqli_fetch_assoc($resultado_cursos))
							
							{ 
						
							?>
								<tr>
									<td><?php echo $rows_cursos['hora'];?></td>
									<td><?php echo $rows_cursos['nomden'];?></td>
									<td><?php echo $rows_cursos['codpac']; ?></td>
									<td><?php echo $rows_cursos['nompac'];?></td>
									<td><?php echo $rows_cursos['nomefantasia'];?></td>										
									<td><?php echo $rows_cursos['celpac'];?></td>	
									<td><?php echo $rows_cursos['alergias'];?></td>
									<td><?php echo $rows_cursos['status_a'];?></td>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cleudiney, minha primeira contribuição aqui no fórum, vamos lá kk espero ajudar.

 

Depois que sua página é renderizada você não tem mais sua estrutura WHILE e sim a tabela literal. Sendo assim você terá que atualizar o DOM de sua página de alguma forma. Como você já chegou a usar AJAX, presumo que seja mais fácil abordar o assunto por meio dele.

 

Digamos que você faça um requisição AJAX e retorne um JSON com todos os dados que devem ser atualizados (?): Se este for o cenário você pode iterar via Javascript cada linha de sua tabela, atingir a coluna em questão trocando obviamente seu conteúdo.

Desculpe se não entendi a questão, forneça mais informações. Mas acredito que para seu problema você encontrará o caminho em soluções front-end e não no PHP em sí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi @Paullo_h Obrigado por tentar ajudar. 
Pois eh, o grande problema e eu estar mostrando o conteúdo do WHILE em um Modal quando clico em editar. Caso eu use a lógica de refresh o while se refaz mas desfaz o Modal, o que eu preciso é bloquear a atualização caso modal esteja sendo exibido, e quando sair do modal a pagina dê o refresh. 
Atualmente já funciona se eu clico o salvar do modal, mas acontece frequente de não se salvar o modal, aí sem refresh não atualiza. 
Então resumindo, se coloco o refresh apago o modal. 
Posso não colocar o refresh mas só atualiza ao entrar no modal e salvar qualquer registro. 

Colocando o refresh e a tela do modal aberta por tempo maior que o refresh perco o que está digitado no modal.

Verdadeiramente preciso atualizar apenas uma coluna que é a que mostra que a pessoa já chegou, a coluna "status_a".

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por joao b silva
      <input type="text" class="form-control" id="produto" name="produto"  onblur="BuscaPr()">
       
       
      Ola. eu chamo a função JS a seguir  no onblur do input acima. cikiqyeu is alerts para confirmar a chamada da função. ta chamando. mas alem dos alerts nao acontece mais nada. segue a função JS e o arquivo php que é chamado no ajax:
       
       
      FUNSAO JS
       
          function BuscaPr(){
              var buscaTexto = document.getElementById('produto').value
              alert(buscaTexto) 
              alert(buscaTexto.length) 
              $.ajax({
                  method: 'post',
                  url: 'sistema/produto/buscapr.php',
                  data: {busca: 'sim', texto: buscaTexto},
                  dataType: 'json',
                  success: function(retorno){
                          if(retorno.qtd == 0){
                              alert('q = 0')
                                  $('#resbuscapro').html('<p>Não encontramos resultados para sua busca</p>');
                          }else{
                              alert('q + 0')
                                  $('#resbuscapro').html(retorno.dados);
                          }
                  }
              });
          }

      O ARQUIVO PHP:
       
      <?php
      if (!session_id()):
          session_start();
      endif;
      require_once('_app/Config.inc.php');
      require_once('./Lib.php');
      if (isset($_POST['busca']) && $_POST['busca'] == 'sim'):
          $textoBusca = strip_tags($_POST['texto']);
          $retorno = array();
          $Par = "EM={$_SESSION['userlogin']['emCODIGO']}";
          $Fil = " where emCODIGO = :EM and prDESCRICAO like '%{$textoBusca}%' ";
          $Produto = new Read;
          $Produto->FullRead("select * from produto {$Fil}", $Par);
          if ($Produto->getResult()):
              $retorno['qtd'] = $Produto->getRowCount();
              foreach ($Produto->getResult() as $pro):
                  extract($pro);
                  $retorno['dados'] .= '<a href="#" id='.$prCODIGO.':'.$prVENDA.'">'. utf8_encode($prDESCRICAO).'</a>';
              endforeach;
          endif;
          echo json_encode($retorno);
      endif;
      ?>
    • Por Giovanird
      Olá a todos!
      tenho varias divs com o mesmo ID e nome de classe. Preciso que a cor da div seja conforme uma escala de valores.
      Estou tentando pegar o valor pelo nome da classe, pois as divs possuem o mesmo id e não tive sucesso. Segue script:
      <div class="planos" id="1" value="74">74</div> <div class="planos" id="1" value="29">29</div> <div class="planos" id="1" value="55">55</div> <div class="planos" id="1" value="74">74</div> <div class="planos" id="1" value="63">63</div> <div class="planos" id="1" value="55">55</div> <script type="text/javascript"> var valueElement = document.getElementsByClassName('.planos').getAttribute('value'); console.log(valueElement); if (valueElement >= "70") { document.getElementsByClassName('.planos').style.backgroundColor == '#4caf50'; } else if (valueElement >= "50" && valueElement <= "69") { document.getElementsByClassName('.planos').style.backgroundColor == '#ffbc00'; } else { document.getElementsByClassName('.planos').style.backgroundColor == '#f44336'; } </script>  
       
×

Informação importante

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