Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Gdb system

4/5 (16 avis)

Snippet vu 5 512 fois - Téléchargée 19 fois

Contenu du snippet

GDB signifie G DataBase. C'est un mélange entre les fichier ini et MySQL. L'avantage est qu'il est possible de mettre plusieurs valeurs pour un seul Item. Ca fonctionne en DataBase > Table > Item > Values.

Source / Exemple :


alias gdb_get {
  unset %str | var %i 1 | while (%i <= $lines($1)) {
    if ($left($read($1,%i),1) == $chr(60)) {
      set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
      if (%table == $2) {
        var %o $calc(%i + 1) | while (%o <= $lines($1)) {
          if ($left($read($1,%o),1) != $chr(60)) {
            if ($gettok($read($1,%o),1,61) == $3) {
              set %str $gettok($gettok($read($1,%o),2,61),$4,28)
              break
          } }
          else { break }
    inc %o } } }
  inc %i }
  return %str
}
alias gdb_put {
  unset %antvalue | unset %table
  if (!$gdb_table_exists($1,$2)) { write $1 < $+ $2 $+ > | write $1 $chr(32) }
  if ($gdb_get($1,$2,$3,1)) {
    var %i 1 | while (%i <= $lines($1)) {
      if ($left($read($1,%i),1) == $chr(60)) {
        set %table $right($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1))) - 1))
        if ($2 == %table) {
          var %o = $calc(%i + 1) | while (%o <= $lines($1)) {
            if ($left($read($1,%o),1) != $chr(60)) {
              if ($gettok($read($1,%o),1,61) == $3) {
                set %antvalue $gdb_get($1,$2,$3,1-) | write -dl $+ %o $1
            write -il $+ %o $1 $3 $+ = $+ %antvalue $+ $chr(28) $+ $4- | break } }
      inc %o } } }
      inc %i
  } }
  else {
    var %i 1 | while (%i <= $lines($1)) {
      if ($left($read($1,%i),1) == $chr(60)) {
        set %table $right($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1))) - 1))
        if ($2 == %table) {
          write -il $+ $calc(%i + 1) $1 $3 $+ = $+ $4- | break
      } }
      inc %i
} } }
alias gdb_table_exists {
  set %tableexists $false | var %i 1 | while (%i <= $lines($1)) {
    if ($left($read($1,%i),1) == $chr(60)) {
      set %table $right($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),>,1) - 1))) - 1))
    if ($2 == %table) { set %tableexists $true | break } }
  inc %i }
  return %tableexists
}
alias gdb_create_table {
  if (!$gdb_table_exists($1,$2)) { write $1 < $+ $2 $+ > | write $1 $chr(32) }
}
alias gdb_delete_item {
  var %i 1 | while (%i <= $lines($1)) {
    if ($left($read($1,%i),1) == $chr(60)) {
      set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
      if (%table == $2) {
        var %o = $calc(%i + 1) | while (%o <= $lines($1)) {
          if ($left($read($1,%o),1) != $chr(60)) { if ($gettok($read($1,%o),1,61) == $3) {
          write -dl $+ %o $1 | break } }
          else { break }
          inc %o
    } } }
    inc %i
} }
alias gdb_delete_value {
  var %i 1 | while (%i <= $lines($1)) {
    set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
    if (%table  == $2) {
      var %o = $calc(%i + 1) | while (%o <= $lines($1)) {
        if ($left($read($1,%o),1) != $chr(60)) { if ($gettok($read($1,%o),1,61) == $3) {
            write -l $+ %o $1 $3 $+ = $+ $deltok($gdb_get($1,$2,$3,1-),$4,28)
        break } }
        else { break }
        inc %o
    } }
    inc %i
} }
alias gdb_replace_value {
  var %i 1 | while (%i <= $lines($1)) {
    set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
    if (%table  == $2) {
      var %o = $calc(%i + 1) | while (%o <= $lines($1)) {
        if ($left($read($1,%o),1) != $chr(60)) { if ($gettok($read($1,%o),1,61) == $3) {
            write -l $+ %o $1 $3 $+ = $+ $puttok($gdb_get($1,$2,$3,1-),$5-,$4,28)
        break } }
        else { break }
        inc %o
    } }
    inc %i
} }
alias gdb_delete_table {
  unset %db | var %i 1 | while (%i <= $lines($1)) {
    set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
    if (%table  == $2) {
      set %db %i | var %o = $calc(%i + 1) | while (%o <= $lines($1)) {
        if ($left($read($1,%o),1) != $chr(60)) { write -dl $+ %o $1 | dec %o }
        else { break }
        inc %o
    } }
  inc %i }
if (%db) { write -dl $+ %db $1 } }

