Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 12:09

Olá pessoal,
Tenho a seguinte função, onde pegar o id e informa se está com a data da agenda(agdata) atrasada. Gostaria de aplicar a função mas não está executando.

<?php require "con.php"; $se = mysql_query("SELECT * FROM servicos WHERE status = 'Em aberto' ORDER BY data ASC"); $oc = mysql_num_rows($se); function atrasado($o){     $sl = mysql_query("SELECT agdata FROM servicos WHERE status = 'Em aberto' AND id = '$o'");     $sq = mysql_fetch_array($sl);     $m = $sq["agdata"];     $mm = explode("/", $m);     $dg = $mm[0].$mm[1].$mm[2];     $da = date('dmY');     $im = "<img src=\"img/56.png\" />";     if($dg < $da){         return $im;      } } ?>

Que retorna a tabela com todos os dados

<?php while($l = mysql_fetch_array($se)) {     $id                = $l["id"];     $data           = $l["data"];     $solicitante   = $l["solicitante"];     $agdata       = $l["agdata"]; echo "<div id=\"form\"> <table width=\"770\" border=\"0\">   <tr>     <td width=\"100\" align=\"right\">Solicitada em:</td>     <td width=\"115\" align=\"left\"><span style=\"color:#666; font-weight:bold\">$data</span></td>     <td width=\"100\" align=\"right\">Solicitada por:</td>     <td width=\"425\" align=\"left\"><span style=\"color:#666; font-weight:bold\">$solicitante</span></td>     <td width=\"15\">". echo atrasado($id) ."</td>     <td width=\"15\"><img src=\"img/54.png\" /></td>   </tr> </table></div>\n"; } mysql_close(); ?>

Agradeço.
0
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 14:05

Testando e testando aqui percebi que o problema é com a data, tipo:
Se a $dg(data da agenda) for 08042009 este valor é somado e vai ter um resultado de 2021, daí se o valor $da (data atual) for 07052009 também vai dá um valor de 2021 e aí a if vai dize que é igual. Agora preciso de algo que compare com mais precisão, tipo pegar o intervalo entre a data da solicitação e a data da agenda e pegar o valor da data atual e tirar o intervalo e aí sim comparar.
Vou fazer aqui, qualquer coisa posto o resultado para alguém que venha a usar algo do tipo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

07-05-2009 14:31

O que você quer saber é se uma data já passou em relação a atual?

A primeira coisa é salvar os dados "data" no formato: aaaa/mm/dd

Com isso você vai comparar essa data, no caso salva no BD com a data atual, e ver quem é maior ou menor.

MOVIDO: de PHP para MySQL
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 18:04

Isto,
Tenho a data que foi inserida no banco de dados que será comparada à data atual, se a data atual for mais executar uma ação.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

07-05-2009 19:11

Tem esse script no fórum

http://www.codigosnaweb.com/forum/Compa ... _1228.html

Ou, você pode criar um string para data atual como formato já citado e ver se é menor ou maior já no SELECT.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 19:29

Já tinha visto o post mas não resolveu meu problema. Depois de muito estudar, testar e aplicar cheguei a este script que resolve o meu caso.
Para quem precisar num futuro bem próximo:

function atrasado($o){     $sl = mysql_query("SELECT agdata FROM servicos WHERE status = 'Em aberto' AND id = '$o'");     $sq = mysql_fetch_array($sl);     $dta = $sq["agdata"];     $dtc = $sq["data"];          $d1 = explode("/", $dta);     $dg = $d1[0];     $mg = $d1[1];     $ag = $d1[2];          $d2 = explode("/", $dtc);     $dc = $d2[0];     $mc = $d2[1];     $ac = $d2[2];          $da = date('d');     $ma = date('m');     $aa = date('Y');          $datac = mktime(0,0,0,$mc,$dc,$ac);     $datag = mktime(4,12,0,$mg,$dg,$ag);     $dataa = mktime(4,12,0,$ma,$da,$aa);          $seg1 = $datac - $datag;     $seg2 = $datac - $dataa;          $df1 = $seg1 / (60 * 60 * 24);     $df2 = $seg2 / (60 * 60 * 24);          $df1 = abs($df1);     $df2 = abs($df2);          $df1 = floor($df1);     $df2 = floor($df2);     if($df2 > $df1){         return "atrasado";      } else {         return "No prazo";     } } 

:D
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

07-05-2009 20:08

Boa
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 20:25

Agora surgiu mais uma dúvida,
Como saber a quantidade de atrasados e no prazo?
:reading
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

07-05-2009 21:49

A quantidade de atrasados você pode obter via SELECT, como indiquei, algo como

SELECT campos... FROM suatabela WHERE '$hoje' < data_do_bd

Obtendo um total das linhas, você sabe que há tantos atrasados.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

07-05-2009 23:43

Não entendi direito.
Ficaria mais ou menos assim:

SELECT * FROM servicos WHERE STATUS = 'Em aberto' AND $hoje < $outra ORDER BY DATA ASC

E $hoje seria em que formato? Teria que pegar a diferença entre eles também?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

08-05-2009 12:44

Hoje e a data salva no bd no formato: aaaa/mm/dd, e quando você usar o < "menor" ou > "maior" o SELECT já retorna os valores de acordo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

08-05-2009 18:38

Ainda não entendi, dá um exemplo aí.
Falow.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17684
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Verificar se data já passou

08-05-2009 19:01

Vou dar um exemplo de um sistema que tenho aqui.

Eu tenho as datas salvas no formato: aaaa/mm/dd em uma tabela

Agora, antes do meu select eu coloco o seguinte

$hoje_invertido = date("Y/m/d"); 

Pego a data de hoje e inverto, para comparar com a data da tabela

Ai uso esse select

SELECT username, fim FROM minhatabela WHERE '$hoje_invertido' > fim

Ou seja, fim é uma data que estipulei para acabar o acesso de um usuário por exemplo, no caso, se hoje for maior, acontece tal ação, como o não acesso ou um aviso para o usuário.

Para trabalhar com esse valor eu fiz o seguinte:

Conto quantas linhas teve de retorno

$total = mysql_num_rows($exec); 

E trabalho com esse valor. No caso do select você vai ter que adicionar as condições que atendem ao seu sistema.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 75 postagens
Mais de 75 postagens
Tópico Autor
Mensagens: 79

Verificar se data já passou

08-05-2009 19:09

Vou fazer uns testes aqui.
Falow.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado