In general this isn't difficult though I have hit a couple snags. What I'm trying to do is create the column/value pairs first (that I will concatenate in to the $query string to be used in the MySQL query), the rest of the work should be cake.
Here is a shortened example of what the column/pairs variable would look like (only using six variable/value sets for the sake of the example) if I set a static variable (versus pulling the data from the array/function dynamically (from $_GET, $_POST, etc))...
Code: Select all
$preferences = 'audio='2', checkboxes='1', connection='0', css3='0', css3columns='4', csspatch='1'';Code: Select all
$query = "UPDATE preferences_table SET ".$preferences." WHERE id='1'";
mysql_query($query);Code: Select all
<?php
class settings
{
public function set($name,$value) {$this->$name = $value;}
public function get($name){return $this->$name;}
}
$default = array(
'audio'=>'0',
'broadbandimages'=>'0',
'checkboxes'=>'0',
'connection'=>'0',
'css3'=>'0',
'css3columns'=>'1',
'csspatch'=>'1',
'cursors'=>'0',
'dhtml'=>'0',
'dtd'=>'1',
'initialfocus'=>'search_query',
'keyboardlayout'=>'developer',
'mime'=>'ns',
'pagination'=>'form',
'personality'=>'0',
'powerkeys'=>'0',
'scrollbars'=>'0',
'sidebar'=>'20',
'sounds'=>'0',
'theme'=>'classic',
'user'=>''
);
$c = count($default);
$i = 0;
foreach($default as $type=>$default)
{
$$type = client($type, $default);
$i++;
if (isset($cookie_value)) {$cookie_value .= $type.'.'.$$type; if ($c!=$i) {$cookie_value .='_';}}
else {$cookie_value = $type.'.'.$$type.'_';}
}
if (is_array($default))
{
$sql_update;
foreach($default as $key => $value)
{
$sql_update .= $key;
}
$_SESSION['11111111111111111111111111'] = $sql_update;
}
function client($type,$default)
{
if (isset($_GET[$type])) {/*$_SESSION['11111111111111111111111111'] .= $type.'=\''.$_GET[$type].'\', '; */return $_GET[$type];}
else if (isset($_POST[$type])) {/*$_SESSION['11111111111111111111111111'] .= $type.'=\''.$_POST[$type].'\', '; */return $_POST[$type];}
else if (isset($_SESSION[$type])) {/*$_SESSION['11111111111111111111111111'] .= $type.'=\''.$_SESSION[$type].'\', '; */return $_SESSION[$type];}
else if (isset($_COOKIE['settings']))
{
$pieces = explode('_', $_COOKIE['settings']);
$c = count($pieces);
$i = 0;
foreach($pieces as $value)
{
$value = explode('.', $value);
$i++;
if ($value[0]==$type && $value[1] != '') {return $value[1];}
else if ($c==$i) {return $default;}
}
}
else {return $default;}
}
if (!headers_sent())
{
if (isset($_SESSION['member'])) {$cookie_value .= 'user.'.$_SESSION['member'];}
setcookie('settings',$cookie_value,time()+2592000,'/');
}
// Assign subclasses to true values.
$settings = new settings();
$settings->set('audio',$audio);
//$_SESSION['11111111111111111111111111'] = $sql_update;
$_SESSION['audio'] = $audio;
$settings->set('broadbandimages',$broadbandimages);
$_SESSION['broadbandimages'] = $broadbandimages;
$settings->set('checkboxes',$checkboxes);
$_SESSION['checkboxes'] = $checkboxes;
$settings->set('connection',$connection);
$_SESSION['connection'] = $connection;
$settings->set('css3',$css3);
$_SESSION['css3'] = $css3;
$settings->set('css3columns',$css3columns);
$_SESSION['css3columns'] = $css3columns;
$settings->set('csspatch',$csspatch);
$_SESSION['csspatch'] = $csspatch;
$settings->set('cursors',$cursors);
$_SESSION['cursors'] = $cursors;
$settings->set('dhtml',$dhtml);
$_SESSION['dhtml'] = $dhtml;
$settings->set('dtd',$dtd);
$_SESSION['dtd'] = $dtd;
$settings->set('initialfocus',$initialfocus);
$_SESSION['initialfocus'] = $initialfocus;
$settings->set('keyboardlayout',$keyboardlayout);
$_SESSION['keyboardlayout'] = $keyboardlayout;
$settings->set('mime',$mime);
$_SESSION['mime'] = $mime;
$settings->set('pagination',$pagination);
$_SESSION['pagination'] = $pagination;
$settings->set('personality',$personality);
$_SESSION['personality'] = $personality;
$settings->set('powerkeys',$powerkeys);
$_SESSION['powerkeys'] = $powerkeys;
$settings->set('scrollbars',$scrollbars);
$_SESSION['scrollbars'] = $scrollbars;
$settings->set('sidebar',$sidebar);
$_SESSION['sidebar'] = $sidebar;
$settings->set('sounds',$sounds);
$_SESSION['sounds'] = $sounds;
$settings->set('theme',$theme);
$_SESSION['theme'] = $theme;
$settings->set('user',$user);
$_SESSION['user'] = $user;
?>