За последние 24 часа нас посетили 20919 программистов и 1613 роботов. Сейчас ищут 1126 программистов ...

Как связать 2 таблички и вывести цикл? не понимаю :(

Тема в разделе "PHP для новичков", создана пользователем Sofia, 22 июл 2009.

  1. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    прочитала главу, но никак понять не могу, как связать 2 таблички и вывести цикл?
    содержание странички index.php :

    PHP:
    1. <?
    2. include ("bd.php");
    3. ?>
    4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    8. <title>Пользователи</title>
    9. <link href="style.css" rel="stylesheet" type="text/css">
    10. </head>
    11. <body>
    12. <?php
    13. $user = mysql_query("SELECT * FROM users",$db);
    14. $row = mysql_fetch_array($user);
    15. do
    16. {
    17. printf ("%s %s %s<br>",$row["f"],$row["i"],$row["o"], $r);
    18. }
    19. while ($row = mysql_fetch_array($user));
    20. ?>
    21. </body>
    22. </html>
    а вот что в таблице:
    [​IMG]

    надо что-то добавить в таблицу users, но как вывести... надо чтоб:
    пользователь Администратор выводилось. Объясните пожалуйста.
     
  2. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    ну для начала нужно определить в таблице users колонку которая будет отвечать за определение статуса

    к примеру берем Иванова и предположим, что там есть еще одна колонка, назовем ее idgroup в ней стоит 3

    т.е. получаетцО чет типа этого

    Код (Text):
    1.  
    2. id      f          i           о                ...  idgroup
    3. 1      Иванов     Иван   Иванович     ...  3
    а дальше в запросе делаем так

    select * from users,group where idgroup.users = id.group

    или через join'ы
     
  3. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    спасибо, приеду домой, буду пробовать... я примерно так и представляла что должно быть.
     
  4. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    не получилось. Ошибка.
    Содержание БД переделала:
    [​IMG]
    а содержание страницы index.php:
    PHP:
    1. <?
    2. include ("bd.php");
    3. ?>
    4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    8. <title>Пользователи</title>
    9. <link href="style.css" rel="stylesheet" type="text/css">
    10. </head>
    11. <body>
    12. <?php
    13. $user = mysql_query("SELECT * FROM users,group WHERE idgroup.users = id.group",$db);
    14. $row = mysql_fetch_array($user);
    15. do
    16. {
    17. printf ("%s %s %s<br>",$row["f"],$row["i"],$row["o"], $r);
    18. }
    19. while ($row = mysql_fetch_array($user));
    20. ?>
    21. </body>
    22. </html>
    пишет только 2 ошибки:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in W:\home\*\www\index.php on line 14


    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in W:\home\*\www\index.php on line 19
     
  5. LuckyScrat

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

    С нами с:
    16 июн 2009
    Сообщения:
    176
    Симпатии:
    0
    Адрес:
    Москва
    [sql]SELECT * FROM users,group WHERE users.idgroup = group.id[/sql]
    формат название_таблицы.название_столбца, у вас наоборот.
     
  6. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    LuckyScrat мм.. спасибо :) вечером дома попробую.
     
  7. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    LuckyScrat
    ой, ты прав, протупил...))

    Sofia

    сор
     
  8. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    LuckyScrat
    та-же самая ошибка...
    PHP:
    1. <?php
    2.  $user = mysql_query("SELECT * FROM users,group WHERE users.idgroup = group.id",$db);
    3.  $row = mysql_fetch_array($user);
    4.  do
    5.  {
    6.  printf ("%s %s %s<br>",$row["f"],$row["i"],$row["o"], $r);
    7.  }
    8.  while ($row = mysql_fetch_array($user));
    9.  ?>
    выборка не верная... :(
     
  9. LuckyScrat

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

    С нами с:
    16 июн 2009
    Сообщения:
    176
    Симпатии:
    0
    Адрес:
    Москва
    echo mysql_error(); после mysql_query сделайте
     
  10. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    PHP:
    1. <?php
    2.    $user = mysql_query("SELECT `users`.`f`, `users`.`i`, `users`.`o`, `group`.`status` FROM `users` JOIN `group` ON `users`.`idgroup`=`group`.`id`",$db)
    3.         or die("Error: " . mysql_error());
    4.    while ($row = mysql_fetch_array($user))
    5.    {
    6. ?>
    7.    F: <?php echo $row['f']?>, I: <?php echo $row['i']?>, O: <?php echo $row['o']?>, Group: <?php echo $row['status']?><br />
    8. <?php
    9.    }
    10.    ?>
    Сходу ошибки в пред.варианте. 1. Поле id есть в обеих таблицах, при "select *" непонятно, что выбирать. 2. Имя таблицы Group совпадает с зарезервированным словом, надо брать в ``.
     
  11. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    и еще
    я бы посоветовал поменять книгу, в которой написано
    на другую.
     
  12. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    а че он вернул то...?
     
  13. Sofia

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

    С нами с:
    25 сен 2008
    Сообщения:
    967
    Симпатии:
    2
    так и не разобралась как связывать 2 таблицы... а теперь очень понадобилось, только теперь привязать аж 3 таблицы.
    [​IMG]

    Вот надо чтоб после авторизации пользователя test вывелась информация из таблица contragent что это Транслайн и вывелся цикл из таблицы bulletin contractor все по транслайну. Голову уже сломала.. объясните плз как же это работает?