• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

steop4k

Создатель
Регистрация
18 Сен 2009
Сообщения
34
Реакции
3
Всем привет!
Если не секрет, как можно удалить повторные новость на ДЛЕ?
Поиск юзал но не нашел ничего внятного, может плохо искал.
Думаю тема многих интересует.
 
Для удаления по одинаковым заголовкам я использовал скрипт.
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);
?>

Пробуй.
 
Спасибо протестирую на локал хосте посмотрим как работает
 
  • Заблокирован
  • #4
Для удаления по одинаковым заголовкам я использовал скрипт.
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);
?>
Пробуй.



Да не работает...... этот....
 
Для удаления по одинаковым заголовкам я использовал скрипт.
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);
?>
Пробуй.
Хм...попробовал скрипт, вроде работает. Только есть одна непонятка: сам скрипт написал в конце работы, что удалил 136 дубликатов, а по админке DLE видно, что новостей около 3000 исчезло. Вот и пойми теперь чего он там наудалял :(
 
О, а я давно себе голову ломал, чем бы почистить архивы варезников, а тут такое простое решение. Просто отлично.
Вопрос. А вот под Joomla можно его подстроить? Там префиксы поменять и т.д. Вообще возможно такое в принципе?
 
у меня заработала на ура, удалила 1400 дублей
 
а кто его может подкорректировать чтоб он считывал данные из конфигов дле?
ужасно лень для каждого сайта прописывать руками базу/юзера/пароль
а так кинул в корень, поставил на крон и отдыхай
 
ХЗ, вроде должен работать:
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_connect( DBHOST, DBUSER, DBPASS )
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 == 0 )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_one, 0) === '0') return true;
	else return false;
	}
?>

Легко можно к грабберу прикрутить.
 
такой исключительно для варезников подойдет. Хорошо бы придумали, что бы контент проверял. Только что бы не один в один, а так сказать на похожесть и предлагал просмотреть или удалить
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху