Создание библиотеки книг

bu_sha

Новичок
Добрый день сенсеи данного языка. Извините за наглость, но мне дали задание на выполнение которого 2 дня. (сегодня последний).

Список книг с возможностью добавления, список жанров с возможностью добавления, список пользователей библиотеки с возможностью добавления, и просмотром истории взятых книг.
В списке книг должно отображаться взята она или нет.

Создал таблицы в mysql
authors (id, name_author)
books (id, name_book, stete )
book_authors (id, book_id, auhor_id)
book_genre (book_id, genre_id)
genre (id, name_genre)
readers (id, name_readers)
reader_bookings (id, reader_id, book_id, dt_begin, dt_end, dt_expired)

Хотелось бы вывести в одной таблице Имя книги, Жанр,автора книги и состояние взята, либо нет, но у меня получаются либо ошибки, либо выводятся данные не соответствующие друг другу, к примеру автор одной книге у меня является автором совсем другой. Буду очень рад помощи, хоть чему то, большое спасибо!
 

DIG

Новичок
Партнер клуба
Ну так показывайте кусок кода где предположительно ошибки. Так то у нас в штате телепаты есть конечно, но вот именно сегодня у них выходной.
 

bu_sha

Новичок
Постеснялся выкладывать, думаю это полный бред что я написал..(

<?php
include_once 'connect.php';

while($row = mysql_fetch_array($result))

$result=mysql_query('SELECT * FROM `books`,`genre`,`authors`' );
echo
'<table class="simple-little-table" cellspacing=`0`>
<tr>
<th>Книга</th>
<th>Жанр</th>
<th>Автор</th>
<th>Состояние</th>
</tr>
';
while($row=mysql_fetch_array($result))
{
echo
'<tr>
<td>'.$row['name_book'].'</td>
<td>'.$row['name_genre'].'</td>
<td>'.$row['name_author'].'</td>

</tr>';
}
echo '</table>';
mysql_close($link);
?>
 

DIG

Новичок
Партнер клуба
И что по вашему этот код должен вывести?
 

Фанат

oncle terrible
Команда форума
Раздели задачу на две части, SQL и РНР.
И больше никогда не делай два дела одновременно.

Сначала займись SQL.
причем эту задачу тоже не решай кучей, а делай от простого к сложному. Не выводи сразу автора и жанры. Добавь сначала к книгам что-то одно.
и потом подумай, как у тебя должны быть связаны таблицы. для чего нужна таблица book_authors . чего не хватает в твоем запросе
 

bu_sha

Новичок
Раздели задачу на две части, SQL и РНР.
И больше никогда не делай два дела одновременно.

Сначала займись SQL.
причем эту задачу тоже не решай кучей, а делай от простого к сложному. Не выводи сразу автора и жанры. Добавь сначала к книгам что-то одно.
и потом подумай, как у тебя должны быть связаны таблицы. для чего нужна таблица book_authors . чего не хватает в твоем запросе
Я почему то был уверен что с sql все в порядке у меня=( т.е. book_authors лишняя?
 

Фанат

oncle terrible
Команда форума
ну так запусти этот запрос в mysql. в консоли, в phpmyadmin. и посмотри что он вернет
Это ПЕРВОЕ что ты вообще должен был сделать по этой задаче после создания таблиц

нет, не лишняя. если у одной книги может быть больше 1 автора
 

Фанат

oncle terrible
Команда форума
да это понятно. можно было не трудиться с картинкой.

Кто тебе таблицы создавал? спроси у него про джойны
 

bu_sha

Новичок
да это понятно. можно было не трудиться с картинкой.

Кто тебе таблицы создавал? спроси у него про джойны
К сожалению такой возможности нет(
Могу ли я таким образом выполнять запрос?

mysql_query('SELECT * FROM book_author,book_genre INNET JOIN authors, genre, books ON book_author.book_id = books.id, book_author.author_id = authors.id, book_genre.book.id = books.id, book_genre.genre_id=genre.id
')
У меня выдал ошибку, таким образом вообще можно выполнять запросы?
 

Фанат

oncle terrible
Команда форума
я тебе напишу запрос для авторов а дальше сам

select * from books b, book_authors ba, authors a WHERE ba.book_id=b.id AND a.id=ba.author_id
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@bu_sha, таким образом как ты - нельзя. Надо постепенно осваивать SQL. Обрати внимание на то, как Фанат написал условие WHERE, где стоят равенства колонок, сколько их и как они соединены.
 

Фанат

oncle terrible
Команда форума
ему некогда осваивать, ему зачет сдавать надо.
структуру таблиц он успел списать, а остальное никак :)
 

bu_sha

Новичок
Дааа, я смог сделать запрос!))

select * from books b, book_authors ba, authors a, genre g, book_genre bg WHERE ba.book_id=b.id AND a.id=ba.author_id
AND g.id = bg.genre_id AND b.id = bg.book_id

Ееее) Спасибо)
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Код:
select *
from books b
join book_authors ba on ba.book_id=b.id
join authors a on a.id=ba.author_id
join genre g on g.id = bg.genre_id
join book_genre bg on b.id = bg.book_id
WHERE  1
тоже самое но читается проще
 

bu_sha

Новичок
Если есть кто не спит, подскажите пожалуйста, могу ли я сделать так, что бы на сайте в раскрывающимся списке я видел данные из таблицы, к примеру список книг которые уже существуют? Никак не могу найти подобные решения в интернете, а самому никак, кипит уже голова, да и если бы не кипела, тоже не смог бы, надеюсь есть совы здесь) заранее спасибо)
 

WMix

герр M:)ller
Партнер клуба
надеюсь есть совы здесь
совы может и есть, телепатов нет
могу ли я сделать
у себя спроси
Никак не могу найти
не понимаешь что искать, разложи задачу на отдельные части и спрашивай по шагам
а самому никак
кроме тебя , всем на***ть на это
 

bu_sha

Новичок
совы может и есть, телепатов нет

у себя спроси

не понимаешь что искать, разложи задачу на отдельные части и спрашивай по шагам

кроме тебя , всем на***ть на это
Я понимаю, что кроме меня это никому не нужно.
Я хочу что бы был раскрывающийся список из данных к примеру books, но данным методом, что я сделал у меня выдает ошибку.
Может так будет нагляднее, если конечно вы это имели в виду
PHP:
<?php
        include_once 'connect.php'
        $result=mysql_query('SELECT * FROM `books` ');
        while($row=mysql_fetch_array($result))
        echo '
          <form method="POST" action="return.php">
            <label>Выберете имя:</label>
            <select name="name"    required >
            <option value="">'.$row['name_book'].'</option>
  
            </select> </br>
  
      


</form>';
    
mysql_close($link);
 
Последнее редактирование модератором:
Сверху