• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

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

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Valgmuligheder
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 in to post comments

Kommentarer7

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 in to post comments

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 in to post comments

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 in to post comments

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 in to post comments

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 in to post comments

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 in to post comments

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 in to post comments

Svar søges

Test 0
Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

"Intet realistisk alternativ" - mig i r*ven 5
2 stk Jolla C2 sælges 2
Test 2
Det første forumindlæg efter installation af Forum-modulet 8
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad