Pagina 1 van 1

Forum overzetten

Geplaatst: 24 apr 2004, 18:30
door koudekerk
Hoe kan ik mijn berichten overzetten (dus alleen mijn berichten) naar een ander forum???

Geplaatst: 24 apr 2004, 19:08
door mosymuis
http://www.phpbb.nl/kb.php?mode=article&k=8
en dan alle andere berichten verwijderen. :?

Geplaatst: 24 apr 2004, 22:17
door koudekerk
Maar ik wil alleen mijn berichten overzetten en niet mijn hacks en mijn style

Geplaatst: 24 apr 2004, 23:04
door mosymuis
Dan volg je alleen de database stappen.

Geplaatst: 25 apr 2004, 00:40
door WebmasterX
Ik heb een tijdje terug voor mijzelf een script geschreven die dat doet. Het probleem echter is dat je dit script vanuit een shell moet opstarten. In ssh dus.

Wat je eerst moet doen is een nieuwe database aanmaken met een clean install van phpbb. Daarna gooi je alles leeg wat phpbb standaard in je forum gooit tijdens de installatie.

Vervolgens update je je oude database naar de versie van je nieuwe database zodat alle velden overeenkomen.

Als je dat allemaal gedaan hebt voer je dit script uit command line in je ssh

Code: Selecteer alles

#!/usr/bin/php -q
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

function read ($length='255')
{
  if (!isset ($GLOBALS['StdinPointer']))
  {
     $GLOBALS['StdinPointer'] = fopen ("php://stdin","r");
  }
  $line = fgets ($GLOBALS['StdinPointer'],$length);
  return trim ($line);
}

$dbhost_old = '********';
$dbname_old = '********';
$dbuser_old = '********';
$dbpasswd_old = '********';

$db_old = new sql_db($dbhost_old, $dbuser_old, $dbpasswd_old, $dbname_old, false);
if(!$db_old->db_connect_id)
{
   message_die(CRITICAL_ERROR, "Could not connect to the old database");
}

$new_table_list = $db->sql_fetch_tables();
passthru(clear);

for($i=0;$i<count($new_table_list);$i++)
{
	
	$fields = $db->sql_fetch_fields($new_table_list[$i]);
		
	for($f=0;$f<count($fields);$f++)
	{
		$field_list .= ", ".$fields[$f];
	}

	$sql = "SELECT ".trim($field_list, ", ")." FROM $new_table_list[$i] WHERE 1 ORDER BY ".$fields[0];

	echo "\n\nGet data from: " . $new_table_list[$i] . "\n";
	echo "[yes / no] :";
	
	$go_ahead = read();
	if(strtolower($go_ahead) == "no" || strtolower($go_ahead) == "n")
	{
		unset($go_ahead);
		unset($field_list, $insert_rows, $data, $fields);
		continue;
	} elseif ( strtolower($go_ahead) == "yes" || strtolower($go_ahead) == "y")
	{

	} else {
		$go_ahead = read();
	}

	echo "\n\n";
	echo $sql."\n";
	echo "progres: ";
	sleep(2);	

	$result = $db_old->sql_query($sql);

	if(!($db_old->sql_query($sql)) )
	{
		$error = $db_old->sql_error();
		echo "\n".$error['message']."\n\n";
	}


	$numrows = $db_old->sql_numrows($result);
	while( $row = $db_old->sql_fetchrow($result) )
	{
	
		for($r=0;$r<count($numrows);$r++)
		{
			for($d=0;$d<count($fields);$d++)
			{
				$insert_data .= ", '".addslashes($row[$d])."'";
			}
				
			$sql_new_insert = "INSERT INTO ".$new_table_list[$i]." (".trim($field_list, ", ").") values (".trim($insert_data, ", ").")";
			set_time_limit(60);

			if(!($db->sql_query($sql_new_insert)) )
			{
				$error = $db->sql_error();
				echo "\n".$error['message']."\n\n";
				echo "@";
			}else{
				echo "*";
			}
			
			sleep(0.5);
			unset($insert_data);
		}
		
	}
	flush();
	
	unset($field_list, $insert_rows, $data, $fields);
}

?>
Volg het script en heb geduld bij grote db's, maak voor de zekerheid altijd een back-up van je huidige db.

WebmasterX

Geplaatst: 25 apr 2004, 16:58
door koudekerk
oke en als ik een backup wil maken van alleen mijn berichten moet ik dan het vakje aanvinken van structuur en data??

Geplaatst: 25 apr 2004, 17:42
door WebSiteNet
De structuur is is de query die de tabel zelf maakt en de data alles wat er in staat. Als je alleen de berichten wilt hebben moet data genoeg zijn.

Geplaatst: 25 apr 2004, 18:23
door koudekerk
ik kan het maar niet vinden met de host maltastart?