Jump to content


Photo

[resolvido] Warning: Mktime()


  • Faça o login para participar
8 replies to this topic

#1 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 12/01/2008, 22:18

Ae galera me deparei com o seguinte erro, alguem sabe como resolver?

Warning: mktime() expects parameter 5 to be long, string given in /home/enquete/top.php on line 58


LINHA 58:
$starts = mktime (0, 0, 0, $months, $days, $years);

#2 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 12/01/2008, 22:31

Isso quer dizer que $days não é um número, quando deveria ser, independente do tipo.

[]’s :DAté mais

#3 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 12/01/2008, 22:39

a questão é o seguinte, esse cod pertence a uma enquete, que tava funcionando normal desde uns 8 meses atrás, essa msg começou aparecer agora no início deste ano, acha q tem algo a ver com a virada do ano?

pq estava perfeita antes disso...

#4 § Kenshin §

§ Kenshin §

    I'm coming back...!

  • Usuários
  • 574 posts
  • Sexo:Masculino
  • Localidade:BA
  • Interesses:Sou fã de linguagens direcionadas para a web, como php, (x)html, xml, wml.
    Também gosto de webdesign e ultimamente tenho me dedicado mais a aprender css, mysql, javascript, ajax e actionscript.
    Trabalho com os programas Dreamweaver, Illustrator e Flash.

Posted 13/01/2008, 00:37

basicamente eh como o p.r. falou.
independente de como ou quando comecou, o erro eh que o quinto parametro passado esta definido como string quando deveria ser inteiro.
tente usar a fucnao settype antes

settype($days, "integer");
$starts = mktime (0, 0, 0, $months, $days, $years);
agora quanto ao porque desse problema so comecar agora, sugiro que faca o caminho inverso e veja de onde vem a variavel $days. se possivel poste o codigo aqui.

vlw ^_^

Edição feita por: § Kenshin §, 13/01/2008, 00:38.

Web Developer / Web Designer / Information Architect
"Living to learn... learning to live!"
Useful links: Rules | Search

#5 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 13/01/2008, 01:00

basicamente eh como o p.r. falou.
independente de como ou quando comecou, o erro eh que o quinto parametro passado esta definido como string quando deveria ser inteiro.
tente usar a fucnao settype antes

Na verdade não é bem isso. O valor das variáveis independem do tipo, isto é, o próprio PHP faz a conversão, na medida do possível. O que está acontecendo é que a variável não está contendo um valor numérico.

Código reproduzível:

<?php

$days = 'foo'; // oops
$months = '1';
$years = '2008';

$starts = mktime (0, 0, 0, $months, $days, $years);

?>
[]’s :DAté mais

#6 Alexx Ares

Alexx Ares

    Doutor

  • Usuários
  • 921 posts
  • Sexo:Masculino
  • Localidade:Santos - SP

Posted 13/01/2008, 01:11

Só uma observação pois "apanhei" disso há pouco tempo:

Cuidado ao passar no dia e mês um valor 08 (por exemplo obtido pelo date("d")) pois o php pode interpretar como octal, binario, sei lá... só sei que o erro acontece com 08 (tem que ser só 8 sem zero pra funcionar aqui) dá um resultado bem estranho. Então o ideal é setar mesmo a variavel como inteiro, "forçar" mesmo sabendo que o php transforma para inteiro...

(y)
||| PENSE NISSO ||| O ser humano, dizem, deve dormir 8 horas por dia. Isso equivale a 1 terço do seu dia dormindo. Agora imagine a seguinte situação: você, com 75 anos, prestes a morrer, olha para trás e percebe que dormiu 1 terço da sua vida, ou seja, 25 anos. Cara... 25 ANOS DORMINDO !!! Se você tem menos de 25 anos, simplesmente você vai dormir mais do que viveu até hoje!!! Pense nisso... e durma menos.

#7 § Kenshin §

§ Kenshin §

    I'm coming back...!

  • Usuários
  • 574 posts
  • Sexo:Masculino
  • Localidade:BA
  • Interesses:Sou fã de linguagens direcionadas para a web, como php, (x)html, xml, wml.
    Também gosto de webdesign e ultimamente tenho me dedicado mais a aprender css, mysql, javascript, ajax e actionscript.
    Trabalho com os programas Dreamweaver, Illustrator e Flash.

Posted 13/01/2008, 01:24

basicamente eh como o p.r. falou.
independente de como ou quando comecou, o erro eh que o quinto parametro passado esta definido como string quando deveria ser inteiro.
tente usar a fucnao settype antes

Na verdade não é bem isso. O valor das variáveis independem do tipo, isto é, o próprio PHP faz a conversão, na medida do possível. O que está acontecendo é que a variável não está contendo um valor numérico.

Código reproduzível:

<?php

$days = 'foo'; // oops
$months = '1';
$years = '2008';

$starts = mktime (0, 0, 0, $months, $days, $years);

?>
[]’s :D

intendi, mas imaginei que uma (possivel) causa para a variavel ser passada como string seria por exemplo atraves de querystring (eh so um exemplo) e que um "7" por exemplo, como string daria esse tipo de erro, suposicoes nao testadas apenas :assobio:

vlw ^_^
Web Developer / Web Designer / Information Architect
"Living to learn... learning to live!"
Useful links: Rules | Search

#8 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 13/01/2008, 10:11

Se o seu problema continuar amigo, pode partir para isso

$starts = date("Y-m-d", strtotime($years . "-" . $months . "-" . $days . "00:00:00"));
Funcionaria como um mktime(), só que de uma outra forma B)

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#9 Marcivone

Marcivone

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Masculino
  • Localidade:Redenção-PA

Posted 13/01/2008, 12:34

Valeu Galera pelas várias respostas.

**RESOLVIDO**




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq