|
|
|
| Собственно проблема в следующем:
В БД есть две таблицы 1я - статьи, 2я - комментарии.
В таблице комментариев поле post = id статьи (привязка комментов к статье)
Статьи (старые) удаляются сами собой при достижении определенного количества.
нужен скрипт, который бы вытаскивал из базы массив значенй post и сравнивал с массивом значений id статей.
если в массиве id есть значение post - то все хорошо, а если нет, то удалить этот комментарий.
наваял следующее, но почему-то не работает
<?php $db = mysql_connect ("localhost","blog","admin");
mysql_select_db ("blog",$db);
// комментарии
$result_del2 = mysql_query ("SELECT post FROM comments",$db);
$myrow_del2 = mysql_fetch_array ($result_del2);
$post = $myrow_del2['post'] ;
// посты
$result_del = mysql_query ("SELECT id FROM data",$db);
$myrow_del = mysql_fetch_array ($result_del);
$id = $myrow_del['id'];
do
{
$result = array_diff ($myrow_del2, $myrow_del);
print_r ($result); //должен выводить различия, потом изменю на удаление из базы
echo "<br>";
}
while ($myrow_del2 = mysql_fetch_array ($result_del2));
?>
|
| |
|
|
|
|
|
|
|
для: inkor
(23.05.2009 в 20:05)
| | поидее должно работать:
<?php
$result = mysql_query('SELECT * FROM `comments`');
while($row = mysql_fetch_array($result)){
$res = mysql_query('SELECT * FROM `data` WHERE `id`='.$row['post']);
if(!mysql_num_rows($res)) echo "Здесь делаем запрос для удаления комментариев с `post`=$row[post]<br />";
mysql_free_result($res);
}
|
| |
|
|
|
|
|
|
|
для: nikita2206
(23.05.2009 в 20:17)
| | не должно.
DELETE comments
FROM comments
LEFT JOIN posts ON comments.post = posts.id
WHERE posts.id IS NULL
|
| |
|
|
|
|
|
|
|
для: Trianon
(23.05.2009 в 20:32)
| | еслиб я тоже хорошо знал mysql) | |
|
|
|
|
|
|
|
для: nikita2206
(23.05.2009 в 20:17)
| | Работает!!! огромное спасибо!!! | |
|
|
|