Pagina 1 van 1

SQL codes invoeren voor automatische installatie

Geplaatst: 21 aug 2006, 21:07
door Black
Dit is geen dringende vraag maar, ik ben bezig geweest om de mods die ik op mijn forum heb te installeren in de standaard forum software.
Ik heb tot nu toe alleen mods geinstalleerd die geen SQL codes nodig hadden.
Maar nu is mijn vraag:
Hoe / Waar kan ik de SQL codes invoeren zodat deze automatisch mee geinstalleerd worden tijdens de installatie.
Moet dit gebeuren ergens in de installatiemap.

Geplaatst: 21 aug 2006, 21:36
door nickdhnick
niet in de install.php?

Geplaatst: 21 aug 2006, 21:40
door Luuk
Meestal zit er een db_install.php bestand bij de mod, dat moet je dan gewoon in de rootmap van je forum plaatsen en uitvoeren. Het kan ook zijn de de SQL los in de mod staat (install.txt), dan moet je het via phpmyadmin toevoegen.

Geplaatst: 22 aug 2006, 10:31
door Black
Luuk schreef:Meestal zit er een db_install.php bestand bij de mod, dat moet je dan gewoon in de rootmap van je forum plaatsen en uitvoeren. Het kan ook zijn de de SQL los in de mod staat (install.txt), dan moet je het via phpmyadmin toevoegen.
Het moet juist helemaal automatisch gebeuren. (tijdens een schone installatie van phpBB)
En ik denk niet dat als ik het bestandje in de Install map plaats deze automatisch mee geinstalleerd word. ;)

Update:
Ik heb de codes in een bestand geplaatst genaamd mysql.sql ( dit is ook weer afhankelijk van welke database je kiest bij de schone installatie van phpBB ) hier staan alle volgens mij alle codes in die tijdens de installatie uitgevoerd worden maar dit heeft geen effect gehad.

Iemand een idee?

Geplaatst: 22 aug 2006, 13:59
door Luuk
Je wilt dus als mensen jouw phpBB pakket downloaden en installeren, dat de SQL van mods er meteen bij geinstalleerd wordt. Dat kan ja:
Zoek ni install.php

Code: Selecteer alles

// ---------
// FUNCTIONS
//
En zet erachter

Code: Selecteer alles

function auto_install_sql($filename)
{
    $error = '';
	$filename = './schemas/' . $filename;
    $sql = readfile($filename);
	if (!$db->sql_query($sql))
	{
		$error = "Could not insert the SQL for the mods :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
	}
	
	return $error;
}
Zoek

Code: Selecteer alles

			if ($error != '')
Zet ervoor

Code: Selecteer alles

$error .= auto_install_sql('mods.sql');
Je bestand heet nu mods.sql en je moet het in de map install/schemas zetten.

Geplaatst: 22 aug 2006, 14:21
door Black
Dus als ik het dan nu goed begrijp hoef ik alleen maar de SQL codes van mijn mods in mods.sql zetten en hij installeert ze mee?

Geplaatst: 22 aug 2006, 14:25
door Luuk
Dat was wel de bedoeling van mijn script ja :P

Geplaatst: 22 aug 2006, 14:34
door Black
Luuk schreef:Dat was wel de bedoeling van mijn script ja :P
Ik zal het eens gaan proberen :P

EDIT:

Heb het geprobeerd maar ik krijg de volgende error:

Code: Selecteer alles

CREATE TABLE ".SHOUTBOX_TABLE." ( shout_id MEDIUMINT(8) UNSIGNED NOT NULL auto_increment, shout_username VARCHAR(25) NOT NULL, shout_user_id MEDIUMINT(8) NOT NULL, shout_group_id MEDIUMINT(8) NOT NULL, shout_session_time INT(11) NOT NULL, shout_ip CHAR(8) NOT NULL, shout_text TEXT NOT NULL, shout_active MEDIUMINT(8) NOT NULL, enable_bbcode TINYINT (1) NOT NULL, enable_html TINYINT (1) NOT NULL, enable_smilies TINYINT (1) NOT NULL, enable_sig TINYINT (1) NOT NULL, shout_bbcode_uid VARCHAR(10) NOT NULL, INDEX (shout_id) ); INSERT INTO ".CONFIG_TABLE." (config_name, config_value) VALUES ('prune_shouts', '0');
Fatal error: Call to a member function sql_query() on a non-object in phpBB2\install\install.php on line 30
dit staat er bij lijn 30:

