Avatar billede mltrfan Nybegynder
07. marts 2007 - 13:41 Der er 18 kommentarer og
1 løsning

mktime problem

Hej Eksperter
Jeg er ved og lave en side der skal kunne se om nyhederne er over den dato som er slut datoen i databasen. Den skal ende med og udskrive nyheden hvis den ikke er over datoen ellers hvis den er over skal den udskrive "ingen nyheder". Nogle der kan hjælpe mig så det kommer til og virke?
Denne kode giver bare denne fejl hvorfor kan jeg ikke lige se.

Warning: mktime() expects parameter 5 to be long, string given in on line 13
<?
include("db.inc.php");
$idag = mktime(0,0,0, date('n'), date('j'), date('y'));
$udlob= mysql_query("SELECT * FROM nyhed WHERE id=1");
$count = 0;

while ($dato=mysql_fetch_array($udlob)) {

$arr = explode('/', $sql['datoslut']);
$d = $arr[0];
$m = $arr[1];
$y = $arr[2];
$datoslut = mktime(0,0,0,$m,$d,$y);

if ($idag > $datoslut) {
    $count++;
    ?>
<table border="0">
<tr>
<?
echo "<td valign=\"top\">";
    echo "$dato[datostart]&nbsp;&nbsp;&nbsp;";
    echo "$dato[overskrift]&nbsp;&nbsp;&nbsp;";
    echo "$dato[tekst]";
    echo "</td>";
    echo "</tr>";
        echo "</table>";   

}
}
if ($count == 0) {
    echo "Ingen Nyheder";
}
?>
Avatar billede radion Nybegynder
07. marts 2007 - 13:57 #1
prøv at udskrive dine variabler $m $d $y noget kunne tyde på at de ikke er tal
Avatar billede mltrfan Nybegynder
07. marts 2007 - 14:00 #2
den udsrkiver et "S"
Hvordan for jeg det til og virke som jeg gerne ville havde det?
Avatar billede radion Nybegynder
07. marts 2007 - 14:20 #3
der er jo noget galt med det du hiver ud fra databasen

prøv at udskrive $sql['datoslut'] inden du splitter det op

kigger på din kode, kunne det tænkes at $sql['datoslut'] skulle være $dato['datoslut'] ?
Avatar billede mltrfan Nybegynder
07. marts 2007 - 14:30 #4
Du har ret der var noget galt med min kode. Nu viser den nyhed. Men hvis man går ind og ændre datoen til og udløbe igår viser den stadig nyheden. Hvordan for jeg den til ikke og går det. men til og sige "ingen nyheder" som i min kode
Avatar billede radion Nybegynder
07. marts 2007 - 14:35 #5
har du prøvet at udskrive dine variabler, og se om de opfører sig som du gerne vil have den til det?
Avatar billede mltrfan Nybegynder
07. marts 2007 - 14:42 #6
ja det har jeg men det virker stadig ikke:(
Avatar billede radion Nybegynder
07. marts 2007 - 14:46 #7
hvad siger $idag og $datoslut
Avatar billede mltrfan Nybegynder
07. marts 2007 - 14:48 #8
$idag siger        1173222000
$datoslut siger    1173135600
Avatar billede radion Nybegynder
07. marts 2007 - 14:52 #9
har du ændret andet i koden, ifht den der står i indlæg #0 ? for hvis det står sådan, og variablerne er som du siger, så skal det jo virke :)
Avatar billede mltrfan Nybegynder
07. marts 2007 - 14:57 #10
nej, kun de ændreninger du er kommet med. men det virker stadig ikke det lort
Avatar billede radion Nybegynder
07. marts 2007 - 14:59 #11
lort... det er formegentlig ikke PHPs skyld :P

prøv at udskrive $idag og $datoslut lige før
if($idag>$datoslut)
Avatar billede mltrfan Nybegynder
07. marts 2007 - 15:01 #12
den kommer igen med de samme tal

$idag siger    1173222000
$datoslut 1173135600
Avatar billede radion Nybegynder
07. marts 2007 - 15:29 #13
ja, så melder jeg pas
Avatar billede mltrfan Nybegynder
07. marts 2007 - 15:36 #14
okay men tak for din tid og hjælp
Avatar billede fhansen Praktikant
07. marts 2007 - 21:20 #15
Ved ikke lige om dette hjælper dig, men det er nogen af de functioner jeg bruger
sammen med mysql

således deler jeg en datetime fra mysql op i dato og tid.

$Dt = split("
  • ",$error['Date']);
$Dt = mktime(0,0,0,$Dt[1], $Dt[2], $Dt[0]);
$Dtt = date("d-m-Y", $Dt);
$St = split("[:]",$error['Time']);
$St = mktime($St[0], $St[1]);
$Stt = date("H:i", $St);


således arbejder jeg med dagen i dag

$Nday = date('H-i-s-d-m-Y');
$Nday = split("
  • ",$Nday); 
$Nday = mktime($Nday[0], $Nday[1], $Nday[2], $Nday[4], $Nday[3], $Nday[5]);
Avatar billede fhansen Praktikant
07. marts 2007 - 21:24 #16
glemte lige en ting...

jeg mener at din linie
$idag = mktime(0,0,0, date('n'), date('j'), date('y'));


skal se sådan ud
$idag = mktime(0,0,0, date('n'), date('j'), date('Y'));

y giver årstallet med 2 cifre, men jeg mener at mktime() skal have cifre.

Finn
Avatar billede mltrfan Nybegynder
08. marts 2007 - 09:08 #17
Jeg fandt selv problemmet

$count skal ikke være der

og

if ($idag > $datoslut) skal være if ($idag < $datoslut)

og efter table skal der stå isteden for resten.

} else {
    echo "Ingen Nyheder";
}}
?>
Avatar billede mltrfan Nybegynder
08. marts 2007 - 09:09 #18
men tak til radion og fhansen for jeres tid
Avatar billede mltrfan Nybegynder
19. marts 2007 - 08:34 #19
lukker dette spg
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester