12. juli 2005 - 20:34Der er
32 kommentarer og 1 løsning
Tjekke at det er en af de tal det må være
Hejsa
Hvordan laver jeg en funktion som tjekker om en variabel inde holder visse tal.
1. $_POST['birth_day'] skal indeholde et tal mellem 01 og 31 (Bemærk at der er 0 foran alle tal der er under 10)
2. $_POST['birth_year'] skal indeholde et tal mellem dette års tal (2005) og tallene 35 år tilbage (1970)
3. $_POST['address'] skal indeholde en af stederne i et array. array("Ikke angivet", "Nordjylland", "Vestjylland", "Midtjylland", "Østjylland", "Sønderjylland", "Fyn", "Nordsjælland", "Sydsjælland", "Østsjælland", "Vestsjælland", "Øer")
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Det virker.., men kan det så laves mere advanceret? Jeg vil gerne have et array der hedder $subjects og som inde holder address, height og mange flere også den kunne køre igennem denne linje en gang, istedet for jeg skal kopire linjen og ændre navne?
Undskyld, men måske er jeg krævende nu, men kan det lade sig gøre at den tjekker alt i gennem også alle de ting den gør fejl kommer på en langliste istedet for først vil den komme med en besked om at man ikke må skifte brugernavn også når det er rettet og man trykker ret profil så kommer en ny fejl. Det er jo ret irriterende.
Nu har jeg lavet det så det passer til mig, men hvis jeg lader feltet 'name' eller 'description' være tomt, så kommer der ikke en advarelse. Synes jeg er meget mærkeligt :S
if($_POST['username'] != $_SESSION['username']) { $error[] = "Du kan ikke rette i dit brugernavn!"; } if(!isset($_POST['mail']) AND !isset($_POST['mail1'])) { $error[] = "<font color=\"#FF0000\">Du har ikke angivet 2 ens e-mails!</font>"; } if($_POST['mail'] != $_POST['mail1']) { $error[] = "Du har ikke angivet 2 ens e-mails!"; } if(!isset($_POST['name'])) { $error[] = "Du skal skrive dit navn!"; } if(!isset($_POST['description'])) { $error[] = "Du skal skrive en fritekst!"; } foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'"; } } }
if(count($error) == 0) { echo "fint"; } else { echo "Der skete en fejl, opdatering blev ikke gennemført. Følgende fejl blev registreret:<br><br><font color=\"#FF0000\"><ul>"; foreach($error as $v) { echo "<li>".$v."</li>"; } echo "</ul></font>"; } ?>
Nej, det er ikke helt så mærkeligt alligevel. Isset undersøger, om variablen eksisterer, og det gør den sådan set, omend tom! Så brug: if(!isset($_POST['name']) || empty($_POST['name'])) {
foreach($subjects as $v) { if(!empty($_POST[$v])) { if(!in_array($_POST[$v], ${$v})) { $error[] = "Du kan ikke vælge noget som ikke findes i feltet '$v'!"; } } }
Fordi ellers kan jeg ikke få det til at passe. Det skal være sådan at hvis indholdet af $_POST['birth_year'] ikke passer med en af dem den skal så skal den kun udskrive en fejl om at man ikke kan være født i også indholdet af $_POST['birth_year'].
Og ville den ikke give fejl hvis $_POST['birth_year'] indholdet tegn eller bogstaver?
Nu er der kun en lille ting tilbage og det er at hvis man får denne fejl:
$error[] = "Din fødselsmåned skal være mellem 01 og 12!";
bliver den udskrevet 12 gange :S Men selv og det er et tal får jeg også fejlen :(
$ok = 0; if(is_numeric($_POST['birth_year'])) { for($i=1; $i<=12; $i++) { if($i == $_POST['birth_year']) { $ok = 1; } if($ok == 0) { $error[] = "Din fødselsmåned skal være mellem 01 og 12!"; } } } else { $error[] = "Der må kun være tal i dit fødselsmåned!"; }
$ok = 0; if(is_numeric($_POST['birth_year'])) { for($i=1; $i<=12; $i++) { if($i == $_POST['birth_year']) { $ok = 1; } } if($ok == 0) { $error[] = "Din fødselsmåned skal være mellem 01 og 12!"; } } else { $error[] = "Der må kun være tal i dit fødselsmåned!"; }
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.