PHP / MySQL - Неправильно сохраненные данные при отправке пользователями? - PullRequest
0 голосов
/ 06 декабря 2009

Сначала позвольте мне объяснить, что у меня есть этот сценарий, который должен позволять пользователям вводить несколько тегов, разделенных запятой, например, 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);
}
?> 

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

1001 * попробовать *

INSERT INTO questions_tags (tag_id, users_questions_id) VALUES ($id, $page)
0 голосов
/ 07 декабря 2009

Ваш лучший выбор:

  1. войти в PHPMyAdmin на вашем сервере MySQL
  2. добавить запись в столбец questions_tags вручную
  3. скопируйте и вставьте MySQL-запрос, созданный PHPMyAdmin в ваш php-скрипт

вуаля!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...