Помощь DLE - удаления дубликатов новостей.

Тема в разделе "DLE", создана пользователем steop4k, 24 апр 2010.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. steop4k

    steop4k Создатель

    Регистр.:
    18 сен 2009
    Сообщения:
    34
    Симпатии:
    3
    Всем привет!
    Если не секрет, как можно удалить повторные новость на ДЛЕ?
    Поиск юзал но не нашел ничего внятного, может плохо искал.
    Думаю тема многих интересует.
     
  2. wmaximum

    wmaximum Постоялец

    Регистр.:
    23 апр 2008
    Сообщения:
    64
    Симпатии:
    5
    Для удаления по одинаковым заголовкам я использовал скрипт.
    PHP:
    <?
    $user='пользователь БД';
    $pass='пароль к БД';
    $base='имя БД';
    $rest=1;

    $tip='title';
    $pole='dle_post';
    $info=0;

    $link mysql_connect("localhost""$user""$pass"
    or die (
    mysql_error());
    mysql_select_db ("$base") or die (mysql_error());

    $sql "SELECT $tip, id FROM $pole";
    $result mysql_query($sql);
    while (
    $r mysql_fetch_assoc($result))
    {
    if(
    $real[$r[$tip]])
    {
    if(
    $rest)
    {
    mysql_query("DELETE FROM $pole WHERE id=$r[id]");
    $info++;
    }
    else
    {
    $info.= $r[$tip]."n";
    }
    }
    else
    {
    $real[$r[$tip]]=$r[id];
    }
    }
    echo 
    "Удалено <b>".$info."</b> дубляжей.<br />";
    if(
    $info == 0)echo "Вы хорошо следите за Вашим сайтом!";
    else echo 
    "Больше внимания уделяйте Вашему сайту. Следите за мусором!";
    mysql_close($link);
    ?>
    Пробуй.
     
    cyberlin, oncat и steop4k нравится это.
  3. steop4k

    steop4k Создатель

    Регистр.:
    18 сен 2009
    Сообщения:
    34
    Симпатии:
    3
    Спасибо протестирую на локал хосте посмотрим как работает
     
  4. kl3vO

    kl3vO Читатель

    Заблокирован
    Регистр.:
    9 апр 2010
    Сообщения:
    41
    Симпатии:
    6


    Да не работает...... этот....
     
  5. mihan

    mihan Постоялец

    Регистр.:
    11 мар 2007
    Сообщения:
    65
    Симпатии:
    20
    Хм...попробовал скрипт, вроде работает. Только есть одна непонятка: сам скрипт написал в конце работы, что удалил 136 дубликатов, а по админке DLE видно, что новостей около 3000 исчезло. Вот и пойми теперь чего он там наудалял :(
     
  6. oncat

    oncat Создатель

    Регистр.:
    7 мар 2009
    Сообщения:
    26
    Симпатии:
    6
    О, а я давно себе голову ломал, чем бы почистить архивы варезников, а тут такое простое решение. Просто отлично.
    Вопрос. А вот под Joomla можно его подстроить? Там префиксы поменять и т.д. Вообще возможно такое в принципе?
     
  7. steop4k

    steop4k Создатель

    Регистр.:
    18 сен 2009
    Сообщения:
    34
    Симпатии:
    3
    у меня заработала на ура, удалила 1400 дублей
     
  8. -=ber$erk=-

    -=ber$erk=-

    Регистр.:
    17 мар 2008
    Сообщения:
    237
    Симпатии:
    105
    а кто его может подкорректировать чтоб он считывал данные из конфигов дле?
    ужасно лень для каждого сайта прописывать руками базу/юзера/пароль
    а так кинул в корень, поставил на крон и отдыхай
     
  9. komyak

    komyak

    Регистр.:
    4 фев 2009
    Сообщения:
    481
    Симпатии:
    182
    ХЗ, вроде должен работать:
    PHP:
    <?php
    define 
    "DATALIFEENGINE"true );
    include( 
    "./engine/classes/mysql.class.php" );
    include( 
    "./engine/data/dbconfig.php" );

    $rest 1;
    $tip 'title';
    $pole PREFIX '_post';
    $info 0;
    $link mysql_connectDBHOSTDBUSERDBPASS )
    or die ( 
    mysql_error() );
    mysql_select_db DBNAME ) or die ( mysql_error() );
    $sql "SELECT $tip, id FROM $pole";
    $result mysql_query$sql );
    while ( 
    $r mysql_fetch_assoc$result ) ) {
        if ( 
    $real[$r[$tip]] ) {
            if ( 
    $rest ) {
                
    mysql_query"DELETE FROM $pole WHERE id=$r[id]);
                
    $info++;
            } else {
                
    $info .= $r[$tip] . "n";
            } 
        } else {
            
    $real[$r[$tip]] = $r[id];
        } 

    echo 
    "Удалено <b>" $info "</b> дубляжей.<br />";
    if ( 
    $info == )echo "Вы хорошо следите за Вашим сайтом!";
    else echo 
    "Больше внимания уделяйте Вашему сайту. Следите за мусором!";
    mysql_close$link );

    ?>
    Добавлено через 2 минуты
    Функция уникальности(да простит меня её автор:(
    PHP:
    <?
    function 
    d_CheckUnique($title)
        {
    //Valar
        
    $checked_one mysql_query("SELECT COUNT(*) FROM `".PREFIX."_post` WHERE `title` = '".mysql_real_escape_string($title)."'");
        if (
    $checked_one === false or mysql_result($checked_one0) === '0') return true;
        else return 
    false;
        }
    ?>
    Легко можно к грабберу прикрутить.
     
  10. NaiZer

    NaiZer Создатель

    Регистр.:
    3 фев 2009
    Сообщения:
    42
    Симпатии:
    28
    такой исключительно для варезников подойдет. Хорошо бы придумали, что бы контент проверял. Только что бы не один в один, а так сказать на похожесть и предлагал просмотреть или удалить
     
Статус темы:
Закрыта.