из базы необходимо вывести пол искомого партнера (скрипт знакомств)

Статус
В этой теме нельзя размещать новые ответы.

viprus

Постоялец
Регистрация
10 Дек 2006
Сообщения
106
Реакции
59
Привет!

Необходимо вывести пол искомого партнера (скрипт знакомств)
У каждого пользователя он находится в таблице USER_MATCH_TABLE. в поле id_user_type (где значение 1-парень, 2 -девушка)

51360610.png


В свою очередь в таблице USERTYPES_SPR_TABLE имеются поля дающие языковое значение (1-парень, 2-девушка)

70418898.png


Имеется примерно такой запрос

Код:
$strSQL = "select u.fname, u.sname, u.login, u.status, u.email, u.date_birthday, u.couple, u.user_type, u.user_subtype, u.id_country, u.id_city, u.id_region, u.zipcode, u.comment, u.headline, u.id_nationality, u.id_language_1, u.id_language_2, u.id_language_3, u.id_weight, u.id_height, u.root_user, u.guest_user, um.id_user_type, um.id_user_subtypes, um.age_min, um.age_max, um.id_relationship, u.site_language, u.phone
                    from ".USERS_TABLE."  as u
                    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
                    where u.id='".$id."'";
        $rs = $dbconn->Execute($strSQL);
        $row = $rs->GetRowAssoc(false);


как будет выглядеть в итоге весь код чтобы в php пол показывал типа {$data.user_type} ?? Спасибо!!
 
вместо u.user_type
напишите u.id_user_type as user_type
 
спасибо за совет!
..но при замене u.user_type на u.id_user_type as user_type - ошибку дает
 
попробуйте
Код:
select
    u.*,
    um.*,
    ug.name as gender
    from ".USERS_TABLE."  as u
    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.gender
    where u.id='".$id."'";
если переменная $id берётся напрямую из $_GET или $_POST, например, то лучше для неё сделать intval

ну и
Код:
ug.name as gender
можно написать как
Код:
ug.gender as user_type
чтоб добиться {$data.user_type}, только проследите за тем, чтоб поля user_type не было в результате
Код:
u.*
или
um.*
 
ipbfan2008, спасибо, но не пошло че то..

есть аналогичная конструкция и она успешно работает но не для ПОЛА, а для ЦЕЛИ знакомства, и всё отлично выводится {$data.relationship}

Вот кусок который идет следом за тем что я уже давал


Код:
if (strlen($row["id_relationship"])){
        $where_str = ($row["id_relationship"] == "0") ? "" : "where a.id in (".$row["id_relationship"].")";
        $strSQL = "Select  a.id, b.".$field_name." as name from  ".RELATION_SPR_TABLE." a
            left join ".REFERENCE_LANG_TABLE." b on b.id_reference=a.id  and b.table_key='".$multi_lang->TableKey(RELATION_SPR_TABLE)."'
            ".$where_str." order by a.sorter";
        $rs = $dbconn->Execute($strSQL);
        $relations = array();
        if ($rs)
        while(!$rs->EOF){
            $row = $rs->GetRowAssoc(false);
            $relations[] = stripslashes($row["name"]);
            $rs->MoveNext();
 
        }
        $data["relationship"] = implode(", ", $relations);
    }


RELATION_SPR_TABLE

96550904.png


REFERENCE_LANG_TABLE (я так понял обращение в эту таблицу связанно с мультиязычностью)

45193215.png



я делал по аналогии, но ничего не выходит...

Код:
if (strlen($row["id_user_type"])){
        $where_str = ($row["id_user_type"] == "0") ? "" : "where a.id in (".$row["id_user_type"].")";
        $strSQL = "Select  a.id, b.".$field_name." as name from  ".USERTYPES_SPR_TABLE." a
            left join ".REFERENCE_LANG_TABLE." b on b.id_reference=a.id  and b.table_key='".$multi_lang->TableKey(USERTYPES_SPR_TABLE)."'
            ".$where_str." order by a.sorter";
        $rs = $dbconn->Execute($strSQL);
        $id_user_type = array();
        if ($rs)
        while(!$rs->EOF){
            $row = $rs->GetRowAssoc(false);
            $id_user_type[] = stripslashes($row["name"]);
            $rs->MoveNext();
        }
        $data["user_type"] = implode(", ", $id_user_type);
    }
 
ipbfan2008, спасибо, но не пошло че то..

А что именно не пошло? Т.к. ipbfan2008 вам всё правильно написал.
Единственное, из фразы "в таблице USER_MATCH_TABLE. в поле id_user_type (где значение 1-парень, 2 -девушка)" - кажется, что за пол отвечает поле id_user_type, хотя по логике за него должно отвечать поле gender.

