Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запросы к нескольким таблицам

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вывести данные, основываясь на 2 таблицах
supernick
Отправлено: 30 Июля, 2014 - 15:22:11
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Здравствуйте. Есть такой вопрос. У меня существуют две таблицы с данными: первая таблица предназначена для заказов и состоит из разных полей, но нужными являются только поля с id пользователя и id книги. Вторая таблица содержит информацию о самих книгах, в числе полей которой, разумеется, есть и id книги. Мне необходимо вывести книги, заказанные конкретным пользователем. Сделать я это хочу путем вытягивания всех заказов с id данного пользователя и основываясь на id книги выводить информацию по ней уже из таблицы с к книгами. При таком запросе мне, конечно, выводится только первая встречающаяся книга пользователе в таблице заказов:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result2 = mysql_query ("SELECT * FROM vid WHERE user = '$id_user'",$link) or die(mysql_error());
  3.                 $myrow2 = mysql_fetch_array($result2) or die(mysql_error());
  4.                 $book = $myrow2['book'];
  5.                 $result = mysql_query ("SELECT id,author,name,genre,izdatel,date FROM books WHERE id = '$book'",$link) or die(mysql_error());
  6.                 $myrow = mysql_fetch_array($result) or die(mysql_error());
  7.  

Как мне нужно модифицировать цикл или сам запрос, чтобы выводить все книги, встречающиеся в таблице заказов? Вывожу обычным
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 15:40:44
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




честно говоря непонятно Вы какие-то куски кода показали, к тому то что хотите получить по все видимости малоотносящиеся, покажите весь код с запросом и обработкой его
 
 Top
supernick
Отправлено: 30 Июля, 2014 - 16:11:47
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP include_once("db.php"); ?>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7. <title>Мои книги</title>
  8. <link href="style.css" rel="stylesheet" type="text/css">
  9. </head>
  10.  
  11. <body>
  12. <?PHP
  13.                 $result2 = mysql_query ("SELECT * FROM vid WHERE user = '$id_user'",$link) or die(mysql_error());
  14.                 $myrow2 = mysql_fetch_array($result2) or die(mysql_error());
  15.                 $book = $myrow2['book'];
  16.                 $result = mysql_query ("SELECT id,author,name,genre,izdatel,date FROM books WHERE id = '$book'",$link) or die(mysql_error());
  17.                 $myrow = mysql_fetch_array($result) or die(mysql_error());
  18.                
  19.                 echo '<table id="view_table">';
  20.                 echo '<thead>';
  21.                 echo '<tr id="zagolovok">';
  22.                 echo '<th>Автор</th>';
  23.                 echo '<th>Книга</th>';
  24.                 echo '<th>Жанр</th>';
  25.                 echo '<th>Издатель</th>';
  26.                 echo '<th>Дата издания</th>';
  27.                 echo '<th>&nbsp;</th>';
  28.                 echo '</tr>';
  29.                 echo '</thead>';
  30.                 echo '<tbody>';
  31.                 $i=0;
  32.                 do
  33.                 {
  34.                         $i++;
  35.                         if ($i % 2 == 1)
  36.                         {
  37.                         echo '<tr id="stroka1">';
  38.                         echo '<td>' . $myrow['author'] . '</td>';
  39.                         echo '<td>' . $myrow['name'] . '</td>';
  40.                         echo '<td>' . $myrow['genre'] . '</td>';
  41.                                 echo '<td>' . $myrow['izdatel'] . '</td>';
  42.                                 echo '<td>' . $myrow['date'] . '</td>';
  43.                                 printf('<td> <a href="del.php?id=%s">Удалить</a>',$myrow['id'],'</td>');
  44.                         echo '</tr>';
  45.                         }
  46.                         else
  47.                         {
  48.                                 echo '<tr id="stroka2">';
  49.                         echo '<td>' . $myrow['author'] . '</td>';
  50.                         echo '<td>' . $myrow['name'] . '</td>';
  51.                         echo '<td>' . $myrow['genre'] . '</td>';
  52.                                 echo '<td>' . $myrow['izdatel'] . '</td>';
  53.                                 echo '<td>' . $myrow['date'] . '</td>';
  54.                                 printf('<td> <a href="del.php?id=%s">Удалить</a>',$myrow['id'],'</td>');
  55.                         echo '</tr>';
  56.                         }
  57.                  }
  58.         while($myrow = mysql_fetch_array($result));
  59.         echo '</tbody>';
  60.                 echo '</table>';
  61.  
  62.  
  63.         ?>
  64.     <form action="view_search.php" method="post" name="poisk">
  65.         <input name="search" type="text" size="30">
  66.         <input name="submit_search" type="submit" value="Искать">
  67.     </form>
  68. </body>
  69. </html>
  70.  
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 16:19:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




