Pagina 1 van 1

Scripts in databasevelden

Geplaatst: 09 mei 2004, 14:25
door Hans Kamp
Ik zat te denken of het soms zinvol is om scripts in een database-veld te stoppen. Bijv. als ik in een RPG MOD een serie items heb die ik aantrek of draag. Wat moet er dan bij een bepaald item gebeuren?

Bijv.

Code: Selecteer alles

CREATE TABLE phpbb_rpg_item ( 
  name varchar(255) NOT NULL default '',
  onEquip longtext NOT NULL default '',
  isUnequippable longtext NOT NULL default'',
  ...
);

INSERT INTO phpbb_rpg_item VALUES ('Short Sword', '
  // $chardata bevat karaktergegevens
  $chardata['phys_min_damage'] = $min_damage;
  $chardata['phys_max_damage'] = $max_damage;
  update_char_data($chardata);
',
'item_is_cursed()'); 

En dan ergens in een PHP-script:

Code: Selecteer alles

// equip weapon
$sql = "select onEquip from phpbb_rpg_item where name = $weapon_name"; 

if( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Could not query inventory data', '', __LINE__, __FILE__, $sql); 
} 
         
$row = $db->sql_fetchrow($result); 

eval($row['onEquip']);

Code: Selecteer alles

// try to unequip
$sql = "select isUnequippable from phpbb_rpg_item where name = $weapon_name"; 

if( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Could not query inventory data', '', __LINE__, __FILE__, $sql); 
} 
         
$row = $db->sql_fetchrow($result); 

if (!eval($row['isUnequippable']))
{
  echo 'Not possible to unequip';
}
Is het zinvol om zoiets te schrijven? Het resultaat zou moeten zijn dat de minimum en maximum damage van het karakter wordt aangepast omdat er een ander item, in dit geval het item met de naam $weapon_name.

Geplaatst: 04 jun 2004, 15:32
door Witch hazel
Het lijkt me niet zonvol om scripts in een database te plaatsen. Hiervoor kun je een bestand maken genaamd functies. Dit is een bestand waar je veel terug komende handelingen in verwerkt. Elke pagina waar je de handeling dan nodig hebt begin je met:

Include ("functies.php");

Meer over de syntax function kun je lezen op http://www.php.net

Hoop hiermee je vraag te hebben beantwoord.