Avatar billede skumpaq Nybegynder
01. august 2003 - 04:40 Der er 13 kommentarer

Undersøgelse af om en variabel er større osv

Nu har jeg i længere tid prøvet og prøvet på at få nedenstående til at virke.. Men det vil bare ikke.

Mit problem er at jeg har en tabel hvor 2 kolonner indeholder timestamps.
Derudover har jeg via en form 2 timestamps mere.

De timestamps der er i tabellen er en start tid og en sluttid.
dem fra formen er også en start tid og en slut tid.

Problemet er nu, at hvis tiderne går ind over hinanden, skal den melde fejl.
Men jeg kan ikke få den til det.

Fx: Hvis Form_Start er før Tabel_Slut, meld fejl
Hvis Form_Slut er efter Tabel_Start, meld fejl

osv..

En der har et kreativt forslag til dette ?
Avatar billede nocs Nybegynder
01. august 2003 - 04:45 #1
kan man ikke se lidt kode? :)
Avatar billede skumpaq Nybegynder
01. august 2003 - 04:47 #2
Det er lidt svært, da variabler, og koder hentes fra flere forskellige dokumenter.
Avatar billede nocs Nybegynder
01. august 2003 - 04:50 #3
din tabel er det lavet som et array?

er det ikke bare at sige if(($timeStamp1-$timeStamp2)<0) print "Fejl";
Avatar billede sostack Nybegynder
01. august 2003 - 07:42 #4
$forskel = Array($form_start - $tabel_slut, $tabel_start - $form_slut);
if($forskel[0] < 0 || $forskel[1] < 0)
{
    echo "Fejl!";
}

//sostack
Avatar billede repsac Nybegynder
01. august 2003 - 09:39 #5
er det ikke bare:

if ($Form_Start < $Tabel_Slut  ||  $Form_Slut > $Tabel_Start) {
    # Fejl
}

... eller forstår jeg ikke hvad det handler om?
Avatar billede sostack Nybegynder
01. august 2003 - 10:09 #6
repsac-> jo da, men ikke nær så kompliceret ;-}

//sostack
Avatar billede repsac Nybegynder
01. august 2003 - 10:58 #7
heh, så er det vist et svar berettiget :)

... men nu ikke 60 point! Det er det ikke værd -- 15 er mere passende... tag selv resten :)
Avatar billede repsac Nybegynder
01. august 2003 - 11:04 #8
skumpaq: bemærk at de to |-tegn bare svarer til "eller", dvs. hvis enten den første sammenligning (og/)eller den anden sammenligning er sand, så meldes der fejl.
Faktisk evalueres det efter "short circuit", dvs. at hvis den første er sand, så evalueres den anden sammenligning slet ikke -- så kan det ikke betale sig. Er den første derimod falsk evalueres den anden...
Tilsvarende med && (som betyder "og"): hvis den første er falsk evalueres den anden ikke, er den første derimod sand evalueres den anden sammenligning.

faktisk kan || erstattes med  or  og && med  and , men os kode-nørder kan godt lide tegn ;)
dvs. følgende vil også virke:
if ($Form_Start < $Tabel_Slut  OR  $Form_Slut > $Tabel_Start) {
    # Fejl
}
Avatar billede repsac Nybegynder
01. august 2003 - 11:07 #9
det med short circuit kan have betydning hvis man laver noget i stil med:

if ('hest' == 'hest'  ||  $bool = (1 == 2))

Nu bliver $bool slet ikke sat til nogen værdi, da det efter || ikke evalueres fordi det første er sandt. Og da bare én af delene skal være sande (der står jo ||) så er det jo ligegyldigt om det efter || er sandt eller falskt -- så det evalueres ikke.

Forståeligt? :)
Avatar billede skumpaq Nybegynder
02. august 2003 - 00:03 #10
Forestil jer denne tabel i en database:

---------------------
ID | Tid_1 | Tid_2 |
---------------------
  1 | 16452 | 17953 |
  2 | 19265 | 20598 |
---------------------

I min form har jeg to inputfelter.

Form_Tid_1: 16958
Form_Tid_2: 18652

Så langt så godt.

Nu skal jeg have mit script til at tjekke, begge rækker for at
Form_Tid_1 og Form_tid_2 ikke overlapper nogen af de tider der er
i tabellen.

Fx må Form_Tid_1 ikke gå ind før Tid_1 osv...

Den skal melde fejl når tiden ikke er ledig i "kalenderen".
Avatar billede skumpaq Nybegynder
02. august 2003 - 00:04 #11
BTW... Jeg har kodet PHP+MySQL i 4 år, og er ikke nybegynder... ;)
Det er den første ting i mit system jeg ikke kan få til at passe
Avatar billede repsac Nybegynder
02. august 2003 - 23:39 #12
jammen... har vi ikke besvaret dit spørgsmål? Hvis ikke må du spørge igen... jeg forstår ikke hvad du ønsker hjælp til med din kommentar pr. 02/08-2003 00:30:13 -- andre der gør?
Avatar billede sostack Nybegynder
04. august 2003 - 08:33 #13
Prøv lige at sætte dine form-værdier og db-værdier som intval(form-værdi) og intval(db-værdi) i din if-sætning.
Har på fornemmelsen, at den ikke evaluerer dem som tal.

//sostack
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