Pagina 1 van 1

Bepaalde berichten uit backup terugplaatsen

Geplaatst: 21 apr 2005, 13:13
door Inspiration
Door iets van een hackaanval was een tijdgeleden van mijn forum de eerste 5 subfora gedelete in de database. Omdat ik een tijd moest wachten op de backup van voor deze aanval heb ik enkele fora opnieuw aangemaakt (dus met een ander forum ID) en is daar ondertussen weer in gepost.

Nu wil ik dus die oude berichten terug plaatsen uit die backup die ik onderhand verkregen heb, in de nieuwe forum IDs die momenteel draaien. Dus ik wil zeg maar alle berichten uit forum ID 1 terug in forum ID 17, alle berichten uit forum ID 2 terug in forum ID 18... etc

Nou heb ik al gezocht naar hoe ik dit zou moeten doen, maar alles wat ik via de search kon vinden waren alleen nuttig als ik 2 complete databases bij elkaar zou willen voegen. Ook kom ik er zelf niet echt uit met die .sql backup file. Eerst worden namelijk de forum IDs aangemaakt, en later de posts erin teruggezet (toch?) maar hoe nou alleen deze posts eruit te halen en in een ander subforum ID te plaatsen?

Bij voorbaat dank!

Geplaatst: 21 apr 2005, 13:21
door Paul
das niet zo simpel. Ik zal is kijken of ik zo er een scriptje voor kan schrijven :)

Geplaatst: 21 apr 2005, 13:27
door Inspiration
Dat zou ik zeer waarderen :)

Geplaatst: 21 apr 2005, 13:28
door Paul
zou je even de backup van die berichten kunnen terugplaatsen. Dan krijf je zo een script wat de id goed zet :)

Geplaatst: 21 apr 2005, 13:32
door Inspiration
Hoe kan ik precies alleen de berichten van forum ID 1 t/m 5 terugplaatsen?
En dus niet alle berichten van alle forum IDs

Geplaatst: 21 apr 2005, 13:37
door Paul
stuur naar mijn email maar ff de backup, dan zal ik er even naar kijken ;)
email: webmaster[at]paulscripts[punt]nl

Geplaatst: 21 apr 2005, 13:38
door Luuk
Met een beetje aanpassen van dit script wat ik al eerder heb geschreven zou het ook moeten lukken ;)

Je moet dan de oude berichten (van het andere forum) in je database zetten onder een andere prefix, bijvoorbeeld phpbb2_xxx
Verander dan in mijn script

Code: Selecteer alles

// CONFIG
$cfg_old_prefix = 'slave_';
$cfg_to_id = '2';

// NIET AANPASSEN
$limit = 100;


// Select max id
$sql = "SELECT MAX(topic_id) as max
    FROM " . TOPICS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$topic = $db->sql_fetchrow($result);
$topic_id = $topic['max'];
$db->sql_freeresult($result);

$sql = "SELECT MAX(post_id) as max
    FROM " . POSTS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$post = $db->sql_fetchrow($result);
$post_id = $post['max'];
$db->sql_freeresult($result);

$sql = "SELECT MAX(vote_id) as max
    FROM " . VOTE_DESC_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$vote = $db->sql_fetchrow($result);
$vote_id = $vote['max'];
$db->sql_freeresult($result);

// Select topic data
$sql = "SELECT COUNT(topic_id) as topics
    FROM " . $cfg_old_prefix . "topics
 
	ORDER BY topic_id DESC";
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$aantal = $row['topics'];

$start = ( isset($_GET['start']) ) ? $_GET['start'] : 0;
$limit = $limit + $start;

$sql = "SELECT *
    FROM " . $cfg_old_prefix . "topics
	ORDER BY topic_id DESC
	LIMIT " . $start . ", " . $limit;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
in

Code: Selecteer alles

// CONFIG
$cfg_old_prefix = 'slave_';
$cfg_to_id = '2';
$cfg_from_id = '1';

// NIET AANPASSEN
$limit = 100;


// Select max id
$sql = "SELECT MAX(topic_id) as max
    FROM " . TOPICS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$topic = $db->sql_fetchrow($result);
$topic_id = $topic['max'];
$db->sql_freeresult($result);

