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:
$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:
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!