скрипт за намиране на дублирано съдържание

bobbydigital

New member
колеги ето ви един скрипт за намиране дублирано съдържание да дадена таблица от базата. трябва да си попълните данните на таблицата в която искате да търсите. скрипта намира по 1 запис, след което взимате мерки да не се повтаря и го пускате пак. броя на записите се настройва. някой ако има предложения за подобрения съм готов да чуя. някой ако има проблеми мога да помогна 🙂. поздрави

в замяна ако някой желате да даде някой жокер по моя проблем тук : http://www.webmasterbg.org/showthread.php?t=10563 ще съм благодарен

PHP:
<?
/**
 * send data in utf-8 to browser
 */
header('Content-Type: text/html; charset=utf-8');

/**
 * db settings
 */
define('DB_HOST', 'localhost');
define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASS', '');

//name of the table
$table_to_search_name 	= '';

//text field to compare
$field_to_compare_name 	= '';

//main index (id) of the table
$id_field_name			= '';

//num items to compare
$num_items 				= '1';

// Try to establish a database connection
if (!$db = @mysql_connect(DB_HOST, DB_USER, DB_PASS, true)) {
    die('Unable to connect to the database, check the database settings 2');
}

// Try to select our database
if (!@mysql_select_db(DB_NAME, $db)) {
	die('Unable to select database, check the database settings.');
}

// Set the connection character set and collation
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');
mysql_query("SET collation_connection = 'utf8_general_ci'");

/**
 * check for doublicate content in db
 */
$sql = "SELECT {$id_field_name}, count($id_field_name) as count

		FROM {$table_to_search_name}

		GROUP BY {$field_to_compare_name}

		HAVING count > 2

		ORDER BY count DESC
		
		LIMIT 0,{$num_items}";
$res = mysql_query( $sql );

//is there a error in db query
if($res != false){
	//check if there are doublicete rows
	if(mysql_num_rows( $res ) > 0){
		while($row = mysql_fetch_assoc( $res )){
			if(!empty($row[$id_field_name])){
				//print info
				echo 'Count: ' . $row[$id_field_name] . ' [' . $row['count'] . '] <br />';
				
				//get doublicate items by id
				$sql = "SELECT T1.*
	
						FROM {$table_to_search_name} AS T
	
						LEFT JOIN $table_to_search_name AS T1
						ON T1.{$field_to_compare_name} = T.{$field_to_compare_name} AND T1.{$id_field_name} <> {$row[$id_field_name]}
						
						WHERE
						 T.{$id_field_name} = {$row[$id_field_name]}";
				$res1 = mysql_query( $sql );
				if($res1 != false){
					if(mysql_num_rows( $res1 ) > 0){
						while( $row1 = mysql_fetch_assoc( $res1 )){
							echo 'id [' . $row1[$id_field_name] . ']<br />';
							echo $row1[$field_to_compare_name] . '<br />';
						}
					}
				} else {
					//error print info and exit
					echo mysql_error();
					exit;
				}
			}	
		}
	}
} else {
	//error print info and exit
	echo mysql_error();
	exit;
}
 
Последно редактирано:

Back
Горе