Jump to content
mruoppolo

Utilização de IP em sistema PHP

Recommended Posts

Olá, tudo bem?

 

estou criando um sistema de comandas para bares e restaurantes baseado em php, o sistema trabalhará diretamente através dos celulares dos garçons, mandando notificações para a cozinha, caixa e tudo mais, único porém é que estarei utilizando o Xampp configurado na rede para que ele fique acessível por todos os dispositivos na rede.

 

Ai que entra o problema, cada vez que o computador servidor for desligado (ou o roteador, não sei ao certo) o ip do localhost muda, como eu poderia fazer para arrumar uma solução ou para o IP não mudar ou para o PHP pegar o ip automaticamente do localhost??

 

Muito obrigado :)

Share this post


Link to post
Share on other sites
22 minutos atrás, mruoppolo disse:

único porém é que estarei utilizando o Xampp

Não cara...

XAMPP em produção :(

 

 

22 minutos atrás, mruoppolo disse:

Ai que entra o problema, cada vez que o computador servidor for desligado (ou o roteador, não sei ao certo) o ip do localhost muda, como eu poderia fazer para arrumar uma solução ou para o IP não mudar ou para o PHP pegar o ip automaticamente do localhost??

Não usa ué, hospedar em algum lugar.

 

Se uns cara roubar a 'maquina/servidor' como o cliente faz? chora ?? kkkk

 

O que impede de hospedar em algum lugar externo?

Garantir uptime?

 

Só fazer algo assim....

Ex:

Se a 'net' do cliente acabar -> Modem da vivo assume ou Tim Fibra assume.

 

 

 

22 minutos atrás, mruoppolo disse:

mandando notificações para a cozinha

Como? 

Oq você defini como notificação? Um insert na base? um PushNotification do Android?

------------------------------------------------------------------------------------------------

 

Se ainda assim você quer seguir com a ideia do XAMP Local,  não precisa de IP externo.

 

Só os clients da aplicação (garçom?App) estiverem na mesma rede de Wifi pelo Roteador, e apontar para a maquina que correspondente ao cliente

 

Ex de como roda uma rede Wifi / LAN / Endereço IPv4:

 

192.168.0.101 (Maquina do Servidor)

192.168.0.102 (Client - 1)

192.168.0.103 (Client - 2)

192.168.0.105 (Client - 6)

 

É possível acessar externamente sempre com um no-ip da vida.

 

Recomendo a leitura:

https://pt.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

https://pt.wikipedia.org/wiki/Rede_de_longa_distância

https://pt.wikipedia.org/wiki/LAN

https://pt.wikipedia.org/wiki/Endereço_IP

Share this post


Link to post
Share on other sites

Então, eu queria hospedar na web, porém o cliente ficou me enchendo, porque caso o cliente fique sem internet o sistema para de funcionar, saca??

 

Como eu poderia fazer para burlar esta parte do sistema parar de funcionar quando não tem net?

Share this post


Link to post
Share on other sites

Eu editei isso.

 

Citar

 

O que impede de hospedar em algum lugar externo?

Garantir uptime?

 

Só fazer algo assim....

Ex:

Se a 'net' do cliente acabar -> Modem da vivo assume ou Tim Fibra assume.

 

Ai a galera de Infra/Rede pode te ajudar.

 

Mas é bem sem noção hospedar qualquer coisa em Servidor físico na minha visão.

 

O computador pode dar problema, a tiazinha da limpeza pode puxar a tomada, pode dar um raio.

 

Melhor garantir Segurança de Dados/Arquivos.

 

Vamos ver se alguém também da algumas dicas hehe não leve como verdade absoluta oq eu falei.

 

Share this post


Link to post
Share on other sites

Então, não entendi essa parte de modem da vivo assume, tipo como eu faço pra saber através do PHP que a internet acabou?? E o que significa o modem da vivo assumir???

 

Outra coisa, isso daria divergências nos dados que estão no banco local e os que estão no banco da web, não daria??

Share this post


Link to post
Share on other sites

Complementando:

A maioria dos roteadores tem a opção de vincular um endereço MAC a um ip local. Dessa forma, mesmo que o roteador seja desligado e ligado, o servidor sempre pegara o mesmo ip, pois estará reservado para o  MAC cadastrado.

Então é só você ver ai qual é o MAC  do servidor,  entrar no roteador e procurar esse opção, que geralmente não tem segredo para configurar.

  • +1 1

Share this post


Link to post
Share on other sites

@EdCesar não da ideia pow haha XAMP local é sacanagem.
Você q manja muito de Infra, como faz pra existir tolerância a falhas de internet, é possivel? 



Por exemplo minha namorada tinha um restaurante 100% Delivery (iFood)
Quando a internet dela acaba (NET zoada em SP) , ela usava o modem da vivo ou roteava o celular 4G.

Apesar de ser manual era uma tolerância :tounge_wink: 

  • +1 1

Share this post


Link to post
Share on other sites

 @gabrieldarezzo não estou apoiando o uso do XAMP, nem desapoiando Hahahahah
A questão dele é não perder o ip quando o roteador for desligado e ligado, e a solução é vincular o ip ao mac, no roteador, sendo XAMP ou não :)

Tolerância a falhas? É de comer? rsrsrs

Falando serio, no caso da sua namorada, e de qualquer outro, isso depende muito da infra externa da operadora na região. Em qualquer operadora, a infra interna é de boa qualidade, mas a externa, é outra historia. A VIVO por exemplo, no caso de atendimento via par metalico, a maioria não recebem manutenção. Cabos com mais de 3 anos de vida, tomando chuva e sol e não são trocados. Geralmente nesses casos, o ping é baixo e ocorrem perdas, ai é jeito é abrir um chamado, e exigir que o tecnico leve um analisador de protocolos para ele visualizar os erros, e só for embora quando o analisador não pegar mais erros, que no caso, só trocando toda a infra, da central até a casa do cliente rsrs

