Ir para conteúdo

POWERED BY:

Arquivado

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

bcs_ptx

como usar datadiff

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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