Gå til innhold

Legge config i database


Anbefalte innlegg

phpBB har jo en tabell som ser slik ut:

CREATE TABLE `phpbb_config` (
 `config_name` varchar(255) NOT NULL default '',
 `config_value` varchar(255) NOT NULL default '',
 PRIMARY KEY  (`config_name`)
) TYPE=MyISAM;

 

Tenkte å benytte det samme for et script jeg har, for pr i dag har jeg en web-basert konfigurasjon som skriver til fil og lagrer innstillinger som $setting="verdi";, osv. Problemet er at jeg ikke på noen enkel måte kan hente ut bare en setting eller redigere en og lagre igjen.

 

Lurer litt på hvordan jeg skal gjøre det med scriptet for å oppdatere innstillingene?

Må jeg kjøre en "UPDATE table SET config-navn = '$config-verdi' WHERE config-navn='$config-navn'"; for hver eneste konfig-valg jeg endrer?

Det blir fort en god del queries... :(

Lenke til kommentar
Videoannonse
Annonse

ja, du må vel nødvendigvis gjøre det. jeg har en funksjon som returnerer en slik tekstfil som et oversiktlig array, som funker bra hvis du ikke skal gjøre oppdateringer underveis i koden.

 

hvis config ser slik ut:

sidetittel = min hjemmeside

vis_footer = true

 

vil arrayet se ca sånn ut:

array

(

[sidetittel] => "min hjemmeside"

[vis_footer] => true

)

 

funksjonen kalles opp slik:

$config = resourceFile('config' [, $skilletegn]);

så kan du bare bruke $config['sidetittel'] f.eks.

 

Jeg syns det er lettere enn å bruke en database til dette, men dette var kanskje akkurat det du hadde fra før?

 

legger ved funksjonen uansett:

function resourceFile($file, $split_symbol = '=')
{	
$filename = $file;
$array = file($filename);
$count = count($array);

for($i = 0; $i < $count; $i++)
{
 $tmp = explode($split_symbol, $array[$i]);
 $key = trim($tmp[0]);
 $value = trim($tmp[1]);
 
 if(empty($key) || empty($value))
 {
 	$key = ++$i;
 	$value = "No value";
 	$i--;
 }
 
 $resourceArray[$key] = $value;
}

return $resourceArray;
}

Endret av hockey500
Lenke til kommentar

Hvorfor i alle dager beholder du ikke bare en filbasert konfigurasjon? Tror det er mye kjappere å aksessere en fil for config enn databasen for config.

 

Slik jeg brukt det atm i nextgen:

 


$file = file_get_contents("config.php");

if (@$_GET['action'] == 'save'){
 while (list($key, $val) = each($_POST)) {
       $file = preg_replace("[(\['$key'\]\s*?=\s*?)'.*?']", "$1'$val'", "$file");
    }

if(file_put_contents("config.php", "$file"))echo "Configuration updated";
else "Update failed!";
}

Endret av allyse
Lenke til kommentar

Bortsett fra at jeg ikke bruker array, så er det det samme, ja...

Ulempen er når jeg skal legge inn nye config-valg, f.eks "$vis_fil = true;". Siden jeg bruker web-config må jeg opprette form-feltet, hente det ut etter submit, verifisere og skrive det til fil.

 

Var her jeg så for meg at jeg kunne kanskje spare litt på den "skrive til fil" biten, for nå skriver jeg hele filen på nytt...

Lenke til kommentar

allyse:

Den ser jo grei ut, da trenger jeg jo bare å legge den til i from'en så er det jo greit...? Skulle jo laget noe slikt fra starten av, men da var det ikke stort man kunne konfigurere, men det har bare "klabbet på seg" :p

Lenke til kommentar
allyse:

Den ser jo grei ut, da trenger jeg jo bare å legge den til i from'en så er det jo greit...? Skulle jo laget noe slikt fra starten av, men da var det ikke stort man kunne konfigurere, men det har bare "klabbet på seg" :p

6398911[/snapback]

 

Den tar resulatetet av formen ja. f.eks (veit elendig html, men tok den fra en testfil :p)

 

form id=\"form1\" name=\"form1\" method=\"post\" action=\"test.php?action=save\">
<table width=\"800\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">

 <tr><td>Database name</td>
   <td><input type=\"text\" id=\"dbname\" value=\"{$CONFIG['dbname']}\" name=\"dbname\" /></td>
 </tr>
 
   <tr>
   <td>Database user</td>
   <td><input type=\"text\" id=\"dbuser\" value=\"{$CONFIG['dbuser']}\" name=\"dbuser\" /></td>
 </tr>
 
   

</table>

 <input type=\"submit\" name=\"Submit\" value=\"Submit\">

</form>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...