Přeskočit přímo na text


Pouzitie starej existujucej databazy

Kategorie: Databázové problémy
Týká se verze: Drupal 6.x

po rokoch som sa vzdal klasickeho programovania stranok a vynasiel som drupal ;o) Vsetko je pekne, nadabil som ale na problem. Mam existujucu databazu pretekov a vysledkov (postgres) ktoru potrebujem pouzivat a doplnat.

Nasiel som dkumentaciu ktoru nejak moc nechapem ;o) a pekny zaciatok prikladu na „http://www.drupal.cz/clanky/clanky/pro-webmastery/tabulky-v-drupalu-administrace-tabulek-1-cast“ ktory ale po 2. casti nejak sokoncil. Vie mi niekto poradit nejaky tutorial alebo zrozumitelny prikaz ako sa pripojit k databaze a pracovat s nou (vypisat do tabuliek, formularov) v drupale? Idealne v cestine alebo slovencine.

Dakujem a pekbny den vsetkym.

Vlado

 

No bez studia Drupal API sa

No bez studia Drupal API sa nezaobides (http://api.drupal.org). Kombinovat PostgreSQL s MySQL vsak myslim nie jejednoduche – pokial by slo o rovnaky db system (mysql, ci postgresql), prepnut sa medzi databazami je pomerne jednoduche.

V settings.php nadefinujes obe databazy:

<?php
// The URLs are setup properly in my own file
$db_url = array(
  'default' => 'mysql://user1:pass1@localhost/db1',
  'mydb' => 'mysql://user2:pass2@localhost/db2',
);
?>

Vo svojom module nieco taketo (alebo pripadne aj v PHP v node):

<?php
// Set the database to mydab
db_set_active('mydb');
$result = db_query("SELECT * FROM {mytable} WHERE id > %d AND id < %d", 1, 10);
// Use the $result variable
while ($row = db_fetch_object($result) {
  print $row->id;
}

db_set_active();  // Set the database back to the default
?>

Co sa tyka vystupu do tabulky na to je funkcia theme_table(), a formulare na to je zasa Form API.

Ked budes mat konkretnu otazku ze comu nerozumies tak sa ozvi.

Vdaka, stara je v postgrese a

Vdaka, stara je v postgrese a kedze ho mam rad mam pod nim aj drupal. Cize len prepnutie medzi databazami. Idem skusat, ak nieco nepochopim zas si dovolim polozit otazocku ;)

Vlado

No ja som tiez preferoval

No ja som tiez preferoval dlho PostgreSQL ale po viacerych problemoch z modulmi som sa rozhodol ist cestou lahsieho odporu – cizze pouzivat MySQL. Ale to sa tykalo hlavne Drupalu 5 takze v 6 to uz nemusi byt take zle ak si dali autori modulov zalezat.

Je to asi len otazka zvyku,

Je to asi len otazka zvyku, pripojil som si dokonca dve dalsie databazy a funguje to nadherne. Obsah tabulky uz vypisem, momentalne pozeram po comsi na formatovanie a formularoch na upravu. Nemame na toto nejaky prikkad/popis? Ten anglicky manual sice luskam ale nejak moc mi to do hlavy nejde…

zkuste na lepsi vypisy do

zkuste na lepsi vypisy do tabulek modul Data.

Hmmmm… Modul som stiahol,

Hmmmm… Modul som stiahol, nainstaloval (doinstaloval aj Chaos tools), skusil podla prikladu co je na stranke s modulom ale nepodarilo sa mi vypisat absolutne nic… Viem ze som asi otravny ale nemame nejaky okomentovany realny priklad? ;o)

No formulare – treba pouzit

No formulare – treba pouzit vlastny modul v nom hook_menu a nadefinovat si v nom vlastny page callback (funkcia ktora sa zavola ak pouzivatel klikne na cestu nadefinovanu v hook_menu). Do tej funkcie napisat nieco taketo:

<?php
/**
 * Example drupal module - file name: mymodule.module (you need mymodule.info too)
 */

/**
 * Implementation of HOOK_menu().
 */