alias gdb_tables {
  ;$gdb_tables(fichier.gdb)
  unset %table_list | var %i 1 | var %tables 0 | while (%i <= $lines($1)) {
    if ($left($read($1,%i),1) == $chr(60)) {
      inc %tables
      set %table_list $addtok(%table_list,$right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1)),32)
    }
    inc %i
  }
  return %tables %table_list
}

alias gdb_items {
  ;$gdb_items(fichier.gdb,table)
  unset %items | unset %item_list | var %i 1 | while (%i <= $lines($1)) {
    if ($left($read($1,%i),1) == $chr(60)) {
      set %table $right($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1)),$calc($len($left($read($1,%i),$calc($pos($read($1,%i),$chr(62),1) - 1))) - 1))
      if (%table == $2) {
        var %o $calc(%i + 1) | var %items 0 | unset %item_list | while (%o <= $lines($1)) { if ($left($read($1,%o),1)) {
            if ($left($read($1,%o),1) != $chr(60)) { inc %items | set %item_list $addtok(%item_list,$gettok($read($1,%o),1,61),32) }
          else { break } }
    inc %o } } }
  inc %i }
return %items %item_list }

Conclusion :


gdb_put fichier.gdb Table Item NouvelleValeur
Ajoute une valeur à l'item 'Item'.

gdb_create_table fichier.gdb NouvelleTable
Crée la table 'NouvelleTable' dans la base fichier.gdb

gdb_delete_value fichier.gdb Table Item Numero
Supprime la valeur numéro 'Numero' de l'item 'Item'

gdb_delete_item fichier.gdb Table Item
Supprime l'item 'Item' de la table 'Table'

gdb_replace_value fichier.gdb Table Item Numero NouvelleValeur
Va remplacer la valeur numéro 'Numero' de l'item 'Item' par 'NouvelleValeur'

gdb_delete_table fichier.gdb Table
Supprime la table 'Table' de la base de données fichier.gdb

$gdb_get(fichier.gdb,Table,Item,Numero)
Donne la valeur numero 'Numero' de l'item 'Item'.
Précisez 0 comme 'Numero' pour connaître le nombre de valeurs que possède 'Item'.

$gdb_table_exists(fichier.gdb,Table)
Retourne $true si 'Table' existe, sinon $false.

$gdb_tables(fichier.gdb)
Retourne un résultat en 2 parties du type : 3 Table1 Table2 Table3
3 est donc le nombre de tables que possède fichier.gdb. Ce nombre est suivi des nom de tables séparés par un $chr(32).
Donc si vous voulez le nombre de tables seulement, prenez $gettok($gdb_tables(fichier.gdb),1,32) etc...

$gdb_items(fichier.gdb,Table)
Elle fonctionne comme $gdb_tables, à savoir que le résultat est constitué de 2 parties. Le nombre d'items dans la table, et l'énumération.

C'est plus joli et mieux expliqué sur une page html, allez plutôt ici pour les commandes et fonctions http://gfaction.free.fr/GDB.htm

Je savais pas quoi faire alors j'ai fait ça jeudi soir.
Now ça va beaucoup me servir, et j'espère pour vous aussi ;)

Allez, enjoy !

×××G-FACTION×××

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.