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

Помощь Проблема с тегами

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

Tadasi

Постоялец
Регистрация
6 Май 2008
Сообщения
145
Реакции
6
Случайно в phpMyAdmin удалил все данные из таблицы "dle_tags" и теперь в новостях не работают теги. Как можно пересобрать информацию о тегах новостей назат в таблицу "dle_tags"?

У меня есть скрипт, который обнавляет alt_name, keywords и description, вот:



Думаю его можно как-то переделать для обновления информации по тегам... ?
 
На вскидку как то так, писалось на коленке возможно есть ошибки, но общая идея думаю понятна:
PHP:
<?php
set_time_limit( 0 );
@ini_set ('memory_limit', "512M");
define ( "DATALIFEENGINE", true );
define ( "ROOT_DIR", dirname ( __FILE__ ));
define ( "ENGINE_DIR", ROOT_DIR . "/engine/" );
require_once ROOT_DIR . '/engine/classes/mysql.php';
require_once ROOT_DIR . '/engine/data/config.php';
require_once ROOT_DIR . '/engine/data/dbconfig.php';
require_once ROOT_DIR . '/engine/inc/functions.inc.php';
$sql_result = $db->query ( "SELECT * FROM " . PREFIX . "_post ORDER BY date DESC LIMIT 100000" );
$num = '0';
while ( $row = $db->get_row ( $sql_result )) {
$tags = $row['tags'];
$tags = explode(',',$tags);
$id = $row['id'];
$iQn = count($tags)-1;
foreach ($tags as $iKey=>$tag) {
	$sSqlAdd .= "('', $id, $tag)";
	if ($iKey<=$iQn) $sSqlAdd.=', ';
	else $sSqlAdd.=' ';
}
$db->query ( "INSERT INTO " . PREFIX . "_tags ( `id` , `news_id` , `tag` ) VALUES ".$sSqlAdd );
$num = $num + '1' . "||";
echo $num;
}
die ('done');
$db->free();
?>
 
На вскидку как то так, писалось на коленке возможно есть ошибки, но общая идея думаю понятна:
PHP:
<?php
...
?>

Немного не работает, но дамаю мы на верном пути. Вот я немного его доделал:



В таком коде скрипт работает и выдает правильные команды в мускул, вот:


Но из-за того, что в конце стоит запятая, а не точка с запятой, скрипт выдает ошибку:

MySQL Error!
------------------------
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Error Number:
1064

Что не так?

И ещё не знаю почему, но в команде к базе
('1', '65665', ' софт')
почему-то перед самим тегом стоит пробел!?

Добавлено через 10 минут
 
После долгих эксперементов (я просто далековат ещё от знания пхп), пришёл к следующему коду:


Скрипт работает, но не совсем: он записывает данные только об одном теге на каждую новость, т.е. если в новости более чем один тег - то скрипт неполноценен. Думаю там чтот со счётчиком количества тегов на новость, и похоже проблема кроется в этом месте кода:


Подскажите, что я не так делаю?
 
Восстанови из бэкапа таблицу dle_tags в phpmyadmin

CREATE TABLE `dle_tags` (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL default '0',
`tag` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `news_id` (`news_id`),
KEY `tag` (`tag`)
) ENGINE=MyISAM AUTO_INCREMENT=72578 /*!40101 DEFAULT CHARSET=cp1251 */;

потом

данные туда загони

INSERT INTO `dle_tags` VALUES
(18, 6, 'Posters'),
(32, 5, 'photoshop'),
(33, 5, 'template'),
(31, 5, 'hitman'),
(7, 4, 'old'),
(8, 4, 'photo'),
(9, 4, 'photoshop'),
(10, 4, 'psd'),
(11, 4, 'шаблоны'),
(12, 4, 'графика');
 
Восстанови из бэкапа таблицу dle_tags в phpmyadmin
CREATE TABLE `dle_tags` (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL default '0',
`tag` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `news_id` (`news_id`),
KEY `tag` (`tag`)
) ENGINE=MyISAM AUTO_INCREMENT=72578 ;
потом
данные туда загони
INSERT INTO `dle_tags` VALUES
(18, 6, 'Posters'),
(32, 5, 'photoshop'),
(33, 5, 'template'),
(31, 5, 'hitman'),
(7, 4, 'old'),
(8, 4, 'photo'),
(9, 4, 'photoshop'),
(10, 4, 'psd'),
(11, 4, 'шаблоны'),
(12, 4, 'графика');

Не, ну это понятно. если б была такая возможность - давно б уже сделал! А тут нет у меня бекапа...(

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