bobbydigital
New member
колеги ето ви един скрипт за намиране дублирано съдържание да дадена таблица от базата. трябва да си попълните данните на таблицата в която искате да търсите. скрипта намира по 1 запис, след което взимате мерки да не се повтаря и го пускате пак. броя на записите се настройва. някой ако има предложения за подобрения съм готов да чуя. някой ако има проблеми мога да помогна 🙂. поздрави
в замяна ако някой желате да даде някой жокер по моя проблем тук : http://www.webmasterbg.org/showthread.php?t=10563 ще съм благодарен
в замяна ако някой желате да даде някой жокер по моя проблем тук : 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;
}
Последно редактирано: