Получать данные MySQL с помощью переключателей и соединяющихся таблиц

Мои таблицы:

Название таблицы 1: Филмер
Поля: id (первичный ключ, AI), звание, директор, год, catid

Название таблицы 2: кошка
Поля: catid (первичный ключ, AI), категория

Добавление фильмов в базу данных прекрасно работает с формой отправки, но я хочу иметь возможность добавить категорию с помощью переключателей, вот где проблема в том, что я не знаю, что мне нужно делать, и я попытался объединить таблицы с отношением между Catid, но это не будет работать, и я только получаю

Нет результатов для отображения!

После добавления фильма я могу просматривать фильмы в базе данных, но не в браузере, и все они получают значение 0 в первой таблице, а во второй таблице 6 категорий со значением 1-6 в формате catid.

Я новичок в этом, поэтому я был бы очень признателен за любую помощь!

Вот моя HTML-форма и радио-кнопки

  <form action="movies.php" method="post">
<input type="radio" name="id" value="1" checked />Action<br>
<br> <input type="radio" name="id" value="2" />Comedy<br>
<br> <input type="radio" name="id" value="3" />Drama<br>
<br> <input type="radio" name="id" value="4" />Horror<br>
<br> <input type="radio" name="id" value="5" />Romantic<br>
<br> <input type="radio" name="id" value="6" />Animated<br><br>

<pre>
Title<input type="text" name="titel">
Director<input type="text" name="director">
Year <input type="text" name="year">
<input type="submit" name="submit" value="Submit" />
</pre>
</form>

И вот мой PHP-файл для добавления фильмов в базу данных.

//Post data
if (isset($_POST['submit'])){

$title = htmlentities($_POST['titel'], ENT_QUOTES);
$director = htmlentities($_POST['director'], ENT_QUOTES);
$year = htmlentities($_POST['year'], ENT_QUOTES);// empty form = error
if ($title == '' || $director == '' || $year == ''){

$error = 'ERROR: Please fill in all required fields!';
echo $error;

} else {

//inserts movie to database
if ($stmt = $mysqlic->prepare("INSERT INTO filmer
(titel, director, year) VALUES (?, ?, ?)")){

$stmt->bind_param("ssi", $title, $director, $year);
$stmt->execute();
$stmt->close();// show an error if the query has an error
} else {

echo "ERROR: Could not prepare SQL statement.";
}

// redirec the user
header("Location: view.php");
}

}

И вот файл PHP, который показывает фильмы из базы данных

// get movies from the database
if ($result = $mysqlic->query("SELECT cat.catid FROM cat
INNER JOIN filmer ON cat.catid=filmer.catid")){

// display records if there are records to display
if ($result->num_rows > 0){// display records in a table
echo "<table border='1' cellpadding='10'>";

// set table headers
echo "<tr><th>Title</th>
<th>Director</th>
<th>Year</th>
<th>Category</th>";

while ($row = $result->fetch_object()){// set up a row for each record
echo "<tr>";
echo "<td>" . $row->titel . "</td>";
echo "<td>" . $row->director . "</td>";
echo "<td>" . $row->year . "</td>";
echo "<td>" . $row->Category . "</td>";
echo "</tr>";
}

echo "</table>";

// if there are no records in the database, display an alert message
} else {

echo "No results to display!";
}

// show an error if there is an issue with the database query
} else {

echo "Error: " . $mysqlic->error;
}

// close database connection
$mysqlic->close();

0

Решение

При добавлении нового фильма на свой стол вы не указываете его категория.
Кто угадает, какая категория вам нужна?
Таким образом, вы должны уточнить это с помощью этого запроса:

INSERT INTO filmer (titel, director, year, catid) VALUES (?, ?, ?, ?)

Я добавил имя поля catid как описано в вашем вопросе и дополнительно ?
Далее вы должны получить идентификатор категории. Это можно сделать следующим образом:

$cat_id = intval($_POST['id']);

После этого вы привязываете параметры:

 $stmt->bind_param("ssii", $title, $director, $year, $cat_id);
0

Другие решения

Если я правильно понял, вы хотите опубликовать идентификатор кошки вместе с другими полями. Я добавил имя идентификатора кота, чтобы он попадал в $ _POST. Затем поместите его в запрос вставки.

//Post data
if (isset($_POST['submit'])){

$title = htmlentities($_POST['titel'], ENT_QUOTES);
$director = htmlentities($_POST['director'], ENT_QUOTES);
$year = htmlentities($_POST['year'], ENT_QUOTES);
$catid= htmlentities($_POST['id'], ENT_QUOTES); //gets the catid// empty form = error
if ($title == '' || $director == '' || $year == ''){

$error = 'ERROR: Please fill in all required fields!';
echo $error;

} else {

//inserts movie to database
if ($stmt = $mysqlic->prepare("INSERT INTO filmer
(titel, director, year. catid) VALUES (?, ?, ?, ?)")){

$stmt->bind_param("ssi", $title, $director, $year, $catid);
$stmt->execute();
$stmt->close();// show an error if the query has an error
} else {

echo "ERROR: Could not prepare SQL statement.";
}

// redirec the user
header("Location: view.php");
}

}

0

По вопросам рекламы [email protected]