• 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 4 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 4 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 4 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 4 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 4 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 4 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 4 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

KDE overgår indsamlingsmålet for 2025 med rekordstor støtte fra lokalsamfundet 0
Zypper Package Manager brugervejledning til openSUSE brugere og deres derivater 0
KDE Spectacle tilføjer OCR understøttelse for at kopiere tekst direkte fra skærmbilleder 0
Deaktiverer alle AI-funktioner i Firefox Web Browser 0
Gratis solenergi, skrivebord og valg 0

Seneste aktivitet

Driver til min scanner? 1
Affinity V3 2
copy hvordan 1
Sortering af filer - sort of... 4
Det der ikke må galt gik galt 5
VPN — 8 tests, 1 klar vinder i 2025 3
Lidt nostalgi 1
Forum. 1
BigLinux 1
Mount btrfs-device fra ext4 8
Skal vi være nervøse? 22
How to upgrade to LMDE 7 6
Kontakt til dansk-gruppen 3
Internettet er ved at dø. Vi kan stadig stoppe det 1
Nørder søger nørder: Første Linux-brugergruppe på Mors 3
Ø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
Virksomheder og enheder der kører på Linux 11

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !