• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af ajbo | 30.07.2008 10:27

HJÆLP php problem med datoindlæsning

Programmering
Kan og vil du ikke lige fortælle mig, hvad jeg skal gøre for at få fejlen rettet i koden her:

<?php
$lige_nu = date("dmy");
$bt = "$_POST[dagsdato]";

if($bt >= $lige_nu){
$tabel[x] = "$_POST[dagsdato] \t $_POST[tidspunkt] \t $_POST[brugerId] \t \n";
echo $tabel[x];
}
else {
print "Forkert dato-indtastning.";
}
?>

Koden virker så vidt jeg har konstateret indtil nu korrekt hvis, men også kun hvis
dag i måneden er lig med eller større end dagen i dag eks: 300908 eller 310708
returnerer $tabel[x] hvorimod 241209 udskriver fejlmeldingen, hvorfor det??
Hvordan kan koden ændres, så den viser korrekt i ALLE tilfælde?
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer7

# 1

17 år 3 måneder siden

Permalink

Indsendt af **twn** den 30. juli 2008 kl. 10:35

Permalink

Re: HJÆLP php problem med datoindlæsning

Skift formatet fra $_POST["dagsdato"] til "Y-m-d" og brug strtotime() istedet.

Med strtotime() og time() får du datoen i "unix time" i stedet, hvilket er datoen omregnet til sekunder siden 1970-01-01.


if (strtotime($_POST["dagsdato"]) >= time())

  • Log ind eller opret dig for at tilføje kommentarer

# 2

17 år 3 måneder siden

Permalink

Indsendt af ajbo den 30. juli 2008 kl. 11:32

Permalink

Re: #1

Tak for det særdeles hurtige og gode svar, du allerede har givet mig. Det med årstallet først, havde jeg slet ikke tænkt over. Men problemet er ikke fuld løst, for koden skal bruges i en allerede eksisterende ekstern database, der har været i brug nogle år, men desværre ikke virker med hensyn til automatisk at slette gamle datoer, der er indskrevet og indskrives af flere forskellige på flere forskellige eksterne og af hinanden uafhængige kontorer. Brugerne er vant til at taste det af dem ønskede tidspunkt ind som dag måned år i nævnte reæækefølge og som et 6 cifret tal som f.eks. 300708 - kan jeg på en eller anden måde undgå dit forslag til formatskifte, eller skal jeg opdele "dagsdato" strengen? Hvis jeg skal det,
kan stumperne så samles med dots som "2008"."07"."30" og være virkende på den måde?
  • Log ind eller opret dig for at tilføje kommentarer

# 3

17 år 3 måneder siden

Permalink

Indsendt af **twn** den 30. juli 2008 kl. 14:53

Permalink

Re: HJÆLP php problem med datoindlæsning

Som du selv er inde på, er løsningen nok at få opdelt dato strengen. Punktummer er nok ikke det rette valg - det skal vist være med bindestreger før strtotime() vil acceptere den.
  • Log ind eller opret dig for at tilføje kommentarer

# 4

17 år 3 måneder siden

Permalink

Indsendt af ajbo den 30. juli 2008 kl. 16:43

Permalink

Re: #3

Tak også denne gang. Jeg tror vores fælles løsning er den rette, så den vil jeg benytte.
  • Log ind eller opret dig for at tilføje kommentarer

# 5

17 år 3 måneder siden

Permalink

Indsendt af ajbo den 30. juli 2008 kl. 20:51

Permalink

Re #3

Koden her returnerer korrekt værdi såfremt dagsdato er tidligere eller senere
end aktuelle dagsdato (dagen i dag). Kan du fortælle mig, hvorfor logikken synes at mangle for dagen i dag?

<?php
$lige_nu = time();
$dagsdato = substr($_POST["dagsdato"],0,2);
$maaned = substr($_POST["dagsdato"],2,2);
$aar = substr($_POST["dagsdato"],4,2);
$aar = "20".$aar;
$booked_tid = $aar.$maaned.$dagsdato;
$bt = strtotime($booked_tid);

if ($bt >= $lige_nu){
$tabel[x] = "$_POST[dagsdato] \t $_POST[tidspunkt] \t $_POST[brugerId] \t \n";
echo $tabel[x];

}
else {
print "Forkert dato-indtastning.";
}

?>
  • Log ind eller opret dig for at tilføje kommentarer

# 6

17 år 3 måneder siden

Permalink

Indsendt af **twn** den 30. juli 2008 kl. 22:46

Permalink

Re: HJÆLP php problem med datoindlæsning

mktime() er i virkeligeheden nok bedre, da vi ellers også får et timestamp med, som vil være kl. 00:00 for $bt's vedkommende og aktuel tid for $lige_nu's. Derfor vil din if sætning fejle, hvis de to datoer er samme dag.


$lige_nu = mktime(0, 0, 0, date("m"), date("d"), date("Y"));

  • Log ind eller opret dig for at tilføje kommentarer

# 7

17 år 3 måneder siden

Permalink

Indsendt af ajbo den 31. juli 2008 kl. 14:16

Permalink

Re: #6

Da time() returnerer en long, kan jeg nok nøjes med at trække 86400 fra variabelværdien, der hvor det bliver nødvendigt - det giver mig en mulighed mere.
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Internettet er ved at dø. Vi kan stadig stoppe det 0
Tid til at lære noget igen 0
TPM 2 0
BigLinux 0
Amerikansk tastatur på dansk tastatur 0

Seneste aktivitet

Nørder søger nørder: Første Linux-brugergruppe på Mors 2
Østrigsk ministerium smider Microsoft ud til fordel for Nextcloud 1
Brug carburetor til at forblive usynlig online 8
Sådan konfigurerer du flatpaks' flathub til verified only 9
Plasma tapet-skifter 3
How to upgrade to LMDE 7 4
Virksomheder og enheder der kører på Linux 11
NordVPN har udgivet kildekoden til sin grafiske brugergrænseflade 2
Flere og flere bruger Brave browseren 1
LibreOffice og Collabora: Hvorfor er de ikke i skolerne i stedet for Word og Google Docs? 11
Firewall igen 5
Værdien ved open source 2
Sailfish på android telefon 1
Ladybird Browser 7
Satiriske ordspil 3
Kan ikke boote på installation 26
Tilføj signatur til Evolution mail 2
LUKS kryptering - Er der andre der bruger det 15
Dansk distro til software udviklere 2
Linux Debian 5

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !