Avatar billede loonitun Juniormester
13. marts 2017 - 14:21 Der er 2 kommentarer og
1 løsning

hjælp til validation af 24 timer form

Hej jeg har siddet og prøvet at få noget validering på en form jeg har lavet,
jeg har brug for at kunne skrive  01-24 så ledes at timer kan bruges og man ikke for fejl data i min database. men og 1-24 skal bruges i tilfælde af folk ikke skriver 01 men kun 1.

jeg har prøvet at bruge denne stump kode, men den gør ikke helt rigtig som jeg ønsker, og jeg er lidt set blind på hvorfor.

$expr = '/^([0-9]|0[0-9]|1[0-9]|2[0-3])*$/';
            if (preg_match($expr, $DesignSHour) && filter_var($DesignSHour, FILTER_VALIDATE_INT))
            {
                echo "go";
               
            }
            else
            {
                echo "not go";
            }

den ville gerne acceptere

tiden 1-9, er helt fint  men ikke tiden 01-09.
tiden 10 til 24 er også fin, men 25 -99 er også godkendt hvilket jo ikke er så godt.

Som jeg har forstået det har jeg ellers skrevet i koden noget i stil med

tjek om det er 0 - 9 ELLER 01-09 Eller 10-19 eller 20-23 Altså ( [0-9]  | 0[0-9] | 1[0-9] | 2[0-3] )

Men den tjekker tilsyneladende ikke som jeg tror, så hvis nogle her inde kan hjælpe med at forklare fejlen i min kode ville jeg være meget taknemlig.
Avatar billede repox Seniormester
13. marts 2017 - 14:46 #1
Hvorfor har du brug for et regular expression?

Kan du ikke bare skrive:


if((int)$DesignSHour >= 1 && (int)$DesignSHour <= 24)
{
    echo "go";
}
else
{
    echo "no go";   
}
Avatar billede Rune1983 Ekspert
13. marts 2017 - 14:46 #2
Lav din egen funktion til at kontrollere med
Har lige lavet et eksempel her som måske kan anvendes.
function KontrolTiden($Tiden) // Tiden 01-24, 1-24
{
    $OpdelTiden = explode("-", $Tiden);
    $Tid1 = $OpdelTiden[0];
    $Tid2 = $OpdelTiden[1];
   
    if($Tid1 < 10){
        $Tid1 = "0$Tid1";
    }
    if($Tid2 < 10){
        $Tid2 = "0$Tid2";
    }
    return "$Tid1-$Tid2";
}
// Udfør test
KontrolTiden("1-24");
Avatar billede loonitun Juniormester
14. marts 2017 - 10:49 #3
Mange tak for begge svar, Jeg valgte at gå med den simple løsning ( som jeg er lidt flov over jeg ikke selv lige tænkte på )

men jeg have simpelthen bare kørt en del i regular expression med andre dele af min kode, og det hang lidt mere ved end godt var ;)

men problemet er løst nu og har markeret det som svar.

mange tak :)
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

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