Попробуйте такой вариант:


PHP:
$strSQL = "select u.fname, u.sname, u.login, u.status, u.email, u.date_birthday, u.couple, u.user_type as ut, u.user_subtype, u.id_country, u.id_city, u.id_region, u.zipcode, u.comment, u.headline, u.id_nationality, u.id_language_1, u.id_language_2, u.id_language_3, u.id_weight, u.id_height, u.root_user, u.guest_user, um.id_user_type, um.id_user_subtypes, um.age_min, um.age_max, um.id_relationship, u.site_language, u.phone,  ug.name as user_type
                    from ".USERS_TABLE."  as u
                    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
                    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.gender
                    where u.id='".$id."'";
        $rs = $dbconn->Execute($strSQL);
        $row = $rs->GetRowAssoc(false);
 
ShaDeRzz, как я понял, логика следующая (может я плохо объяснил, сорри..).

Пол владельца анкеты берется как раз из gender (USER_MATCH_TABLE). Но эти данные выводить не нужно, там всё ОК.

А вот у владельца анкеты есть предпочтения, т.е. пол кого он ищет, и это берётся из связки id_user_type (USER_MATCH_TABLE) и name (USERTYPES_SPR_TABLE)
 
ShaDeRzz, как я понял, логика следующая (может я плохо объяснил, сорри..).

Пол владельца анкеты берется как раз из gender (USER_MATCH_TABLE). Но эти данные выводить не нужно, там всё ОК.

А вот у владельца анкеты есть предпочтения, т.е. пол кого он ищет, и это берётся из связки id_user_type (USER_MATCH_TABLE) и name (USERTYPES_SPR_TABLE)
в таком случае действительно нужно использовать поле id_user_type вместо gender в моём или ShaDeRzz варианте. Так что, собственно, не так в запросе то?
 
в таком случае действительно нужно использовать поле id_user_type вместо gender в моём или ShaDeRzz варианте. Так что, собственно, не так в запросе то?

Верно я понял, что достаточно этого кода

Код:
$strSQL = "select u.fname, u.sname, u.login, u.status, u.email, u.date_birthday, u.couple, u.user_type as ut, u.user_subtype, u.id_country, u.id_city, u.id_region, u.zipcode, u.comment, u.headline, u.id_nationality, u.id_language_1, u.id_language_2, u.id_language_3, u.id_weight, u.id_height, u.root_user, u.guest_user, um.id_user_type, um.id_user_subtypes, um.age_min, um.age_max, um.id_relationship, u.site_language, u.phone,  ug.name as user_type
                    from ".USERS_TABLE."  as u
                    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
                    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.id_user_type 
                    where u.id='".$id."'";
        $rs = $dbconn->Execute($strSQL);
        $row = $rs->GetRowAssoc(false);

или этого

Код:
select
    u.*,
    um.*,
    ug.name as id_user_type
    from ".USERS_TABLE."  as u
    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.id_user_type
    where u.id='".$id."'";



а в php просто добавить {$data.user_type} ?

или еще что-то надо там дописывать?
(сорри, для меня sql - примерно как китайский язык)
 
Верно я понял, что достаточно этого кода

Код:
$strSQL = "select u.fname, u.sname, u.login, u.status, u.email, u.date_birthday, u.couple, u.user_type as ut, u.user_subtype, u.id_country, u.id_city, u.id_region, u.zipcode, u.comment, u.headline, u.id_nationality, u.id_language_1, u.id_language_2, u.id_language_3, u.id_weight, u.id_height, u.root_user, u.guest_user, um.id_user_type, um.id_user_subtypes, um.age_min, um.age_max, um.id_relationship, u.site_language, u.phone,  ug.name as user_type
                    from ".USERS_TABLE."  as u
                    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
                    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.id_user_type
                    where u.id='".$id."'";
        $rs = $dbconn->Execute($strSQL);
        $row = $rs->GetRowAssoc(false);

или этого

Код:
select
    u.*,
    um.*,
    ug.name as id_user_type
    from ".USERS_TABLE."  as u
    left join ".USER_MATCH_TABLE." as um on um.id_user=u.id
    left join ".USERTYPES_SPR_TABLE." as ug on ug.id=um.id_user_type
    where u.id='".$id."'";



а в php просто добавить {$data.user_type} ?

или еще что-то надо там дописывать?
(сорри, для меня sql - примерно как китайский язык)
не ug.name as id_user_type
а, ug.name as user_type

оба примера одинаковы, с той разницей, что во втором из табличек u и um будут возвращены все возможные поля, а в первом случае только перечисленные
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху