bcs_ptx 0 Denunciar post Postado Junho 30, 2011 Seguinte, a idéia é calcular a diferença das duas datas e multiplica por 0,25, eu fiz um script, mas queri fazer da outra forma, mas não sei usar essa função, fiz assim mais deu erro... <?php $data_entrega = '5'; $data_devolucao = '10'; $calcula = $data_devolucao - $data_entrega; if($data_entrega < $data_devolucao){ $resultado = $calcula * 0,25; echo $resultado; } ?> e gostaria de fazer assim, mas ta errado, na mesma lógica do que o acima <?php $total = "SELECT DATEDIFF (DAY,'".$_POST['data_entrega']."','".$_POST['data_devolucao']."')"; $resultado = mysql_query($total); while($dados = mysql_fetch_array($resultado)){ $total = $dados[0]; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Junho 30, 2011 Segue o link no manual mysql sobre a função DATEDIFF: http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_datediff Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 bleza cara, ja tinha lido, mas não consegui entender mesmo, não deu certo pelo menos aqui, por isso que postei aqui :) Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Junho 30, 2011 Bom pelos parâmetros da função, sua query deveria ser assim: <?php $total = "SELECT DATEDIFF('".$_POST['data_entrega']."','".$_POST['data_devolucao']."')"; $resultado = mysql_query($total); while($dados = mysql_fetch_array($resultado)){ $total = $dados[0]; } ?> A função já retorna o valor em dias Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 Mas não teria que ter um FROM na função? para achar a tabela? pq o erro que da é que a variavel esta indefinida Notice: Undefined index: data_entrega in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\index.php on line 176 Notice: Undefined index: data_devolucao in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\index.php on line 176 que é esse linha $total = "SELECT DATEDIFF('".$_POST['data_entrega']."','".$_POST['data_devolucao']."')"; Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Junho 30, 2011 Então, a sua requisição não está passando os campos "data_entrega" e "data_devolucao" Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 sei la cara, não esta puxando mesmo a data e todo o código ta ai, ta certo, e outra dúvida, o total, que é a diferença entre as duas datas, eu gostaria de multiplicar por 25, mas esse deu erro mesmo? onde eu errei para multiplicar? if($data_entrega < $data_devolucao){ $total = "SELECT DATEDIFF('".$data_entrega."','".$data_devolucao."')"; $calcula = $total * '25'; $resultado = mysql_query($calcula); while($dados = mysql_fetch_array($resultado)){ $calcula = $dados[0]; } }else{ echo '0'; } Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Junho 30, 2011 if($data_entrega < $data_devolucao){ $total = "SELECT DATEDIFF('".$data_entrega."','".$data_devolucao."')"; $calcula = $total * '25';// Você está multiplicado string por string $resultado = mysql_query($calcula); while($dados = mysql_fetch_array($resultado)){ $calcula = $dados[0]; // Acho que quer multiplicar o 25 é aqui, que é o resultado da query } }else{ echo '0'; } Alterado.... Se esse é todo o código, está faltando definir $data_entrega e $data_devolucao. Então sempre vai imprimir '0' if($data_entrega < $data_devolucao) { $total = "SELECT DATEDIFF('".$data_entrega."','".$data_devolucao."')"; $resultado = mysql_query($total); while($dados = mysql_fetch_array($resultado)){ $calcula = $dados[0]*25; } var_dump($calcula); } else{ echo '0'; } Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 Na verdade o código inteiro não é esse, mas o problema da multiplicação agora deu, mas aconetce que para eu conseguir eu tive que estipular os valores das variaveis data_entrega e data_devolucao, por que se não ele não acha elas, e não sei o por que disso, ta vou postar o código inteiro agora <?php session_start(); include('conexao.php'); $id_livros = $_POST['id_livros']; $id_historico = $_POST['id_historico']; $data_entrega = $_GET['data_entrega']; $data_devolucao = $_GET['data_devolucao']; $data = date("Y-m-d"); $atualiza = "UPDATE teste_livros SET status = 'disponivel', data_retirada = '', data_entrega = '', id_usuario = '', id_historico = '', qt_renovacao = '0' where id_livros = '".$id_livros."'"; if(!mysql_query($atualiza)){ echo 'Erro ao atualizar'; exit(); }else{ $atualiza2 = "UPDATE historico SET data_devolucao = '".$data."' where id_historico = '".$id_historico."'"; if(!mysql_query($atualiza2)){ echo 'Erro ao atualizar'; exit(); }else{ if($data_entrega < $data_devolucao){ $total = "SELECT DATEDIFF('".$data_entrega."','".$data_devolucao."')"; $resultado = mysql_query($total); while($dados = mysql_fetch_array($resultado)){ $total = $dados[0]; } }else{ echo '0'; } $atualiza3 = "UPDATE historico SET dias_atraso = '".$total."' where id_historico = '".$id_historico."'"; if(!mysql_query($atualiza3)){ echo 'Erro ao atualizar'; exit(); }else{ $total = "SELECT dias_atraso * 25 FROM historico"; $resultado = mysql_query($total); while($dados = mysql_fetch_array($resultado)){ $total = $dados[0]; } $atualiza4 = "UPDATE historico SET divida = '".$total."' where id_historico = '".$id_historico."'"; if(!mysql_query($atualiza4)){ echo 'Erro ao atualizar'; exit(); }else{ header('location: index.php'); } } } } ?> assim ele não funciona, ele sempre salva como zero nos dias de atraso e na divida, só funciona se nas variaveis eu colocar assim... $data_entrega = '2011-01-01'; $data_devolucao = '2011-01-08'; ** isso aqui salva 7 na coluna dias_atraso e multiplica por 25, salvando 175 na tabela divida. e não assim $data_entrega = $_GET['data_entrega']; $data_devolucao = $_GET['data_devolucao']; Compartilhar este post Link para o post Compartilhar em outros sites
lucasao 5 Denunciar post Postado Junho 30, 2011 Estas variáveis $data_entrega = $_GET['data_entrega']; $data_devolucao = $_GET['data_devolucao']; não seriam: $data_entrega = $_POST['data_entrega']; $data_devolucao = $_POST['data_devolucao']; ou então você faz um var_dump($_GET) ou var_dump($_POST) para saber o que está acontecendo com esses índices Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 blza no final eu listei como... if(!mysql_query($atualiza4)){ echo 'Erro ao atualizar'; exit(); }else{ var_dump($data_entrega); var_dump($data_devolucao); } e ele volta com esses erros e nulo Notice: Undefined index: data_entrega in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 11 Notice: Undefined index: data_devolucao in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 13 0 Notice: Undefined variable: total in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 54 NULL NULL as linha 11 e 13 são essas $data_entrega = $_POST['data_entrega']; $data_devolucao = $_POST['data_devolucao']; Ja estão criadas as variaveis,não sei pq acontece isso Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 30, 2011 acontece pq você não está recebendo esses indices por POST. coloque o seguinte: echo '<pre>'; var_dump( $_GET, $_POST ); e poste o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 Blza...deu na mesma coisa e tudo nulo Notice: Undefined index: data_entrega in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 10 Notice: Undefined index: data_devolucao in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 12 0 Notice: Undefined variable: total in C:\Arquivos de programas\EasyPHP5.3.0\www\teste_livros\devolucao.php on line 53 NULL NULL NULL NULL Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 30, 2011 então você não ta enviando nem via GET e nem via POST de onde você queria que viessem essas variaveis ? de um formulario ? vão ser manuais no codigo ? Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 a idéia é puxar elas da tabela historico, ela puxa a data_entrega e multiplica pela dat_devolucao, acontece que não esta vindo... Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 30, 2011 Okay, então por enqnto tente se esquecer de tudo oque você já fez. vamos do começo. pra que você precisa saber a diferença entre esses dias da tabela historico ? Compartilhar este post Link para o post Compartilhar em outros sites
bcs_ptx 0 Denunciar post Postado Junho 30, 2011 Eu preciso pegar a diferença das datas para ver quantos dias o usuario esta atrasado, dai eu fiz, se a data_entrega for menor que a data_devolução ele soma os dias e multiplica por 25, que é a taxa do dia atrasado, se não ele salva como zero. Bah valeu a ajuda de todos ai, estou saindo agora, amanha eu volto, oque postarem ai eu tento amanha e respondo, pra acabar meu sistema de biblioteca só falta isso mesmo, o resto ta tudo pronto.valeu abraços. Compartilhar este post Link para o post Compartilhar em outros sites