Shamino Skrevet 25. februar 2011 Del Skrevet 25. februar 2011 Hei! Jobber med en skoleoppgave, der vi bl.a. skal jobbe med forms og php koding. Lurer derfor på om noen her har tips til hvordan man kan gjøre formen hvor brukeren blir stilt spørsmål om han/hun er gift eller ikke til å ikke være case-sensitiv? Kan jo såklart lage en else if med "ja/nei/Ja/Nei/JA/NEI", men hadde vært artig å få det til på en enklere måte. Dette er en liten del av koden jeg bruker, om noen syntes det er enklere å legge til koding rett inn. <?php $gift=$_POST["gift"]; $barn=$_POST["barn"]; if ($gift == ja&&$barn == ja) { print("Du er gift og har barn.<br/>"); } ... ?> Mvh. Niggorex. Lenke til kommentar
Garanti Skrevet 25. februar 2011 Del Skrevet 25. februar 2011 Bruk radio buttons i stedet for tekstfelt! http://www.htmlcodetutorial.com/forms/_INPUT_TYPE_RADIO.html Lenke til kommentar
Shamino Skrevet 25. februar 2011 Forfatter Del Skrevet 25. februar 2011 Er nødt til å gjøre det med tekst felt, er et av kravene til oppgaven, men det var en genial løsning. Kommer garantert til å bruke den senere til lignende problemer! Tusen takk! Leste også et sted at det kan lønne seg å tvinge formen til å bruke en bestemt "case" (upper/lower), men vet ikke hvordan det fungerer. Er forresten håpløst at vi må bruke de tekst feltene. Radio buttons ville sett mye bedre ut, og ville jo utelukket tilnærmet ALLE mulige feil... Takk for svar! Lenke til kommentar
Garanti Skrevet 25. februar 2011 Del Skrevet 25. februar 2011 (endret) Høres sært ut.. Men uansett, jeg ville kjørt $janei = $_POST["janei"]; $janei = preg_replace('/[^janei]/i', '', $janei); //Fjerner alle tegn bortsett fra de som er i gyldige svar $janei = strtolower($janei); // Gjør alle bokstavene "små" switch ($janei) { case 'ja': echo "Ja"; break; case 'nei': echo "Nei"; break; default: echo "Svar ja eller nei"; break; } Ikke så elegant, men ikke så elegant å bruke tekstfelter i et sånt tilfelle uansett.. Med forbehold om feil.. ett år siden jeg skrev PHP Edit: Regner med du er ukjent med regex, men du kommer sikkert borti det uansett.. Brukes til å søke etter (og eventuelt bytte ut) kombinasjoner av tegn i tekst. Krever at du bruker hodet Legger ved et par nyttige sider: http://regex.larsolavtorvik.com/ - Verktøy for å teste ut regex-uttrykk i sanntid http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/ - Oversikt over bruk Og manualen, for øvrig: http://www.php.net/manual/en/manual.php Endret 25. februar 2011 av Garanti Lenke til kommentar
Terrasque Skrevet 25. februar 2011 Del Skrevet 25. februar 2011 http://php.net/manual/en/function.strtolower.php Lenke til kommentar
Milktea Skrevet 27. februar 2011 Del Skrevet 27. februar 2011 // Testdata $_POST = Array( 'uteligger' => ' ja ', 'gift' => ' jA', 'barn' => 'NeI ', ); // Skit for å tolke strenger som boolske verdier function strtobool($str, $str_y, $str_n) { $tmp = preg_match("/{$str_y}|{$str_n}$/i", trim($str), $ret); if(empty($ret) || count($ret) > 1) { throw new Exception("<b>Error:</b> Invalid data input <code>{$str}</code> for function " . __function__); } else { return ($str_y == strtolower(end($ret))) ? true : false; } } // Gyldige input-felt $keys = Array( 'gift', 'barn', 'uteligger', ); $keys_inv = array_flip($keys); $data = array_intersect_key($_POST, $keys_inv); $flags = 0; foreach($data as $key => $val) { try { if(strtobool($val, 'ja', 'nei') == true) { $flags += pow(2, $keys_inv[$key]); } } catch(Exception $e) { exit($e->getMessage()); } } // Rask og skitten tekstrepresentasjon $ret = 'Du '; $msgs = Array( 1 => 'er %sgift', 2 => 'har %sbarn', 4 => 'er %suteligger', ); foreach($msgs as $flag => $msg) { $ret .= ((($flags & $flag) == $flag) ? sprintf($msg, "") : sprintf($msg, "ikke ")) . ' og '; } echo substr($ret, 0, -4); // output : Du er gift og har ikke barn og er uteligger Bitmask-ish løsning. Ble litt fascinert av problemet Lenke til kommentar
AlecTBM Skrevet 27. februar 2011 Del Skrevet 27. februar 2011 Evt bare preg_match('/^ja$/i',$var) Lenke til kommentar
Thomas. Skrevet 3. mars 2011 Del Skrevet 3. mars 2011 Bitmask-ish løsning. Ble litt fascinert av problemet Er ikke nødvendig å gjøre det så ballette. Holder med og legge til en funksjon i koden du har fra før. Eventuelt bruke metoden til Garanti, preg_match. <?php $gift = $_POST["gift"]; $barn = $_POST["barn"]; if(strtolower($gift) == 'ja' && strtolower($barn) == 'ja') { print("Du er gift og har barn.<br/>"); } ?> Dette vil matche JA, Ja, jA, og ja. Lenke til kommentar
Milktea Skrevet 3. mars 2011 Del Skrevet 3. mars 2011 Det var mest en spøk. På det annen side er ikke en løsning av den typen dum når man sitter med et utall variabler og permutasjoner som skal dekkes, om det nå ikke var tilfelle her. Synes forøvrig at stripos og liknende funksjoner er bedre å anbefale. Regexp er overkill til dette og nybegynnere skjønner gjerne lite av det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå