Bepaalde berichten uit backup terugplaatsen

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bepaalde berichten uit backup terugplaatsen

Bericht door Inspiration » 21 apr 2005, 13:13

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!

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 21 apr 2005, 13:21

das niet zo simpel. Ik zal is kijken of ik zo er een scriptje voor kan schrijven :)

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 13:27

Dat zou ik zeer waarderen :)

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 21 apr 2005, 13:28

zou je even de backup van die berichten kunnen terugplaatsen. Dan krijf je zo een script wat de id goed zet :)

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 13:32

Hoe kan ik precies alleen de berichten van forum ID 1 t/m 5 terugplaatsen?
En dus niet alle berichten van alle forum IDs

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 21 apr 2005, 13:37

stuur naar mijn email maar ff de backup, dan zal ik er even naar kijken ;)
email: webmaster[at]paulscripts[punt]nl

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 13:38

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);
}
Afbeelding

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 13:41

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.

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 13:44

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:
Afbeelding

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 14:02

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?

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 14:07

Ja, in een .sql bestand staat alle data op een manier dat je het weer terug kan zetten.
Afbeelding

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 14:11

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?

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 14:22

Je moet het .sql laten uploaden door phpmyadmin zodat je alles weer in je database hebt staan. Dan kun je er iets mee.
Afbeelding

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 16:02

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.

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 17:19

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.
Afbeelding

Inspiration
Berichten: 279
Lid geworden op: 27 jun 2003, 16:27

Bericht door Inspiration » 21 apr 2005, 18:24

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?

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 21 apr 2005, 18:27

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
Afbeelding

Gesloten