2009-12-06 3 views
-3

Прежде всего позвольте мне объяснить, что у меня есть этот скрипт, который должен позволить пользователям вводить несколько тегов, разделенных запятой, например, html, css, php, mysql и хранить каждый тег в базе данных и связывать его с тем, что он был помечен также.PHP/MySQL - Неверные сохраненные данные при отправке пользователями?

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

Надеюсь, я правильно это объяснил?

Может кто-нибудь, пожалуйста, дайте мне пару примеров того, что мне нужно изменить в моем скрипте, чтобы исправить эту проблему?

Вот что происходит ниже.

Таблица: 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); 
} 
?> 
+6

Это третий вопрос, который вы спросите с почти аналогичным кодом. Почему бы вам не начать изучать PHP и MySQL _before_, вы пытаетесь клонировать stackoverflow? – halfdan

+0

Если ваш ответ неэффективен, держите его в себе и не являетесь клоном стека. – MyHeadHurts

+1

Он прав ... Я видел несколько одинаковых вопросов здесь. Конечно, он не очень тактичен, но вы должны понимать, что Stack Overflow не собирается программировать ваш сайт для вас. –

ответ

0

Лучше всего это:

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

voila!

0

попробовать

INSERT INTO questions_tags (tag_id, users_questions_id) VALUES ($id, $page) 
Смежные вопросы