Jump to content


Photo

Storing and accessing CONSTANTS in a database


  • Please log in to reply
1 reply to this topic

#1 maexus

maexus
  • Members
  • PipPipPip
  • Advanced Member
  • 191 posts

Posted 27 March 2006 - 03:15 AM

This used to work before but when I rewrote it, it doesn't..

My userlevels are stored as constants

//User Levels
define('ADMIN',        4);
define('MOD',        3);
define('USER',        2);
define('GUEST',        1);
define('BANNED',    0);

My registration script stores these userlevel titles as a string to access later on during login and page security. Before I could say..

$results = mysql_query('some query');
$row = mysql_fetch_assoc($results);

echo $row['userlevel'];

That should output like USER which is a constant so it really outputs 2 into the script. That's what it used to do but now it outputs USER, which is no good. I have to end up using

$user['level'] = constant($row['userlevel']);

Now this works but it's annoying because I never had to do this before... My question is, what is the best way to store a constant name in a DB then spit the value back out, not as a string, but as something the PHP parsing will automaticly parse as a constant?

Sorry if this is confusing.

#2 Guest_footballkid4_*

Guest_footballkid4_*
  • Guests

Posted 27 March 2006 - 05:06 AM

If you really wanted to, you could store:
define( "MOD" , 3 );
In the DB, and then run eval() when you pull things from the DB...but that's not the best way to do it.

You can store the information like this: MOD|3

Then your script would look similar to:
<?php
$query = "queryhere";
$result = mysql_fetch_array( $query ) or die( mysql_error() );
while ( $row = mysql_fetch_array( $result ) )
{
  $levels = explode( "|" , $row['userlevel'] );
  define( $levels[0] , $levels[1] );
}
?>





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users