Как убедиться, что предмет, уже извлеченный из mysql, больше не будет извлечен - PullRequest
1 голос
/ 15 декабря 2010

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

Я хочу убедиться, что я не буду использовать одну и ту же историю несколько раз, если она делит более одного тега с другим сообщением.

Так что это в основном

foreach($tags as $t) {

  $getStories = mysql_query("SELECT * FROM `posts` WHERE `tags` LIKE '%$t%' LIMIT 2");

  while($related = mysql_fetch_array($getStories)) {
    echo $related['title'];
  }

Итак, я извлекаю 2 связанных истории на основе первого тега, теперь, когда он проходит через следующий цикл для второго тега, как я могу убедитьсяистория, снятая в последний раз, не выбирается во второй или третий раз.У меня есть уникальный идентификатор, который называется просто «id», но я не уверен, что с ним делать в этой ситуации.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Что вы можете сделать, это получить все связанные статьи сразу:

$tagsClause = '';
foreach ($tags as $t) {
    $tagsClause .= " OR tags LIKE '%$t%'";
}
$tagsClause = substr($tagsClause, 4); // Remove first ' OR '

$getStories = mysql_query('SELECT * FROM `posts` WHERE ' . $tagsClause);
while($related = mysql_fetch_array($getStories)) {
    echo $related['title'];
}

Однако , это не учитывает ваше использование LIMIT.

РЕДАКТИРОВАТЬ
По-видимому, это не представляет проблемы, ср.комментарии.

1 голос
/ 15 декабря 2010

Используйте UNIQUE.

SELECT UNIQUE(post_id), [other stuff] FROM posts WHERE [...]
0 голосов
/ 15 декабря 2010

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

просто так:

$ids = array();
foreach($tags as $t) {
  $getStories = mysql_query("SELECT * FROM `posts` WHERE `tags` = '$t' LIMIT 2");

  //here to check and add id to array ids
  while($related = mysql_fetch_array($getStories)) {
    echo $related['title'];
  }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...