$sql = "SELECT MAX(post_id) as max
    FROM " . POSTS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$post = $db->sql_fetchrow($result);
$post_id = $post['max'];
$db->sql_freeresult($result);

$sql = "SELECT MAX(vote_id) as max
    FROM " . VOTE_DESC_TABLE;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$vote = $db->sql_fetchrow($result);
$vote_id = $vote['max'];
$db->sql_freeresult($result);

// Select topic data
$sql = "SELECT COUNT(topic_id) as topics
    FROM " . $cfg_old_prefix . "topics
	WHERE forum_id = " . $cfg_from_id . "
	ORDER BY topic_id DESC";
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$aantal = $row['topics'];

$start = ( isset($_GET['start']) ) ? $_GET['start'] : 0;
$limit = $limit + $start;

$sql = "SELECT *
    FROM " . $cfg_old_prefix . "topics
	WHERE forum_id = " . $cfg_from_id . "
	ORDER BY topic_id DESC
	LIMIT " . $start . ", " . $limit;
if( !($result = $db->sql_query($sql)) )
{
    message_die(GENERAL_ERROR, 'Could not query ids', '', __LINE__, __FILE__, $sql);
}

Geplaatst: 21 apr 2005, 13:41
door Inspiration
paulus schreef:stuur naar mijn email maar ff de backup, dan zal ik er even naar kijken ;)
email: webmaster[at]paulscripts[punt]nl
In verband met privacy gevoelige zaken kan ik deze backup niet vrij geven. Hier sta ik zelf ook niet helemaal achter, maar het is een afspraak die ik gemaakt heb met deze "klant". Maar alle backups van databases zien er in principe toch hetzelfde uit? Dus zou elke backup dezelfde SQL commands hebben voor het terugzetten van bepaalde forum IDs en de posts hierbij, ik heb alleen geen idee hoe ik de posts van een bepaald forum ID kan vinden in de SQL file.

Geplaatst: 21 apr 2005, 13:44
door Luuk
SELECT * FROM phpbb_posts WHERE forum_id = x, maar je moet veel meer hebben dan alleen de posts tabel. Als je m'n vorige post leest zal het dnke ik wel moeten lukken, scheelt paulus weer tijd :wink:

Geplaatst: 21 apr 2005, 14:02
door Inspiration
Luuk, met die command kan ik toch alleen dingen uit een database halen via myphpadmin ofzo? Niet al die data uit een .sql bestand halen?

Geplaatst: 21 apr 2005, 14:07
door Luuk
Ja, in een .sql bestand staat alle data op een manier dat je het weer terug kan zetten.

Geplaatst: 21 apr 2005, 14:11
door Inspiration
Weet ik, maar hoe kan ik een command zoals die van jou op een .sql bestand laten uitvoeren? Het lijkt me dat ik hiervoor een programma moet hebben?

Geplaatst: 21 apr 2005, 14:22
door Luuk
Je moet het .sql laten uploaden door phpmyadmin zodat je alles weer in je database hebt staan. Dan kun je er iets mee.

Geplaatst: 21 apr 2005, 16:02
door Inspiration
Maar dan zet ik enorm veel dubbele dingen erin

Ik wil juist weten hoe ik alleen forum ID 1 t/m 5 erin kan zetten en niet de hele DB.

Geplaatst: 21 apr 2005, 17:19
door Luuk
Dat gaat bijna niet, je kan het beste de prefix eerst veranderen (bv via word, gaat het in 1 keer), vervang phpbb_ met phpbb2_.
Dan kun je het wel in je database zetten zonder problemen.

Geplaatst: 21 apr 2005, 18:24
door Inspiration
Kan je aangeven welke tabels ik dan precies moet invoegen, ik heb wel een vermoeden welke het zijn maar misschien mis ik er toch nog een.

Dus als ik alleen alle berichten en categorieen wil invoeren.
Welke tables heb ik daar allemaal voor nodig?

Geplaatst: 21 apr 2005, 18:27
door Luuk
Ook de categorieen of alleen de topics/posts in een forum?
Je moet voor de posts zowiezo hebben:
phpbb_posts
phpbb_posts_text
phpbb_topics
phpbb_topics_watch
phpbb_vote_desc
phpbb_vote_voters
phpbb_vote_results

forums is phpbb_forums
categorieen phpbb_categories