Atualização

Talvez você tenha falado de redundância, existem roteadores/switch que você pode conectar mais de uma conexão de internet, sendo dois cabos, ou um cabo e uma entrada para 4G, ai quando um cai, o outro assume automaticamente.

  • +1 2

Share this post


Link to post
Share on other sites

É um sistema relativamente simples e envolve pagamentos e controle financeiro, ele pode até ficar na Internet, mas precisa ter um sistema local. O restaurante/lanchonete/bar não pode deixar de faturar o que for consumido por ter ficado sem Internet. Mesmo com redundância, esse é um problema que não pode ocorrer.

 

O IP pode ser fixo, com um servidor DHCP para os smartphones, claro que para que isto ocorra há uma outra parte de configuração que não tem muito haver com XAMP ou PHP. Você pode usar um equipamento Mikrotik que vai te dar um poder maior de configuração neste caso.

 

Para concluir, a opção de um sistema online não é ruim. É sabido que o cliente sempre quer o menor custo e não, necessariamente, o melhor serviço. Sugiro que você faça um desenho disso tudo e convença o seu cliente a ter uma infraestrutura um pouco mais profissional. Claro que isso tem um custo, mas avalie bem os riscos... Tanto do seu cliente quanto do seu, como profissional e prestador de serviços.

 

Sucesso!

 

  • +1 2

Share this post


Link to post
Share on other sites

e não hesite em filmar a conversa pra o caso do cliente dizer depois que tu não falou nada dos riscos tu poder provar que falou sim e que deixou tudo muito bem claro

Spoiler

claro que é brincadeirinha :tounge_wink:

 

Share this post


Link to post
Share on other sites

@marsolim

Selo:

ptropa-de-elite05.jpg 

 

Ps:

 

Vale a pena dar uma lida nos links.

 

 

Outra abordagem legal, é antes de prosseguir com o desenvolvimento.

 

Subir um servidor em casa numa maquinha veia. (192.168 lembra? ^^ )

E tentar entender o conceito de DHCP/MAC como o @EdCesar comentou.

 

 

Abraço e bons estudos.

Share this post


Link to post
Share on other sites
2 horas atrás, mruoppolo disse:

Ai que entra o problema, cada vez que o computador servidor for desligado (ou o roteador, não sei ao certo) o ip do localhost muda, como eu poderia fazer para arrumar uma solução ou para o IP não mudar ou para o PHP pegar o ip automaticamente do localhost??

Nem tudo é prego!

Como o @Prog disse, isso é simples, se precisa somente de um servidor, use Linux, e instale as dependências, uma vez ligado, ou se sofrer queda de energia etc,  ligou/reiniciou, tudo estará pronto para uso novamente, e até mais fácil configurar a segurança dos dados, SSL etc.

Uma dica é fazer o backup deste banco em algum lugar, nem que seja no Google Drive.

 

Outra dica e acho que essa é a mais segura em termo de disponibilidade de dados, é usar o http://www.symmetricds.org/ para sincronizar sua app com a nuvem. Assim você cobre 100% e seu cliente fica feliz, e você não terá que acordar nas madrugadas.

Lembre-se, a vida continua após a entrega de um software.

 




 

Share this post


Link to post
Share on other sites
1 hora atrás, Prog disse:

É um sistema relativamente simples e envolve pagamentos e controle financeiro, ele pode até ficar na Internet, mas precisa ter um sistema local. O restaurante/lanchonete/bar não pode deixar de faturar o que for consumido por ter ficado sem Internet. Mesmo com redundância, esse é um problema que não pode ocorrer.

 

O IP pode ser fixo, com um servidor DHCP para os smartphones, claro que para que isto ocorra há uma outra parte de configuração que não tem muito haver com XAMP ou PHP. Você pode usar um equipamento Mikrotik que vai te dar um poder maior de configuração neste caso.

 

Para concluir, a opção de um sistema online não é ruim. É sabido que o cliente sempre quer o menor custo e não, necessariamente, o melhor serviço. Sugiro que você faça um desenho disso tudo e convença o seu cliente a ter uma infraestrutura um pouco mais profissional. Claro que isso tem um custo, mas avalie bem os riscos... Tanto do seu cliente quanto do seu, como profissional e prestador de serviços.

 

Sucesso!

 

 

Então temos um problema muito complicado ai, kkk, porque assim o cliente pra quem estou fazendo não é o cliente final, ele vai revender, ai que esta o problema.

 

Então não adianta eu convencer ele, porque ele vai precisar convencer todos os clientes a comprarem uma infra mais cara, e como já existe um concorrente na cidade que o cliente não precisa de nada além de um pc, eu não tenho como fazer de outra forma kkk, eu preciso é fazer o IP ficar fixo mesmo, eu vou pesquisar essa parada do MAC mesmo.

 

Depois eu posto exatamente o procedimento que fiz :)

Share this post


Link to post
Share on other sites

O MAC Address está relacionado a placa de rede, toda placa de rede possui esse "número" que a identifica.

No servidor DHCP do seu access point você configura que esse determinado MAC vai receber um determinado IP, desta forma este equipamento (servidor onde estã o XAMP) sempre recebe o mesmo endereço IP. Como disse, isso é feito no access point e cada fabricante dispõe de um aplicativo específico para realizar este tipo de configuração (mesmo sendo diferentes, eles não diferem tanto de um para os demais).

 

Sucesso!

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.