Code: Selecteer alles

    $sql = readfile($filename);
   if (!$db->sql_query($sql))                            <== lijn 30
   {

Geplaatst: 23 aug 2006, 15:37
door Black
Heeft iemand hier een antwoord op?

Geplaatst: 23 aug 2006, 15:41
door ElbertF
De db() class is niet gedeclareerd waardoor de $db->sql_query() functie niet gebruikt kan worden. Waarschijnlijk is het bestand waar de functie in staat niet ge-include.

Geplaatst: 23 aug 2006, 15:47
door Luuk
Owja altijd handig bij een functie... verander function auto_install_sql met de hele rits een in

Code: Selecteer alles

function auto_install_sql($filename)
{
    global $db;

    $error = '';
   $filename = './schemas/' . $filename;
    $sql = readfile($filename);
   if (!$db->sql_query($sql))
   {
      $error = "Could not insert the SQL for the mods :: " . $sql . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
   }
   
   return $error;
}

Geplaatst: 23 aug 2006, 15:49
door Black
Spambot schreef:De db() class is niet gedeclareerd waardoor de $db->sql_query() functie niet gebruikt kan worden. Waarschijnlijk is het bestand waar de functie in staat niet ge-include.
En hoe include ik dat bestand?

Geplaatst: 23 aug 2006, 15:51
door Luuk
Is niet nodig, ik was vergeten de $db in de functie te zetten.

Geplaatst: 23 aug 2006, 15:52
door ElbertF
Zoals Luuk al aangaf is het voldoende om de class global te maken in je functie:

Code: Selecteer alles

global $db;

Geplaatst: 23 aug 2006, 16:33
door Black
Heb het net aangepast en opnieuw getest maar het werkt nog steeds niet.

De SQL codes van het bestand mods.sql verschijnen helemaal boven aan de pagina nadat ik op start install heb gevuld en ik krijg op het scherm de volgende fout melding:

Code: Selecteer alles

An error occurred trying to update the database

Could not insert the SQL for the mods :: 382 :: 35 :: install\install.php

Geplaatst: 23 aug 2006, 17:17
door Luuk
Hmm, probeer het dan zo eens:

Code: Selecteer alles

function auto_install_sql($filename)
{
    global $db, $delimiter;
	
	$error = '';
    $filename = './' . $filename;
    $sql = split_sql_file(file_get_contents($filename), $delimiter);
	
	foreach($sql as $querry)
	{
	    if (!$db->sql_query($querry))
        {
            $error .= "Could not insert the SQL for the mods :: " . $querry . " :: " . __LINE__ . " :: " . __FILE__ . "<br /><br />";
        }
	}
    return $error;
}

Geplaatst: 23 aug 2006, 20:45
door Black
Ik krijg geen error meer op de installpagina maar nog wel boven aan de pagina namelijk:

Code: Selecteer alles

Warning: file_get_contents(./mods.sql) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Program Files\xampp\htdocs\install\install.php on line 32
Update:

Deze fout kreeg ik in het menu van de mod:

Code: Selecteer alles

SQL Error : 1054 Unknown column 'b.by_id' in 'where clause'

SELECT b.*, u2.username AS by_user, u2.user_id AS by_id, u.username FROM phpbb_banlist b, phpbb_users u2, phpbb_users u WHERE ( u2.user_id = b.by_id AND b.ban_userid = 0 AND u.user_id = -1 ) OR ( b.ban_userid <> 0 AND u.user_id = b.ban_userid AND u2.user_id = b.by_id ) ORDER BY b.ban_id ASC LIMIT 0, 15

Line : 658
File : admin_ebm.php

Geplaatst: 23 aug 2006, 21:57
door Luuk
Ik moet ook beter opletten, had de map aangeast om het op mijn pc te testen, maar ik was het vergeten terug te veranderen....

Code: Selecteer alles

$filename = './' . $filename; 
moet

Code: Selecteer alles

$filename = './schemas/' . $filename; 
worden :roll:

Hopelijk dat dit het laatste is wat je moet doen :P
Daarna zou je error ook weg moeten zijn, de SQL is nu namelijk niet uitgevoerd.

Geplaatst: 23 aug 2006, 22:16
door Black
Hebt het net getest en het ging goed!
De alpha test is geslaagd :P ik ga morgen verder met het aanpassen van het forum heb er nu al zo'n 30 mods opzitten :twisted: