Сначала позвольте мне объяснить, что у меня есть этот сценарий, который должен позволять пользователям вводить несколько тегов, разделенных запятой, например, html, css, php, mysql
, и сохранять каждый тег в базе данных и связывать его с вопросом, для которого он был тоже тегирован.
Но по какой-то причине теги не привязаны правильно к таблице questions_tags
, чтобы дать вам лучшее объяснение того, о чем я говорю и чего я хочу достичь, пожалуйста, посмотрите нижеприведенную схему таблиц ниже?
Надеюсь, я все правильно объяснил?
Может кто-нибудь дать мне пару примеров того, что мне нужно изменить в моем скрипте, чтобы решить эту проблему?
Вот что происходит ниже.
Таблица: метки вопросов
id tag_id users_questions_id
1 1 3
Таблица: теги
id tag
1 html
2 css
3 php
4 mysql
Вот что я хочу, чтобы произошло ниже.
Таблица: questions_tags
id tag_id users_questions_id
1 1 3
2 2 3
3 3 3
4 4 3
Таблица: теги
id tag
1 html
2 css
3 php
4 mysql
Вот мои таблицы MySQL ниже.
CREATE TABLE questions_tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag_id INT UNSIGNED NOT NULL,
users_questions_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Вот мой сценарий ниже.
<?php
require_once ('./mysqli_connect.php');
if (isset($_POST['submitted'])) {
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT questions_tags.*, tags.* FROM questions_tags, tags");
if (!$dbc) {
print mysqli_error($mysqli);
}
$page = '3';
$tag = mysqli_real_escape_string($mysqli, $_POST['tag']);
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT questions_tags.*, tags.* FROM questions_tags INNER JOIN tags ON tags.id = questions_tags.tag_id WHERE questions_tags.users_questions_id='$page'");
if(mysqli_num_rows($dbc) >= 0){
if (isset($_POST['tag'])){
$tags = explode(",", $_POST['tag']);
for ($x = 0; $x < count($tags); $x++){
$mysqli = new mysqli("localhost", "root", "", "sitename");
$clean_url = mysqli_real_escape_string($mysqli, $page);
$query1 = "INSERT INTO tags (tag) VALUES ('" . $tags[$x] . "')";
if (!mysqli_query($mysqli, $query1)) {
print mysqli_error($mysqli);
return;
}
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT id FROM tags WHERE tag='" . $tags[$x] . "'");
}
}
if (!$dbc) {
print mysqli_error($mysqli);
} else {
while($row = mysqli_fetch_array($dbc)){
$id = $row["id"];
}
}
$query2 = "INSERT INTO questions_tags (tag_id, users_questions_id) VALUES ('$id', '$page')";
if (!mysqli_query($mysqli, $query2)) {
print mysqli_error($mysqli);
return;
}
echo "$tag has been entered";
if (!$dbc) {
print mysqli_error($mysqli);
}
}
mysqli_close($mysqli);
}
?>