ВСТАВЬТЕ новую книгу в t1 и включите существующего автора из T2 в эту книгу - PullRequest
0 голосов
/ 12 ноября 2018

Я студент, и я только что начал путешествие с php и mysql. Если есть какие-либо ошибки в отношении этого поста, мои извинения.
Я часами пытался сделать это сам ... чувствую себя глупым. Извините, я не нашел другого вопроса, который мог бы решить эту проблему. Пожалуйста, как мне заставить это работать?

У меня есть 2 таблицы с идентификаторами auto_increment:

Таблица 1

bookid | bookTitle | authorid

1 | book1 | 1

Таблица 2

authorid | authorname| bookid

1 | author1 | 1

У меня есть форма с входными значениями для книги и входными значениями для автора, как я могу ВСТАВИТЬ эту новую книгу и получить информацию о существующем авторе? найдите ниже некоторые фрагменты моего кода, это не весь код, я думаю, что мне просто не хватает логического запроса, чтобы найти имя автора в таблице 2 и вставить книгу вместе с ним. Я хотел бы включить в эту книгу существующего автора из t2.

// dbFunction file

function addBook($booktitle, $name)
$sql = "INSERT INTO book(bookTitle)  VALUES (:booktitle)";

$sql = "INSERT INTO author(Name)  VALUES (:name)


// controller

require ("dbFunctions.php");

if($_POST['action_type'] == 'add'){
  $query = $conn->prepare( "SELECT authorname FROM author WHERE authorname = :name");

  $query->bindvalue(":name", $name);
  $query->execute();

  if( $query->rowCount() > 1 ) {

    $querySuccess = addBook($booktitle, $authorname) // calling function

if ($ query-> rowCount ()> 1, он будет вставлять книгу и информацию об авторе, даже если она существует, он будет дублировать авторов и идентификаторы.

если ($ query-> rowCount () <1, он вставит книгу и автора. </p>

Спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

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

  • Ваша таблица книг и таблица авторов связаны друг с другом.Вы хотите, чтобы только один связывался с другим.Поскольку у книги всегда есть автор, вам нужно дать книге идентификатор автора, но у автора (почти всегда) больше книг.Поскольку вы можете сохранить только одно значение для каждого столбца, вы должны удалить book id от автора.Если вы когда-нибудь окажетесь в ситуации, когда в обеих таблицах может быть больше одного (вы будете), вам нужно будет установить отношение many-to-many .
  • Если вы хотите, чтобы люди «выбирали» автора, вы не должны заставлять их вводить имя (если вы не используете вызовы jquery ajax, но я бы не рекомендовал их, если вы только начали все это).Я бы порекомендовал использовать php для создания выпадающего списка со всеми авторами, если их много, вы также можете посмотреть datalists .(Имейте в виду, что списки данных могут быть отправлены без фактического выбора элемента из списка, поэтому вам нужно проверить, существует ли то, что они выбрали в качестве actallu)
  • Наконец, вам не нужно добавлять другого автора каждый раз, когда выдобавить книгу.Потому что вы можете связать эту книгу с автором, используя ее идентификатор.

Поэтому я рекомендую вам выполнить следующие шаги:

  1. Восстановить поле ввода автора в HTML поле выбора или список данных
  2. Проверка, существует ли выбранный автор (Проверка, не привел ли запрос к одной строке)
    (SELECT * FROM authors WHERE id = :id) Используйте идентификаторы в качестве значений в списке данных или оператор выбора
  3. Добавить книгу с помощьювыбранный идентификатор от найденного автора
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...