За последние 24 часа нас посетили 17158 программистов и 1298 роботов. Сейчас ищут 1518 программистов ...

Авторизация и выборка данных из 2-х баз

Тема в разделе "PHP и базы данных", создана пользователем starter, 27 сен 2006.

  1. starter

    starter Активный пользователь

    С нами с:
    27 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    Респект всем!такая проблема: есть 2 БД MySQL db1, db2
    в db1 осущ-ся регистрация и авторизация юзера :
    table_user:(id,name,login..)
    table_user_detal(id,user_id,code...).Приче user.id= user_detal.id_user.
    По 2-й базе осуществляется выборка всех данных по данному юзеру,т.е. есть таблица chel(id,code....),причем db1.user_detal.code = db2.chel.code.
    Как сделать так,чтобы после авторизации юзер мог просматривать данные только по себе?Делаю..
    $query = "SELECT a.code"
    . "\n FROM #__user_detal AS a"
    ."\n LEFT JOIN #__users AS b ON b.id = a.user_id";
    $database->setQuery( $query);
    $code = htmlspecialchars($database->loadResult());...
    $link = mysql_connect(...)or die ("....");
    $sel = mysql_select_db("db", $link)or die ("...."); {
    $where =" chel.code LIKE '%".$code."%' ;
    $mainsql = "SELECT ....
    и выборка все равно валит по всем?помогите плиз
     
  2. Anonymous

    Anonymous Guest

    Задайте вопрос корректно, пожауйста. Ничего не понятно - одни сокращения.
     
  3. starter

    starter Активный пользователь

    С нами с:
    27 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    Сейчас.Мне нужно соединить 2 БД таким образом,чтобы из одной бралось id авторизации юзера,а во второй по этому id выбирались все данные по этому пользователю.Но дело в том,что после авторизации юзер не должен иметь возможности просматривать данные ничьи кроме себя.
    db1.user_detal.code = db2.chel.code.-таким образом связаны 2 БД.Я выбираю юзера:
    $query = "SELECT a.code"
    . "\n FROM #__user_detal AS a"
    ."\n LEFT JOIN #__users AS b ON b.id = a.user_id";
    $database->setQuery( $query);
    $code = htmlspecialchars($database->loadResult()); это к 1-й базе
    затем делаю запрос ко второй:
    $link = mysql_connect("host","root","")or die ("нет доступа");
    $sel = mysql_select_db("db2", $link)or die ("нет доступа"); {
    $where =" chel.code LIKE '%".$code."%' ;
    $mainsql = "SELECT chel.description"
    ."\n WHERE ".$where ;и у меня данные выходят не по конкретному пользователю,который авторизовался,а в лучшем случае-по всем.
    Помогите,плиз.Очень надо(((
     
  4. Anonymous

    Anonymous Guest

    Приведите структуру таблиц, типы полей, приведите запросы БЕЗ PHP конструкций.
     
  5. starter

    starter Активный пользователь

    С нами с:
    27 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    CREATE TABLE `jos_users` (
    `id` int(11) NOT NULL auto_increment,
    `name` varchar(50) NOT NULL default '',
    `username` varchar(25) NOT NULL default '',
    `email` varchar(100) NOT NULL default '',
    `password` varchar(100) NOT NULL default '',
    `usertype` varchar(25) NOT NULL default '',
    `sid` int(11) NOT NULL default '0',
    `telefone` varchar(250) default NULL,
    PRIMARY KEY (`id`),
    KEY `usertype` (`usertype`),
    KEY `idx_name` (`name`)
    ) TYPE=MyISAM AUTO_INCREMENT=71 ;стандартная таблица авторизации
    CREATE TABLE `jos_comprofiler` (
    `id` int(11) NOT NULL default '0',
    `user_id` int(11) NOT NULL default '0',
    `firstname` varchar(100) default NULL,
    `middlename` varchar(100) default NULL,
    `lastname` varchar(100) default NULL,
    `cb_idcompani` varchar(30) default NULL,
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM;-это расширенная


    а во 2-й БД CREATE TABLE `contragent` (
    `CODE` varchar(30) NOT NULL default '',
    `COMMENT` varchar(50) default '',
    `CONTACTS` varchar(50) default '',
    `CUSTOMER` tinyint(4) default '0',
    `DESCRIPTION` varchar(50) default '',
    `ID` int(11) NOT NULL default '0',
    `PHONES` varchar(50) default '',
    PRIMARY KEY (`ID`),
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
    SELECT a.cb_idcompani"
    . "\n FROM #__comprofiler AS a"
    ."\n LEFT JOIN #__users AS b ON b.id = a.user_id";
    этим запросом я ищу юзера,который сейчас авторизовался.
    потом я подвключаюсь ко 2-й БД:
    $link = mysql_connect("host", "root" ,"") or die ("нет доступа");
    $sel = mysql_select_db("rest", $link)or die ("нет доступа");
    SQL запрос:

    SELECT t1.ID, t1.QUALITYACT_NUM ,t1.ID_SENDER , t1.RESUME , t2.CODE, t3.CODE, t3.DESCRIPTION , t5.LOT_SCRAP, t5.COMMENT , t6.code, t6.doc_num,t10.DESCRIPTION , t11.CODE, t11.DESCRIPTION,
    FROM qualityact AS t1
    LEF JOIN qualityactitem AS t8 ON t8.id_qualityact = t1.id,
    LEFT JOIN item AS t3 ON t3.ID = t8.id_item ,
    LEFT JOIN qualitydefects AS t5 ON t5.ID_QUALITYACTITEM = t8.id,
    LEFT JOIN defectclass AS t11 ON t11.ID t5.ID_DEFECTCLASS,
    LEFT JOIN defects AS t10 ON t10.ID = t5.ID_DEFECTS,
    LEFT JOIN qualityact_decision AS t7 ON t7.ID =t1.ID_QUALITYACT_DECISION ,
    LEFT JOIN contragent AS t2 ON t2.ID = t1.ID_SENDER(where t2.code = cb_idcontragent),
    LEFT JOIN doc AS t6 ON t6.id = t1.id
    не исключены огрехи синтаксиса.
    Вот надо,чтобы этот запрос выбирал все данные только по тому юзеру который авторизовался и нажимает кнопочку -поиск
     
  6. Anonymous

    Anonymous Guest

    А он тут сколько пользователей находит?
     
  7. starter

    starter Активный пользователь

    С нами с:
    27 сен 2006
    Сообщения:
    4
    Симпатии:
    0
    SELECT a.cb_idcompani FROM #__comprofiler AS a LEFT JOIN #__users AS b ON b.id = a.user_id (where b.id =$my->id) тоже не помогает((