Avatar billede the_email Nybegynder
27. maj 2004 - 21:44 Der er 13 kommentarer og
1 løsning

Sætte nul foran et tal, hvis det består af ét ciffer

Davdav.
Vha. følgende stykke kode logger jeg IP, hostname, dato og tid når folk besøger min hjemmeside:

<?php
$IP;
if (getenv("HTTP_CLIENT_IP")) $IP = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $IP = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $IP = getenv("REMOTE_ADDR");
else $IP = "UNKNOWN";

$host = gethostbyaddr($_SERVER['REMOTE_ADDR']); //brugerens host

//finder dato og tid
$dato = date("Y-n-j");
$tid = date("H:i:s");

$database = "data";
$tb = "iplog";

//connecter til MySQL
$db = mysql_connect("localhost", "iplogger", "blabla") or die (mysql_error());
mysql_select_db($database);

//skriver til MySQL
mysql_query("INSERT INTO $tb
(ip, dato, tid, host)
VALUES
('$IP', '$dato', '$tid', '$host')")
or die(mysql_error());

//lukker forbindelsen
mysql_close();
?>

Disse data trækker jeg så ud og sætter dem ind i en tabel.

Mit problem er så at at jeg vil ordne dataene så de nyeste står først. Problemet er bare at da den 5. bliver skrevet som 5 og ikke 05 kan den ikke finde ud af at sortere dem.

Hvordan får jeg den til at skrive et 0 foran 1, 2, 3 osv., når der kun er et ciffer og lade være med at gøre det når der er to cifre?
/TheEmail
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 21:48 #1
Hvor skal du bruge det? Hvis det er til dato og tid, kan du blot bruge felttypen DATETIME
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 21:50 #2
gethostbyaddr er forøvrigt er tidskrævende operation, der formentlig vil nedsætte
din sides svartid mærkbart. Du kan evt undlade at sætte den i tabellen, og blot
hente den senere.
Avatar billede the_email Nybegynder
27. maj 2004 - 21:51 #3
Okay, mener du at jeg skal erstatte date(parameter) med datetime(parameter)?
Avatar billede the_email Nybegynder
27. maj 2004 - 21:51 #4
eller er det forkert forstået
Avatar billede phpwiz Nybegynder
27. maj 2004 - 21:52 #5
echo ((strlen($var) == 1) ? "0" : "") $var;
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 21:54 #6
Jeg ved heller ikke hvad du mener, the_email.
I databasen skal du bruge eet felt af typen DATETIME, og så indsætter du bare
fx '2004-5-27 21:55:7'
Avatar billede the_email Nybegynder
27. maj 2004 - 21:59 #7
Men hvis vi nu tager dit eksempel med 2004-5-27 21:55:7. Laver det sådan vil disse tre datoer bliver vist i flg. række følge:
2004-1-27
2004-12-27
2004-5-27

Hvor rækkefølgen skulle være:
2004-1-27
2004-5-27
2004-12-27

Det problem vil jeg løse ved at lave 2 og 5 til 02 og 05.
Så vil det således ud:
2004-01-27
2004-05-27
2004-12-27

/TheEmail
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 22:04 #8
med DATETIME sorteres altid korrekt, men du er da velkommen til selv at lave ekstra arbejde.
phpwiz kommer med een løsning, men hvis du ikke vil bruge DATETIME (eller DATE, men
du registrerer jo også tid, så du skal vel have DATETIME), så er den nemmeste
løsning at bruge
  $dato = date("Y-m-d");
Avatar billede the_email Nybegynder
27. maj 2004 - 22:11 #9
Det var jo det jeg skulle bruge. Y-m-d istedet for Y-n-j
Smider du lige et svar Erik?
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 22:17 #10
Nej, jeg samler ikke på point.
Og jeg har tilsyneladende heller ikke fået dig overbevist om at du skal bruge DATETIME.
Avatar billede the_email Nybegynder
27. maj 2004 - 22:23 #11
Hvad skulle fordelen være i DATETIME, når det andet virker?
Og smid nu lige et svar, jeg hader selv at tage pointsne. Og du får jo 5 om dagen alligevel så 30 fra eller til gør jo ikke så større
Avatar billede erikjacobsen Ekspert
27. maj 2004 - 22:24 #12
Fordi DATETIME er beregnet til formålet, og har tilknyttet en række anvendelige funktioner.
Du må gøre med dine point hvad du vil for min skyld, bare jeg ikke får dem.
Avatar billede the_email Nybegynder
27. maj 2004 - 22:29 #13
Okay, phpwiz, du får dem. Dit svar vil sandsynligvis også være en løsning.
Tak til jer begge to.
Mvh TheEmail
Avatar billede swaxi Nybegynder
28. maj 2004 - 00:28 #14
str_pad()
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