Drupal adatbázis kezelés

Adatbázisok megadása

/sites/deafult/setting.php-n belül lehet megadni a különféle adatbázisokat

Példa két adatbázishoz való csatlakozáshoz

$databases = array (
  'default' => 
  array (
    'default' => 
    array (
      'database' => 'dev5',
      'username' => 'dev',
      'password' => 'dev11SQL',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => 'dev_',
    ),
  ),
 'jaratok' => 
  array (
    'default' => 
    array (
      'database' => 'mh_tinfo2.hu',
      'username' => 'dev',
      'password' => 'dev11SQL',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => 'dev_',
    ),
  ),
);
 
Külső adatbázis elérése nézetek keresztül
Lásd: Holding külső adatbázis modul
 
holding_kulso_adatbazis.views.inc magyarázása
function  holding_kulso_adatbazis_views_data() {
 
error_log("Loading views");
    /* Adatbázis tábla elérése */
    $data['viszonteladok']['table']['group'] = t('Viszonteladok'); // $data['adatbázis_tábla_neve']....
    $data['viszonteladok']['table']['base'] = array(
      'title' => t('Viszonteladok'),
      'help' => t('Viszonteladok adatai'),
      'database' => 'tinfo', // settings.php-n belül megadott adatbázisok közül melyiken belül érhető el!
      'weight' => -10,
    );
 
    /* Adatbázis tábla egy oszlopának elérése */
    $data['viszonteladok']['Id'] = array( // $data['adatbazis_table_neve']['adatbazis_oszlop_neve']
      'title' => t('Azonositoszam'),
      'help' => t('Azonositoszam'),
      'field' => array(
         'handler' => 'views_handler_field',
         ' click sortable' => TRUE,
      ),
      'sort' => array(
         'handler' => 'views_handler_sort',
      ),
      'filter' => array(
         'handler' => 'views_handler_filter_string',
      ),
      'argument' => array(
         'handler' => 'views_handler_argument_string',
      ),
    );
 
  return $data;
 
}
 
Adatbázis kezelése függvényekkel
 
Fontos
try {

     ... ide kerüljön az adatbáziskezelő kódok! ...

} catch (PDOException $e) {
     drupal_set_message(t('Error: %message', array('%message' => $e->getMessage())), 'error');
}

! Ha nem alkalmazzuk a try/catch-et, akkor már egy adatbázis hiba miatt is az egész Drupal oldal nem fog működni !

Adatbázis elemek lekérdezése I.
$dbi = db_select('jaratok','j')->fields('j',array('jarat'))->condition('datum',$datum,'=')->orderby('sorrend','ASC')->execute();
! Sajnos itt meg kell adni, hogy a táblázatra hogyan fogunk röviden hivatkozni. Pl: itt a példában a jaratok-ra j-ként történik a hivatkozás !

Adatbázis elemek lekérdezése II.
$dbi = db_query("SELECT jarat FROM {jaratok} WHERE datum='$datum' ORDER BY sorrend ASC")->execute();
! Ha a settings.php-ban meg van adva az előtag, ami mondjuk dev_, akkor FROM esetén dev_jaratok helyett lehet a {jaratok}-at is használni !

Adatbázis elemek módosítása
$dbi = db_update('jaratok')->fields(array('jarat'=>'222EE'))->condition('sorrend',$sorrend,'=')->execute();

Adatbázis elemek törlése
$dbi = db_delete('jaratok')->condition('sorrend',$sorrend)->execute();

Adatbázis elemek felvitele
$dbi = db_insert('jaratok')->fields(array('jarat'=>'111E','sorrend'=>$sorrend,'tulajdonsag'=>'Autóbusz, Nappal','datum'=>'2014-11-11'))->execute();
! Sajnos minden egyes elemnek értéket kell adni, így az autoinkrementes mezőknek is !

Eredmények kiiratása

foreach ($dbi as $leker) {
     $jarat = $leker->jarat;
     echo "$jarat,";
}

Disztribucio kategóriák: