Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:24 Der er 24 kommentarer og
1 løsning

Select indenfor 30 dage virker ikke!?

JEg har denne kode som vælger fra databasen hvor der står 30 dage fra eller til datoen i dag. Men det virker ikke, uanset hvilken dato jeg skriver om  det så er et halvt år fremme virker det ikke! Den står til datetime i databasen, skal det ændres?
Eller er det koden der skal ændres?

<?

include("acces.php");
$s = ("SELECT user FROM login WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= ddate");
$result = mysql_query($s)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);
echo $log['user'];


echo "<font color=\"red\">bla</font>";
?>
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 20:33 #1
Det bør nu virke som det står. Du trækker 30 dage fra dags dato, og får
2004-06-04, og vælger alle datoer derefter.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:37 #2
nå ja okay, det virker jo også, jeg gik fremefter. valgte 2004-08-04.
Okay, så en ting mere, hvornår opdateres dette felt i databasen?
Altså er der ikke noget med at den automatisk skifter når den bliver updated i rækken eller hvad?
ER det kun timestamp der gør det?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 20:39 #3
Det er kun timestamp, og kun det første af slagsen, hvis du skulle have flere.
Men du kan bare gøre det i din SQL, når du selv siger UPDATE eller INSERT.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:42 #4
hvis man bruger timestamp, hvornår opdateres den så?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 20:50 #5
Ved hver ændring. Du skal ikke selv gøre noget ved feltet i en UPDATE.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:51 #6
Skal der bare stå "UPDATE login"
og så køre den som mysql_query?
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 20:57 #7
Skal der bare stå "UPDATE login"
og så køre den som mysql_query?

Og samtidig, så vis du vil have dine point, så svar!
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:03 #8
Nej, det er ikke lovlig syntaks. Du skal have mere med, både et felt, der skal
ændres og en betingelse der siger hvilken række:

  update login set felt=noget where id=nogetandet

Så mon du egentlig skal bruge timestamp - du bør nok selv sætte feltet med dato og tid.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:07 #9
det jeg tænkte på var angående noget med at vise de brugere der er online. Så sal den også gerne kunne regne den tid man har været online i ud, men det kan jeg ikke få den til!
For hvis jeg bruger normalt, og han så sidder på ved et dato skifte, så kan den jo ikke sige 01 (den 1.) - 30 (DEN 30.) Så bliver det jo ikke online tid. JEg kan jo sige Logud tid = 12:12:07 - 11:12:07 = Logind tid. Så finder den jo ud af at brugeren har været online i 01:00:00 , men det går galt ved datoskifte, hvordan fikser jeg den?
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:14 #10
Håber du forstår hvad jeg mener ellers må du spørge!
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:16 #11
lav dato og tid til en unixtimestamp, som er antal sekunder siden verdens skabelse.
Har du to af den slags kan du trække dem fra hinanden og få antal sekunder mellem
de to tidspunkter. Verdens skabelse var som bekendt den 1. januar 1970.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:20 #12
HVordan laver jeg det, det står da ikke i mysql struktur. ?

ER det i filen hvordan?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:23 #13
Jeg går ud fra du har din mysql-dokumentation ved hånden ;)
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html#IDX1421
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:29 #14
JEg skal bare i mit document hente det og så sige

$s = unix_timestamp($row['time']);
så får jeg det i sekunder siden den tid, hvordan afrunder jeg så til hele tal når jeg går til timer og minutter.

siger jo
$a = $s * 60;    < minutter

og
$b = $a * 60;    < timer

Det skal jo ikke hedde 1,1 timer og 2,05 minutter, så skal den afrunde, jeg skal have læst lidt på alt det, men hvordan gør jeg nu? og er det herover rigtigt?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:32 #15
Den funktion jeg henviser til skal du bruge direkte i SQL-sætningen.
Afrunding og lignende i PHP: http://dk2.php.net/manual/en/ref.math.php
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:35 #16
det er altså bare round();

hvad med det unix_timestamp
hvordan bruger jeg det
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:41 #17
Som i det link jeg skrev før.
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:46 #18
altså:

$r = mysql_query("SELECT UNIX_TIMESTAMP(time) FROM login WHERE user = '$user'");
$t = mysql_fetch_array($r)or die("MySQL fejl: " . mysql_error());

$v = $t['time'];
eller hvad?

ER det rigtigt, jeg vil gerne hvis du kan forklare hvordan, har næsten ikke læst, men skal til det i den kommende uge!
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:51 #19
Det er en god idé at gøre sig fortrolig med manualerne til de ting man bruger ;)
$r = mysql_query("SELECT UNIX_TIMESTAMP(time) as time FROM login WHERE user = '$user'");
eller kan du ikke bruge $t['time'] - ellers brug din sql og $t[0]
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 21:56 #20
den spyttede 1086282000 ud, kan det passe?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:57 #21
Det lyder rigtigt - jeg har lige talt efter.
365*24*60*60*34
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 22:03 #22
okay, så kan jeg når jeg skal regne online tid ud bare sige
/ EFTER JEG HAR TRUKKET UD MED UNIX!
$login = $row['login'];
$logud = $row['logud'];

$tid = $login - $logud;

// Nuværende online tid trækes ud
$onlinetid = $row2['online'];

// Lægges sammen
$nuonline = $tid + $onlinetid;

// SÆTTER NYE TID IND I DATABASEN


Håber du kan gennemskue det, er det ikke sådan det gøres?
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 22:11 #23
Nå men det sidste der er småting, så det skal jeg nok få løst!
Smid et svar! Du ahr fortjent det :)
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 22:12 #24
Jah, det har jeg vel, men jeg samler altså slet ikke på point. Desværre. ;)
Avatar billede hmmhelpinghmm Nybegynder
04. juli 2004 - 22:13 #25
Nå okay, men du skal i hvert fald have mange mange tak for hjælpen! :)
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