SQL codes invoeren voor automatische installatie
Forumregels
Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.

SQL codes invoeren voor automatische installatie
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.
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.
-
- Berichten: 632
- Lid geworden op: 10 apr 2006, 16:38
- Locatie: Apeldoorn
- Contacteer:
Het moet juist helemaal automatisch gebeuren. (tijdens een schone installatie van phpBB)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.
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?
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
En zet erachter
Zoek
Zet ervoor
Je bestand heet nu mods.sql en je moet het in de map install/schemas zetten.
Zoek ni install.php
Code: Selecteer alles
// ---------
// FUNCTIONS
//
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;
}
Code: Selecteer alles
if ($error != '')
Code: Selecteer alles
$error .= auto_install_sql('mods.sql');
Ik zal het eens gaan proberenLuuk schreef:Dat was wel de bedoeling van mijn script ja

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
Code: Selecteer alles
$sql = readfile($filename);
if (!$db->sql_query($sql)) <== lijn 30
{
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;
}
Zoals Luuk al aangaf is het voldoende om de class global te maken in je functie:
Code: Selecteer alles
global $db;
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:
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
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;
}
Ik krijg geen error meer op de installpagina maar nog wel boven aan de pagina namelijk:
Update:
Deze fout kreeg ik in het menu van de mod:
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
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
Ik moet ook beter opletten, had de map aangeast om het op mijn pc te testen, maar ik was het vergeten terug te veranderen....
moet
worden
Hopelijk dat dit het laatste is wat je moet doen
Daarna zou je error ook weg moeten zijn, de SQL is nu namelijk niet uitgevoerd.
Code: Selecteer alles
$filename = './' . $filename;
Code: Selecteer alles
$filename = './schemas/' . $filename;

Hopelijk dat dit het laatste is wat je moet doen

Daarna zou je error ook weg moeten zijn, de SQL is nu namelijk niet uitgevoerd.