Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите сравнить массимы
 
 автор: inkor   (23.05.2009 в 20:05)   письмо автору
 
 

Собственно проблема в следующем:
В БД есть две таблицы 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)); 
 


?>

  Ответить  
 
 автор: nikita2206   (23.05.2009 в 20:17)   письмо автору
 
   для: 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);
}

  Ответить  
 
 автор: Trianon   (23.05.2009 в 20:32)   письмо автору
 
   для: nikita2206   (23.05.2009 в 20:17)
 

не должно.

DELETE  comments 
  FROM comments 
    LEFT JOIN posts ON comments.post = posts.id 
  WHERE posts.id IS NULL 

  Ответить  
 
 автор: nikita2206   (23.05.2009 в 20:39)   письмо автору
 
   для: Trianon   (23.05.2009 в 20:32)
 

еслиб я тоже хорошо знал mysql)

  Ответить  
 
 автор: inkor   (23.05.2009 в 20:36)   письмо автору
 
   для: nikita2206   (23.05.2009 в 20:17)
 

Работает!!! огромное спасибо!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования