PHP/JS - select a sprawdzanie płci klienta

0

Witam,
mam mały problem z wyświetlaniem odpowiedniej wartości selecta w zależności czy zalogowana osoba to kobieta czy mężczyzna. Na początku strony mam funkcję w JS do sprawdzania: kobieta czy mężczyzna po imieniu (jego ostatnia litera):

function setsex( firstname ) {
	koncowka = String(firstname).substring( String(firstname).length, String(firstname).length-1 );
	if( koncowka=="a" || koncowka=="A" ) {
		document.all['dane[user_sex]'].value = "K";
	}
	else {
		document.all['dane[user_sex]'].value = "M";
	}
}

a tak wygląda select :

<select name="dane[user_sex]" style="width:100px">
<?
	if(is_array($USER_SEX)){
		foreach($USER_SEX AS $k=>$v){
			echo "<option value=\"".$k."\"".($k==$dane["user_sex"]?" selected":"")."> ".$v;
		}
	}
?>
            </select>

Wartości do K i M są zdefiniowane w osobnym pliku w tablicy $USER_SEX.
Funkcja w JS wydaje mi się poprawna, tylko jak ją wykorzystać w tym selekcie. Aktualnie cały czas mi się wyświetla pierwsza płeć która jest zapisana w tablicy (mężczyzna) i po zalogowaniu się kobiety (np. o imieniu Anna) nic to nie zmienia.
Mam nadzieje,że mi ktoś w tym pomoże.

Pozdrawiam

0
<select name="dane[user_sex]" style="width:100px">
<?
        if(is_array($USER_SEX)){
                foreach($USER_SEX AS $k=>$v){
                        echo "<option value=\"".$k."\"".($k==$dane["user_sex"]?" selected":"")."> ".$v."</option>";
                }
        }
?>
            </select>

Zapomniałeś zamknąć znacznik <option>

0

Rozpoznawanie płci po tym, czy ostatnia litera to 'a' w sumie nie jest złe dla j. polskiego, choć 100% trafności nie ma, np. Zawisza :)

A co do PHP, to jak masz coś w "" to możesz poprawić czytelność składni, bo $zmienne można wciskać bezpośrednio w string:

echo "<option value=\"$k\"" . ($k==$dane["user_sex"]?" selected":"") . ">$v</option>";

Dodatkowo przy XHTML trzeba napisać selected="selected"

0

Troche dziwnie to jest napisane ale jak już to proponuje użyć w select atrybut onchange
np <select onchange="funkcja(this.value)">
Gotowca nie chce mi sie pisać więc musisz sam pokombinować.

0

Dzięki za odpowiedzi i pomoc.
Ja pracuję na czyimś projekcie (oczywiście oficjalnie i za zgodą) i okazało się że ten mechanizm działa tylko troszkę inaczej niż myślałem. Bo to działa jak w formularzu wyświetlają się dane osoby i JS sprawdza imię z pola do imienia. A w tym formularzu co ja sprawdzałem takie dane się nie pokazują tylko na pasku (nad formularzem) kto jest zalogowany.
Więc nie dziwne że to nie działało wtedy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1