PHP/JS - select a sprawdzanie płci klienta

Odpowiedz Nowy wątek
2007-11-13 01:06

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

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

SysRq
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
Administrator

Rejestracja: 17 lat temu

Ostatnio: 29 minut temu

Lokalizacja: Poznań

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

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

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

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

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

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