• Opret dig
  • Glemt adgangskode

User account menu

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

Breadcrumb

  • Hjem
  • forums
  • HJÆLP php problem med datoindlæsning

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

16 år 10 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

16 år 10 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

16 år 10 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

16 år 10 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

16 år 10 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

16 år 10 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

16 år 10 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

Privatbeskeder 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

BigLinux 3
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15
Backup/synkronisering? 2
Pepsi Challenge 4
"Intet realistisk alternativ" - mig i r*ven 10
Linuxin er nu migreret til Drupal 11 13
Et Dansk alternativ til Facebook 18
Ingen Mint 3
Ekstern Blu-ray-brænder, der fungerer med PCLinuxOS 3
Københavns og Aarhus Kommune dropper MS 9
Open Source-eksperimentet 1
Microsoft og Google ud af de danske skoler 2
Udfordringer med lydin på Debian 12 1
ExplainingComputers? 2
Nextcloud på mobilen 1
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 1
Ny Linuxin på vej :) 43
5G 9

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !