SQL codes invoeren voor automatische installatie

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
Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

SQL codes invoeren voor automatische installatie

Bericht door Black » 21 aug 2006, 21:07

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.

nickdhnick
Berichten: 632
Lid geworden op: 10 apr 2006, 16:38
Locatie: Apeldoorn
Contacteer:

Bericht door nickdhnick » 21 aug 2006, 21:36

niet in de install.php?

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

Bericht door Luuk » 21 aug 2006, 21:40

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

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 22 aug 2006, 10:31

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?

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

Bericht door Luuk » 22 aug 2006, 13:59

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

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 22 aug 2006, 14:21

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?

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

Bericht door Luuk » 22 aug 2006, 14:25

Dat was wel de bedoeling van mijn script ja :P
Afbeelding

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 22 aug 2006, 14:34

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
   {

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 23 aug 2006, 15:37

Heeft iemand hier een antwoord op?

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 23 aug 2006, 15:41

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.

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

Bericht door Luuk » 23 aug 2006, 15:47

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

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 23 aug 2006, 15:49

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?

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

Bericht door Luuk » 23 aug 2006, 15:51

Is niet nodig, ik was vergeten de $db in de functie te zetten.
Afbeelding

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 23 aug 2006, 15:52

Zoals Luuk al aangaf is het voldoende om de class global te maken in je functie:

Code: Selecteer alles

global $db;

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 23 aug 2006, 16:33

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

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

Bericht door Luuk » 23 aug 2006, 17:17

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

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 23 aug 2006, 20:45

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

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

Bericht door Luuk » 23 aug 2006, 21:57

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

Gebruikersavatar
Black
Berichten: 68
Lid geworden op: 27 jul 2006, 20:56

Bericht door Black » 23 aug 2006, 22:16

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:

Gesloten