Pagina 1 van 1

SQL terugdraaien

Geplaatst: 01 mei 2004, 21:02
door Erulezz
Ik moest een DB update doen , dit stond in de Databaseupdate.php:

Code: Selecteer alles

<?
#########################################################
## SQL commands to phpBB2
## Author: Niels Chr. Rød
## Nickname: Niels Chr. Denmark
## Email: ncr@db9.dk
##
## Ver 1.0.8
##
## phpBB2 database update script for mods
## this file is intended to use with phpBB2, when installing mods
## after so you may delete this file, but only admin can use so it really doesen't matter
## The script will look what prefix you are using, and use the existing DB defined by congig.php
## The execution of this script's included SQL is harmless, so you can run it as meny times you like
## note, though that the users last visit, will be set back to his/her last login, 
## but that is a minor cosmetic isue, that will correct it self next time the use  logs in
##
## the following example are from my mods, and you can add some self, for other mods if you like
## you will after execution get a list over those commands that are run with succes and those with warnings !
## delete the sample lines if you are using it only for other mods
##
#########################################################

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);

###################################################################################################
##
## put the SQL commands below here, the SQL commands listed below are only exampels, substitude them with the one you need ##
##
###################################################################################################
$sql=array(
'ALTER TABLE '.USERS_TABLE.' ADD user_lastlogon INT (11) DEFAULT "0" not null',
'UPDATE '.USERS_TABLE.' SET user_lastlogon=user_lastvisit WHERE user_lastlogon="0"',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("hidde_last_logon", "0")',
'ALTER TABLE ' . USERS_TABLE .' ADD user_totaltime INT (11) DEFAULT "0"',
'ALTER TABLE ' . USERS_TABLE .' ADD user_totallogon INT (11) DEFAULT "0"',
'ALTER TABLE ' . USERS_TABLE .' ADD user_totalpages INT (11) DEFAULT "0"',
'UPDATE '. USERS_TABLE .' SET user_totaltime=(user_session_time-user_lastlogon) WHERE user_totaltime="0" AND user_lastlogon>0',
'UPDATE '. USERS_TABLE .' SET user_totallogon=1 WHERE user_totallogon="0" AND user_session_time<>"0"'
);


$mods = array ( 
'Last Visit PART 1 Mod','Last Visit PART 1 Mod','Last Visit PART 2 Mod','Last Visit PART 4 Mod','Last Visit PART 4 Mod','Last Visit PART 4 Mod','Last Visit PART 4 Mod','Last Visit PART 4 Mod'
);

############################################### Do not change anything below this line #######################################

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

if ($userdata['user_level']!=ADMIN)
      message_die(GENERAL_ERROR, "You are not Authorised to do this"); 
$n=0;
$message="<b>This list is a result of the SQL queries needed for MOD</b><br/><br/>";
while($sql[$n])
{
	$message .= ($mods[$n-1] != $mods[$n]) ? '<p><b><font size=3>'.$mods[$n].'</font></b><br/>' : '';
	if(!$result = $db->sql_query($sql[$n])) 
	$message .= '<b><font color=#FF0000>[Already added]</font></b> line: '.($n+1).' , '.$sql[$n].'<br />';
	else $message .='<b><font color=#0000fF>[Added/Updated]</font></b> line: '.($n+1).' , '.$sql[$n].'<br />';
	$n++;
}
 message_die(GENERAL_MESSAGE, $message); 
?>
Hoe moet ik het terugdraaien?

Geplaatst: 01 mei 2004, 21:15
door CG bandicoot
Wat bedoel je nou precies?

Als je bedoelt dat je al wat files hebt hebt bewerkt maar toch wilt stoppen moet je de instrucite file(meestal install.txt) openen en dan de codes die je erin hebt gezet opsporen weghalen.

Maar ik snap het nu al. Als je de SQL weer terug wil draaien moet je de tabbellen die met die mod te maken hebben verwijderen.

Geplaatst: 01 mei 2004, 22:04
door Donny_nl
Goed advies van CG bandicoot!!! Maar eerst even een backup maken Erulezz!

En dan nu advies dat hopelijk minder drastisch is:

in phpmyadmin ga je naar de tabel met de users (phpbb_users) en verwijder daar in de structuur de velden die je hierboven hebt aangemaakt:

user_lastlogon
user_totaltime
user_totallogon
user_totalpages

WEL DUS EERST EEN DB BACKUP MAKEN EN VOORAL GEEN TABELLEN VERWIJDEREN!

Geplaatst: 01 mei 2004, 22:52
door mosymuis
De aangepaste waardes in phpbb_users kan je niet zomaar meer herstellen, de nieuwe kolommen en rij in config wel;

Code: Selecteer alles

ALTER TABLE phpbb_users DROP user_lastlogon;
ALTER TABLE phpbb_users DROP user_totaltime;
ALTER TABLE phpbb_users DROP user_totallogon;
ALTER TABLE phpbb_users DROP user_totalpages;
DELETE FROM phpbb_config WHERE config_name = 'hidde_last_logon';

Geplaatst: 02 mei 2004, 11:34
door Donny_nl
De aangepaste waarden die in de mod hierboven staan zijn gemaakt in de nieuwe kolommen. Dus het verwijderen van de kolommen is het enige dat moet gebeuren om de SQL opdrachten terug te draaien.

Geplaatst: 02 mei 2004, 12:33
door mosymuis
donny_nl schreef:De aangepaste waarden die in de mod hierboven staan zijn gemaakt in de nieuwe kolommen.
Ehm,

Code: Selecteer alles

'UPDATE '.USERS_TABLE.' SET user_lastlogon=user_lastvisit WHERE user_lastlogon="0"',
'INSERT INTO '.CONFIG_TABLE.' (config_name, config_value) VALUES ("hidde_last_logon", "0")',
'UPDATE '. USERS_TABLE .' SET user_totaltime=(user_session_time-user_lastlogon) WHERE user_totaltime="0" AND user_lastlogon>0',
'UPDATE '. USERS_TABLE .' SET user_totallogon=1 WHERE user_totallogon="0" AND user_session_time<>"0"'
Hoe noem je dit dan?

Geplaatst: 02 mei 2004, 15:36
door Donny_nl
:d

Die updates hebben alleen betrekking op de kolommen die met de alter tables zijn aangemaakt. De Insert in de Config tabel kun je ook weer verwijderen, maar dat hoef ik jou toch niet uit te leggen.

Geplaatst: 02 mei 2004, 15:38
door mosymuis
Dat die updates sloegen op de nieuwe kolommen had ik niet gezien, de nieuwe rij in config had ik in de query hierboven^^ al laten verwijderen. :)