---
title: "Använda XML eller databas för \"sidinställningar\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/179696-använda-xml-eller-databas-för-sidinställningar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "MickeA.com"
published: "2009-08-09T09:59:57.000Z"
updated: "2009-08-09T16:33:18.000Z"
replies: 4
views: 414
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/179696-använda-xml-eller-databas-för-sidinställningar"
---

# Använda XML eller databas för "sidinställningar"

## #1 — MickeA.com, 2009-08-09T09:59Z

Hej,

Har byggt en typ av CMS där jag i nuläget använder en XML-fil för "globala" inställningar i systemet, så som uppgifter om kunden (namn, adress osv.).

Nu börjar det bli ett gäng sajter att underhålla och börjar fundera på om det här är bra eller dåligt. Är det "smartare" att spara sådana här saker i en tabell i databasen?

En fördel med XML är ju att man slipper göra anrop till databasen varje gång man ska hämta en inställning.

Hur skulle ni gjort?

Permalänk: https://www.webforum.nu/p/179696

## #2 — tydal, 2009-08-09T10:08Z

Databas är att rekommendera om du behöver plocka ut vissa delar enligt vissa villkor, söka, sortera eller på annat sätt bearbeta resultatet.

För inställningar kan det vara praktiskt om du ska kunna ändra dem genom ett webbgränssnitt. Lite smidigare att köra SQL-queries för att ändra än att pilla i en textfil.

Permalänk: https://www.webforum.nu/p/2198168

## #3 — MickeA.com, 2009-08-09T10:11Z

Jo, håller med där. Började fundera över det här nu när en kund har PlusGiro istället för Bankgiro och nu måste jag bygga in båda delarna och sen ska en av dom override'a den andra när fakturor genereras osv.

Kunden ska ju även kunna ändra på de här uppgifterna själv, och det är lättare att bygga ett webbgränsnitt för det (precis som du säger) istället för att läsa in filen, skapa ett formulär och sen skriva en ny config fil.

Blir det något fel i filen när den skrivs kommer ju även hela sajten rasa, typ. Nu gör jag om, och gör rätt.

Tack

Permalänk: https://www.webforum.nu/p/2198170

## #4 — MickeA.com, 2009-08-09T15:59Z

Nu har jag gjort om lite, men har stött på problem.
Såhär ser min tabell ut:

```
config_parent
config_key
config_value
config_type
config_pattern
```

*config_type* kan t.ex. innehålla "numeric", "year", "alpha" och är det *NULL* på en rad innehåller istället *config_pattern* det mönster som in-datan ska valideras emot.

Såhär ser koden ut:

```php
$keys    = array();
$config  = array(					
				1 => "SYSTEM",
				2 => "ADMIN_SETTINGS",
				3 => "CLIENT_SETTINGS",
				4 => "GROUP_SETTINGS",
				5 => "SCHOOL_NOTIFIES",
				6 => "PAGE_START",
				7 => "PAGE_GALLERY",
				8 => "PAGE_FOOTER"
				);

$query = "SELECT config_parent, config_key, config_value, config_type, config_pattern, config_desc "
		."FROM system_config "
		."ORDER BY config_parent ASC";

$result = mysql_query($query) or die(send_errorreport(basename($_SERVER['PHP_SELF']), __LINE__, mysql_error(), $query));
if(!(mysql_num_rows($result) == false)){
	while($res = mysql_fetch_assoc($result)){
		$keys[$res['config_parent']]['key'][]	  = $res['config_key'];
		$keys[$res['config_parent']]['value'][]   = $res['config_value'];
	}
}
mysql_free_result($result);
```

*$res\['config_parent'\]* är "tillhörighet" i array'en $config. När jag postar formuläret ser koden ut såhär:

```php
	function value_is_ok($value, $type = "", $pattern = ""){
		switch($type){
			case "alpha"   : $pattern = "/^[A-Za-z\s-_]+$/"; break;
			case "numeric" : $pattern = "/^\d+$/"; break;
			case "year"    : $pattern = "/^(19|20)[0-9]{2}$/"; break;
			case "href"    : $pattern = "/^(https?):\/\/((?:[-a-z0-9]+\.)*)([-a-z0-9]+)\.(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z]{2})(\/[-a-z0-9_:@&?=+,.!\/~*%$]*)?$/i"; break;
			case "email"   : $pattern = "/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i"; break;
		}
		return preg_match($pattern, $value);
	}

	for($i = 0; $i <= sizeof($_POST['parent']) - 1; $i++){
		$parent  = safesql($_POST['parent'][$i]);
		$key	 = safesql($_POST['key'][$i]);
		$value   = safesql($_POST['value'][$i]);

		if(value_is_ok($value, $type, $pattern) == 0)
			$error[] = $key;

		$keys[$_POST['parent'][$i]]['key'][]	 = $key;
		$keys[$_POST['parent'][$i]]['value'][]   = $value;
	}
```

Problemet är att när jag postar formuläret så lyckas jag inte jämföra *$\_POST\['value'\]\[$i\]* med "rätt" *$keys\[$parent\]\['pattern'\]\[$i\]*.

Kan någon ge mig en spark i rätt riktning? Tack!

Permalänk: https://www.webforum.nu/p/2198173

## #5 — MickeA.com, 2009-08-09T16:33Z

Har löst problemet, hade rört ihop det fullständigt i huvudet.

Permalänk: https://www.webforum.nu/p/2198174

---

Tråden på webben: https://www.webforum.nu/amne/php/179696-använda-xml-eller-databas-för-sidinställningar
