Hvad er der i $shoutoutend_timestamp når du får "-323467.622222:0:0"?
Jeg gør sådan her: <?php $sekunder = $shoutoutend_timestamp - time(); ?>
Hvis så timestamp er i fortiden i forhold til nu (i time()), så vil resultatet jo være negativt. Derfor jeg sætter jeg $fortid = true hvis dette er tilfældet. Derefter skifter jeg fortegnet så det bliver positivt. Jeg bruger det så til at sætte et minus foran det udskrevede resultat - ligesom for at designere at det er i fortiden.
Prøv at skrive istedet for: <?php $sekunder = abs($shoutoutend_timestamp - time()); ?>
Lad os lige tage den forfra:..... er noget forviret..
Har en table i MySQL som hedder: "shoutout"
I den er der et felt som hedder: "shoutoutend" af Datatype DATETIME
I feletet "shoutoutend" vil der ALTID være en dato som er et sted i fremtiden, og det kan være alt fra. 24 timer og ned til 10 min fx. 2006-11-26 14:50:55 og den vil ALDRIG kunne være negativ, hvis du forestår...
Det jeg gerne vil er, at se hvormange "timer:min:sek" der er fra "nu og her" og frem til det tidspunkt der er i feltet "shoutoutend"...
Det som jeg muligvis tror er fejlen er din mysql query:
Prøv med:
$shoutoutend_result = mysql_query("SELECT UNIX_TIMESTAMP(shoutoutend) AS shoutoutend_timestamp IN shoutout WHERE id = $row[id]");
Og brug derefter det ny pseudo-felt "shoutoutend_timestamp". Men det er ikke sikker at dette er fejlen. I dit ovenstående kode ser det ud som om du bruger $shoutoutend direkte. Det er jo et database resource som skal læses specielt.
Det som er hele ideen i det jeg forslår er at du henter et unix-timestamp fra databasen. Et unix-timestamp er antal sekunder siden 01-01-1970. I php får du nuværrende timestamp med time().
Forestil dig at der i databasen ligger datoen: 2008-01-01 11:39:00, altså et tidspunkt som lige nu ligger i fremtiden. Med SQL funktionen UNIX_TIMESTAMP får man timestamp 1199209140.
dvs: $shoutoutend = 1199209140;
kl. 20:15:07 idag (2006-11-27 20:15:07) er timestamp 1164680107.
Så udregner jeg tiden i timer, minutter, sekunder:
$timer = abs($sekunder / 3600); // 9591 timer (altså mere end et år) $sekunder = $sekunder - ($timer * 3600);
Så er der nu 1433 sekunder tilbage som vi udregner minutter ud fra: $minutter = abs($sekunder / 60); // 23 minutter $sekunder = $sekunder - ($minutter * 60);
sekunder opdateres og der er 53 sekunder tilbage. echo $timer.':'.$minutter.':'.$sekunder;
output er: "9591:23:53". Man kan selvfølgelig udskrive antal dage, uger, måneder, år...osv. hvis man vil. Udregningen er simpel.
Kan ikke få det til at passe, for ikke noget output fra sql'en?? hmm.. Har prøvet op og ned, højre og venstre.. men den vil ikke lystre... og kan sagtens følge dig i hvad du gøre...
Hvordan kommer min kode til at se ud, den hele, så kan jeg se om det er mig eller hvad...
Men jeg har ikke rørt ved din where-clause hvori du bruger "$row['id']"...
Jeg ved ikke hvad dit problem er. Jeg går ikke udfra at mit kode viser noget nyt som du ikke vidste. Jeg går udfra du er bekendt med standard udtræk fra database med mysql_fetch_array()...?
Hvis du bare copy-paster det kode, får nok du en fejl.
Dette her:
$result = mysql_query( "SELECT UNIX_TIMESTAMP(shoutoutend) AS shoutoutend_timestamp IN shoutout WHERE id = $row['id']" );
skal være:
$result = mysql_query( "SELECT UNIX_TIMESTAMP(shoutoutend) AS shoutoutend_timestamp IN shoutout WHERE id = ".$row['id'] );
Mvh Intel4004
Synes godt om
Ny brugerNybegynder
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.