joeythai 0 Denunciar post Postado Abril 22, 2015 Bom dia pessoal, Está quase pronto o mini sistema de cálculo de tempo que estou fazendo, porém, não estou conseguindo fazer um update na data final, estou pegando o submit de fora de um formulário, por isso, usei o método $_GET, mesmo assim não funcionou, ele está passando o id certinho, só não faz o update. Eis o código para darem uma olhada. Aceito sugestões de melhorias também, sou novo em PHP, então toda ajuda é bem vinda. <?php ini_set('display_errors','on'); error_reporting(E_ALL); function formataData($data){ $data = implode('/', explode('-', $data)); return date('d/m/Y H:i:s', strtotime($data)); } date_default_timezone_set('America/Sao_Paulo'); include 'includes/mysqlconecta.php'; if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['play'])){ extract($_POST); $data = date('Y-m-d H:i:s'); $login = $_SESSION['login']; if(empty($_POST['area_acionada'] )== 'Selecione'){ echo '<script>alert("Por favor, selecione a equipe que deseja acionar")</script>;'; } elseif(isset($_POST['area_acionada'])){ $area_acionada = $_POST['area_acionada']; $insereDados = "INSERT INTO tb_time_acionamento VALUES (null, '$login','$data',null, null,null,'$area_acionada',null,null,null); "; } mysql_query($insereDados); $vai = 'acionamento_teste.php'; header('Location:'.$vai); } if(isset($_GET['parar'])){ extract($_POST); $cod_id = $_GET['cod_id']; $dataF = date('Y-m-d H:i:s'); $upDados = "UPDATE tb_time_acionamento SET fim = '$dataF' WHERE cod_id = '$cod_id'; "; mysql_query($upDados); } $dataF = date('Y-m-d H:i:s'); $data = date ('2015-04-20 18:00:00'); $total = strtotime($dataF - $data); echo $total; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>TESTE - Acionamento</title> <style type="text/css"> #play{ border-radius:100px; background-color:#096; color:#FFF; } #pause{ border-radius:100px; background-color:#026; color:#FFF; } #stop{ border-radius:100px; background-color:#F00; color:#FFF; } #parar{ border-radius:100px; background-color:#F00; color:#FFF; } table{ width:150px; font-size:14px; } .cabec{ background-color:#069; color:#FFF; } #area_acionada{ width:200px; } tr:hover{ } button{ outline:0; } .acao:hover{ background-color:#999; color:#FFF; } </style> </head> <body> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <div id="time_acionado"> <table> <th colspan="4"><h1>Acionamento de Equipe</h1></th> <tr class="acao"> <td colspan="4"> <label><strong>Área Acionada:</strong></label> <select name="area_acionada" id="area_acionada"> <option value="selecione" selected disabled="disabled">Selecione</option> <option value="Microsoft">Microsoft</option> <option value="Redes">Redes</option> <option value="Telecom">Telecom</option> <option value="Outros">Outros</option> </select> </td> </tr> <tr> <td> <button type="submit" name="play" id="play">Play</button> </td> <td> <button type="submit" name="pause" id="pause">II</button> </td> <td> <button type="button" id="stop" name="stop">Stop</button> </td> </tr> </table> </div> </form> <?php $pega = "SELECT * FROM tb_time_acionamento"; $res = mysql_query($pega); ?> <table> <tr> <td class="cabec">Equipe</td> <td class="cabec">Inicio</td> <td class="cabec">Fim</td> <td class="cabec">Total</td> <td class="cabec">Ação</td> </tr> <?php while($linha = mysql_fetch_array($res)){ ?> <tr class="acao"> <td onClick="avisa();"><? echo $linha['equipe'];?></td> <td><? echo formataData($linha['inicio']);?></td> <td><? echo formataData($linha['fim']);?></td> <td><? echo formataData($linha['total']);?></td> <td><a href="acionamento_teste.php?cod_id=<?php echo $linha['cod_id'];?>"><button type="button" id="parar" name="parar">Parar</button></a></td> </tr> <? } ?> </table> </body> </html> Estou fazendo isso numa página só pois, o código é pequeno e não vale a pena separá-lo. Desde já muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
LandersonAlmeida 31 Denunciar post Postado Abril 22, 2015 ** $upDados = "UPDATE tb_time_acionamento SET fim = '$dataF' WHERE cod_id = '$cod_id'"; tinha um ponto e vírgula depois de $cod_id Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 22, 2015 É interessante como uma grande parte de programadores PHP acham que adicionando o display erros irá mostrar tudo quanto é falha que ele cometer. Você está com problema de sintaxe MySQL, e como você saberá disso ? costume usar em suas consultas sempre a função mysql_error() ou mysql_errno() para que o mysql retorne o erro caso ocorra algum. mysql_query($upDados)or die(mysql_error()); Compartilhar este post Link para o post Compartilhar em outros sites
joeythai 0 Denunciar post Postado Abril 22, 2015 É interessante como uma grande parte de programadores PHP acham que adicionando o display erros irá mostrar tudo quanto é falha que ele cometer. Você está com problema de sintaxe MySQL, e como você saberá disso ? costume usar em suas consultas sempre a função mysql_error() ou mysql_errno() para que o mysql retorne o erro caso ocorra algum. mysql_query($upDados)or die(mysql_error()); ** $upDados = "UPDATE tb_time_acionamento SET fim = '$dataF' WHERE cod_id = '$cod_id'"; tinha um ponto e vírgula depois de $cod_id Anderson, o ponto em vírgula em questão não influencia pois um finaliza o comando sql e o outro finaliza o comando php, o primeiro é opcional. Alaerte vou seguir o seu conselho inserindo essas funções, porém, fiz o teste com as duas e nenhuma não retornou nenhum erro, creio que não é erro de sintaxe pois se fosse já teria sido exibido, esse é justamente o problema, não exibir nenhum erro para que eu possa corrigí-lo. Compartilhar este post Link para o post Compartilhar em outros sites
joeythai 0 Denunciar post Postado Abril 22, 2015 Anderson, o ponto em vírgula em questão não influencia pois um finaliza o comando sql e o outro finaliza o comando php, o primeiro é opcional. Alaerte vou seguir o seu conselho inserindo essas funções, porém, fiz o teste com as duas e nenhuma não retornou nenhum erro, creio que não é erro de sintaxe pois se fosse já teria sido exibido, esse é justamente o problema, não exibir nenhum erro para que eu possa corrigí-lo. Dei um var_dump($upDados) e o PHP imprimiu NULL, mas como está null, não entendi. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 22, 2015 Sem valor. Depure os recebimentos via GET e POST, dessa forma você saberá quais valores estão sendo enviados para sua página. <?php var_dump($_POST); print '<br><br>'; var_dump($_GET); ?> Compartilhar este post Link para o post Compartilhar em outros sites
joeythai 0 Denunciar post Postado Abril 23, 2015 Sem valor. Depure os recebimentos via GET e POST, dessa forma você saberá quais valores estão sendo enviados para sua página. <?php var_dump($_POST); print '<br><br>'; var_dump($_GET); ?> fiz esse debug ai que você falou e ele imprimiu : array(0) { } array(0) { } não sendo passado o valor tanto do get, quanto pelo post. Esse update que quero fazer é apenas da data atual, eu não tenho esse campo no formulário, ou seja, não preciso de um formulário para isso. Será que tenho que fazer esse update de outra forma ? Pensando bem nunca vi um update que não utilize um formulário, todos os exemplos de updates são os mesmos, cadastros, fichas, etc, será que isso que está influenciando ? fiz esse debug ai que você falou e ele imprimiu : array(0) { } array(0) { } não sendo passado o valor tanto do get, quanto pelo post. Esse update que quero fazer é apenas da data atual, eu não tenho esse campo no formulário, ou seja, não preciso de um formulário para isso. Será que tenho que fazer esse update de outra forma ? Pensando bem nunca vi um update que não utilize um formulário, todos os exemplos de updates são os mesmos, cadastros, fichas, etc, será que isso que está influenciando ? Alaerte, alterei essa linha no código, inserir depois da tag de fechamento ?>¶r=parar, após isso, já consegui exibir o erro do mysql "Erro 1292' <code> <td><a href="acionamento_teste.php?cod_id=<?php echo $linha['cod_id'];?>¶r=parar"><button type="button" id="parar" name="parar">Parar</button></a></td> </code> fiz esse debug ai que você falou e ele imprimiu : array(0) { } array(0) { } não sendo passado o valor tanto do get, quanto pelo post. Esse update que quero fazer é apenas da data atual, eu não tenho esse campo no formulário, ou seja, não preciso de um formulário para isso. Será que tenho que fazer esse update de outra forma ? Pensando bem nunca vi um update que não utilize um formulário, todos os exemplos de updates são os mesmos, cadastros, fichas, etc, será que isso que está influenciando ? Alaerte, alterei essa linha no código, inserir depois da tag de fechamento ?>¶r=parar, após isso, já consegui exibir o erro do mysql "Erro 1292' <code> <td><a href="acionamento_teste.php?cod_id=<?php echo $linha['cod_id'];?>¶r=parar"><button type="button" id="parar" name="parar">Parar</button></a></td> </code> agora já é exibo o debug que fiz, aparece array(1) { ["cod_id"]=> string(2) "41" } array(0) { } em cada item que clico ele exibe o id correto. Sem valor. Depure os recebimentos via GET e POST, dessa forma você saberá quais valores estão sendo enviados para sua página. <?php var_dump($_POST); print '<br><br>'; var_dump($_GET); ?> Cara muito obrigado mesmo, consegui resolver aqui, agora está atualizando a data fim. Como o botão de ação não está no formulário e nem a data que eu preciso, eu passei o valor da variável via url e peguei via get, aí deu certo. agora só preciso fazer o cálculo entre duas datas do tipo datetime, seria correto eu fazer ? <code> $dataF = date('Y-m-d H:i:s'); $total = strtotime(strtotime($dataF) - strtotime($data)); </code> Compartilhar este post Link para o post Compartilhar em outros sites
joeythai 0 Denunciar post Postado Abril 23, 2015 fiz esse debug ai que você falou e ele imprimiu : array(0) { } array(0) { } não sendo passado o valor tanto do get, quanto pelo post. Esse update que quero fazer é apenas da data atual, eu não tenho esse campo no formulário, ou seja, não preciso de um formulário para isso. Será que tenho que fazer esse update de outra forma ? Pensando bem nunca vi um update que não utilize um formulário, todos os exemplos de updates são os mesmos, cadastros, fichas, etc, será que isso que está influenciando ? Alaerte, alterei essa linha no código, inserir depois da tag de fechamento ?>¶r=parar, após isso, já consegui exibir o erro do mysql "Erro 1292' <code> <td><a href="acionamento_teste.php?cod_id=<?php echo $linha['cod_id'];?>¶r=parar"><button type="button" id="parar" name="parar">Parar</button></a></td> </code> agora já é exibo o debug que fiz, aparece array(1) { ["cod_id"]=> string(2) "41" } array(0) { } em cada item que clico ele exibe o id correto. Cara muito obrigado mesmo, consegui resolver aqui, agora está atualizando a data fim. Como o botão de ação não está no formulário e nem a data que eu preciso, eu passei o valor da variável via url e peguei via get, aí deu certo. agora só preciso fazer o cálculo entre duas datas do tipo datetime, seria correto eu fazer ? <code> $dataF = date('Y-m-d H:i:s'); $total = strtotime(strtotime($dataF) - strtotime($data)); </code> Alterei o código para fazer o cálculo entre uma data atual que eu pego do sistema e subtraio a data de inicio salva na base de dados, mas não deu certo desse jeito: <code> if(isset($_GET['parar'])){ extract($_GET); $cod_id = $_GET['cod_id']; $data1 = "Select inicio from tb_time_acionamento where code_di = '$cod_id'"; $inicio = formataData($data1); $fim = date('d/m/Y H:i:s'); // Converte as datas para objetos DateTime do PHP // PARA O PHP 5.3 OU SUPERIOR $inicio = DateTime::createFromFormat('d/m/Y H:i:s', $inicio); //PARA O PHP 5.2 // $inicio = date_create_from_format('d/m/Y H:i:s', $inicio); $fim = DateTime::createFromFormat('d/m/Y H:i:s', $fim); // $fim = date_create_from_format('d/m/Y H:i:s', $fim); // Calcula a diferença entre as duas datas $intervalo = $inicio->diff($fim); // Imprime a diferença entre as duas // datas de modo formatado $total = $intervalo->format( '%H:%I:%S '); $upDados = "UPDATE tb_time_acionamento SET fim = '$dataF', status = 'Encerrado', total = '$total' WHERE cod_id = '$cod_id' AND fim is NULL"; mysql_query($upDados) or die(' Erro ao realizar o update '.mysql_errno()); $vai ='acionamento_teste.php'; header('Location: '.$vai); } </code> Compartilhar este post Link para o post Compartilhar em outros sites