PHP / MySQL - простая система тегов - обновление ссылок на теги статей? - PullRequest
1 голос
/ 18 мая 2011

Я хочу создать простую систему тегов для своего раздела новостей

Настройка БД (img позаимствовано из предыдущего поста)

DB Setup something like

На моем экране «Редактировать статью» теперь в поле ввода находятся теги, и пользователь может удалять или вводить новые теги. Все хорошо.

Но когда страница отправляется и я получаю этот массив значений тегов, я думаю, что мне нужно проверить каждое из них по таблице 'Tag', чтобы увидеть, существует она или нет.

Есть ли быстрый способ сделать это или как-то можно пройти через tag_id => tag_value? Пока что ни одна из предпочтительных библиотек jQuery не предлагает: один , два

1 Ответ

2 голосов
/ 18 мая 2011

Вы также должны всегда проверять представленные данные на стороне сервера. Если вы используете MYSQL, вы можете попробовать это:

$sql = "SELECT a.* FROM (";
$first = true;
foreach( $submitted_tag_array as $v ) {
    $v = mysql_real_escape_string($v);
    $sql .= $first
        ? "\n\tSELECT '$v' AS tag"
        : "\n\tUNION ALL SELECT '$v'";
    $first = false;
}

$sql .= "\n) AS a"
    ."\nLEFT JOIN [tag] t ON t.tag_id = a.tag"
    ."\nWHERE t.tag_id IS NULL";

$result = mysql_query($sql);

if( $row = mysql_fetch_assoc($result) ) {
    // We found atleast one tag that doesn't exist in the database! Do something about it!
}

Приведенный выше код предполагает, что вы получаете массив tag_id в отправке. Если вместо этого вы получаете имена тегов, вам просто нужно изменить

."\nLEFT JOIN [tag] t ON t.tag_name = a.tag"
...