PHP/JS - select a sprawdzanie płci klienta

Odpowiedz Nowy wątek
2007-11-13 01:06
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

Pozostało 580 znaków

2007-11-13 12:48
SysRq
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>

Pozostało 580 znaków

2007-11-13 13:34
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"


Pozostało 580 znaków

2007-11-15 09:39
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ć.

Pozostało 580 znaków

2007-11-16 07:54
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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