function mymodule_menu() {
  $items = array();

  // cesta bude http://mojdrupal/mypage
  $items['mypage'] = array(
    'title' => t('My form'),
    'page callback' => 'drupal_get_form', // funkcia ktora vygeneruje s pola formular
    'page arguments' => array('my_form'), // parameter 'page callback'
    'access callback' => TRUE,
  );

  // alternativa
  // cesta bude http://mojdrupal/mypage2
  $items['mypage2'] = array(
    'title' => t('My form 2'),
    'page callback' => 'my_page2', // funkcia ktora vygeneruje stranku
    'access callback' => TRUE,
  );

  return $items;
}

function my_page2() {
  $out = '';

  $out .= t('My page with some text and form...');
  $out .= drupal_get_form('my_form', $some, $param);

  return $out;
}

function my_form($form_state, $some = NULL, $param = NULL) {
  // here you can get data from database

  $form['field1'] = array(
    '#type' => 'textfield',
    '#title' => t('Field one'),
    '#default_value' => $data->field1,
  );
  $form['field2'] = array(
    '#type' => 'textarea',
    '#title' => t('Field two'),
    '#default_value' => $data->field2,
    '#cols' => 60,
    '#rows' => 5,
    '#description' => t('Description...'),
  );
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save'));

  return $form;
}

function my_form_submit($form, &$form_state) {
  // submitnute data su v $form_state['values']
  // tu ich mozes ulozit do databazy
  // ...
}
?>

Po kazdej zmene v ceste treba vymazat cache aby sa nasli zmeny – drupal si ich uklada v cache aby nemusel vsetky moduly vzdy prechadzat. Doporucujem moduly Administration Menu a Devel – potom v prvej zalozke s ikonou drupalu je vzdy moznost mazat jednotlive cache (menu cache v tomto pripade). Ak sa mazu vsetky trva to trochu dlhsie.

No tak z tohto som jelen ;)

No tak z tohto som jelen ;) Asi som moc odchovany na standardnom neobjektovom programovani. Nie je tam nejaka jednoducha cesta predania parametrov s formulara ako cez klasicke $_GET[] a $_POST[]? Chcem to spravit v ramci jednej stranky aby formular po odoslani zavolal tu istu stranku len aby sa jej predali parametre. Ak to spravne chapem ten modul by som mal mat pre kazdy formular novy? Data teda nebudu pristupne na tej stranke ktora sa zobrazi, ale len v module? Viem ze mam asi blbe otazky ale zvyk z klasickeho HTML a PHP tvrdo prevlada ;o)

Ale teraz sa mi zadarila najst pekna prezentacia http://drupal.sk/node/697 zakze vecer sa budem vzdelavat. Dufam ze nazorne s vykladom pochopim a rozbehnem sa…

tam neni ani jeden objekt:)

tam neni ani jeden objekt:) je to cele dělané přes arrays.

Drupal zabezpecuje ochranu

Drupal zabezpecuje ochranu pred podvrhnutim dat do formulara a podobne – preto ten postup – ale samozrejme mozes pouzit aj premenne $_GET $_POST ale nebude to Drupal way :).

Chcem sa to naučiť korektne

Ideálne je naučiť sa to tak aby to fungovalo korektne tak aby sa to „páčilo“ aj systému. Že to funguje cez polia som pochopil, ale myslím že znak ⇒ je odkaz na triedu. Ale bo sa mýlim? ;o)

znak „rovna-se–je-vetsi“ je

znak „rovna-se–je-vetsi“ je znak prirazovani v polích kdyz chceme prvky pojmenovat. u objektů je to „pomlčka–je-vetsi“ :)

Zas som o nieco mudrejsi

Dakujem za vysvetlenie, nejak som si to spojil s vlastnostami objektu. Ale clovek sa uci stale… ;)

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <p> <br> <b> <i> <h2> <img> <pre> <sup> <sub> <pre class="php"> <span class="php-keyword1"> <span class="php-var"> <span class="php-num"> <img class="screenshot"> <p class="beginner"> <a class="greybox"> <h3> <h4>

Více informací o možnostech formátování

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 1 uživatel a 0 hostů.

Online uživatelé