PHP:
скопировать код в буфер обмена
  1. $result = mysql_query ("SELECT id,author,name,genre,izdatel,date FROM books WHERE id = '$book'",$link) or die(mysql_error());

и что же Вы в этом запросе пытаетесь получить? что у Вас в поле id находится?
 
 Top
esterio
Отправлено: 30 Июля, 2014 - 16:19:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




supernick пишет:
do {}while($myrow = mysql_fetch_array($result));

И здесь товарищ Жопов
http://forum.php.su/topic.php?fo...33&topic=793
почитайте здесь
 
 Top
supernick
Отправлено: 30 Июля, 2014 - 16:34:08
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Tyoma5891 пишет:
и что же Вы в этом запросе пытаетесь получить? что у Вас в поле id находится?

id книги там находится. Мне нужно вытащить данные по определенным книгам из таблицы с книгами. А запрос должен основываться на id пользователя, который хранится в сессии и id книги из таблицы с заказами. В моем запросе выводится только первая книга, если их несколько. А я хочу вытащить их все.
(Добавление)
esterio пишет:
И здесь товарищ Жопов
Культурного человека сразу видно. И автор статьи не отстает. Но за замечание, спасибо. Хочу научиться писать код максимально эффективно, так что приму к сведению.
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 17:05:53
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




supernick пишет:
Tyoma5891 пишет:
и что же Вы в этом запросе пытаетесь получить? что у Вас в поле id находится?

id книги там находится. Мне нужно вытащить данные по определенным книгам из таблицы с книгами. А запрос должен основываться на id пользователя, который хранится в сессии и id книги из таблицы с заказами. В моем запросе выводится только первая книга, если их несколько. А я хочу вытащить их все.

теперь я что-то вообще ничего не пойму в поле id таблицы books число как я понял тоесть айди книги, здесь вы получаете название этой книги относительно пользователя:
PHP:
скопировать код в буфер обмена
  1.  $result2 = mysql_query ("SELECT * FROM vid WHERE user = '$id_user'",$link) or die(mysql_error());
  2.                 $myrow2 = mysql_fetch_array($result2) or die(mysql_error());
  3.                 $book = $myrow2['book'];

и что получается в этом запросе:
PHP:
скопировать код в буфер обмена
  1.  $result = mysql_query ("SELECT id,author,name,genre,izdatel,date FROM books WHERE id = '$book'",$link) or die(mysql_error());

вы хотите что мускуль Вам вернул результат где в числовое поле айди Вы подставляете название книги, странно что вообще выдается результат в таком случае)
 
 Top
supernick
Отправлено: 30 Июля, 2014 - 17:13:24
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Все верно. Я хочу вытянуть заказы относительно пользователя из таблицы vid и при выводе заменить id книги на данные об этой книге из таблицы books. Код работает, но выдача ограничивается первой попавшейся книгой из таблицы заказов. А мне нужно, чтобы выводились все заказанные книги.
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 17:40:02
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




supernick пишет:
Все верно. Я хочу вытянуть заказы относительно пользователя из таблицы vid и при выводе заменить id книги на данные об этой книге из таблицы books. Код работает, но выдача ограничивается первой попавшейся книгой из таблицы заказов. А мне нужно, чтобы выводились все заказанные книги.

а зачем Вы разделяете на четные и нечетное записи к тому же ещё и неправильно это условие if ($i % 2 == 1) будет работать только для $i = 5 и все)) все остальное попадет в елсе, а если у Вас там только до 2 записей то выведется всего лишь одно все правильно)

(Отредактировано автором: 30 Июля, 2014 - 17:42:04)

 
 Top
supernick
Отправлено: 30 Июля, 2014 - 17:48:05
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Tyoma5891 пишет:
а зачем Вы разделяете на четные и нечетное записи к тому же ещё и неправильно это условие if ($i % 2 == 1) будет работать только для $i = 5 и все)) все остальное попадет в елсе, а если у Вас там только до 4 записей то выведется всего лишь одно все правильно)

Я делю из затем, чтобы раскрасить записи таблички, которая получается во время вывода, в разные цвета, для более удобного чтения. У меня в таблице 12 элементов и условие прекрасно работает.
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 17:50:23
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




извините, я Вам не смогу ничем помочь...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB