Články

Odkazy

Spřátelené weby

JoomlaDev.eu - Vše o vývoji CMS Joomla

Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress

Anketa

O jakém RS by jste chtěli více článků
 
Navigace: Úvodní strana Joomla Články Joomla a práce s databází

Joomla a práce s databází

PDF Tisk Email
Pondělí, 31 Srpen 2009 12:39
joomlalogoV dnešním článku si ukážeme vše co se týče databáze a Joomly, naučíme se jak se k databázi připojit, jak provádět dotazy na databázi a v závěru článku si řekneme jak databázi zálohovat.

 

Nejprve si tedy řekneme něco o připojení k databázi

Informace o databázi, ke které se Joomla připojuje se vždy vyplňuje při instalaci Joomly, pokud však chceme Joomlu přesunout na jiný hosting určitě se nám bude hodit umět změnit data pro připojení k DB. Konfigurační soubor configuration.php, se nachází v kořenovém adresáři Joomly. Pro připojení k databízi nás zajímají tyto proměnné:

  1.  
  2. var $dbtype = 'mysql';
  3. var $host = 'localhost';
  4. var $user = 'root';
  5. var $password = '';
  6. var $db = 'joomla';
  7. var $dbprefix = 'jos_';
 

Typ databáze zřejmě měnit nebudete ve většině případů se jedná o MySQL, host udává jméno serveru, na lokálním počítači je to localhost, user je uživatelské jméno, password heslo. Db je jméno databáze která už je vytvořena, dbprefix je předpona tabulek v databázi (např. jos_users, jos_menu,...)

Dotazy na databázi

Nyní se podíváme na pokročilejší věci, a to jak se dotazovat na databázi, získávat z ní data a používat je. Hodí se to pokud vytváříme vlastní skript, modul, komponentu, nebo jen upravujeme některé stávající.

Nejdříve si ukažme jak správně vytvářet dotazy. V minulém odstavci jsme si řekli, že prefix tabulek, je keonfigurovatelný  při instalaci, a tak skript kde by se používal prefix jos_ natvrdo by nemusel být funkční, místo něho slouží řetězec "#__" - krizek a dve podtrzitka.

Dotaz tedy může vypadat takto:

SELECT obsah.id FROM #__content AS obsah left join #__users AS uzivatel ON uzivatel.id=obsah.author LIMIT 1

Nehledejte za tím nějaký konkrétní dotaz, je to vymyšlené a slouží pouze pro ilustraci. Nyní víme jak správně psát dotazy, pojďme tedy nějaký ten dotaz poslat na Mysql server. Nejprvé musíme získat referenci na globální objekt databáze. To s provede pomocí příkazu:

$db =& JFactory::getDBO();

Pokud máme vytvořen objekt, můžeme použít funkci na položení dotazu, k tomu slouží setQuery takto

$db->setQuery('SELECT * from #__content ....');


Tato funkce má ještě mimo to tři nepovinné parametry, offset, limit a prefix tabulky z které s má vybírat. Nyní když jsme položili dotaz a byl správně položen, musíme nějak získat data. Na výběr máme z několika možností. My si však ukážeme tři nejpoužívanější.

  • loadRowList() - hodně podobný jako mysql_fetch_row, vrací seznam záznamů ve vícerozměrném poli indexovaného od 0, přistupujeme k nim klasicky přes pole, napr.:

    Array ( 
    [0] => Array ( [0] => 1 [1] => John Smith [2] => Tato emailová adresa je chráněna před spamboty, abyste ji viděli, povolte JavaScript [3] => johnsmith )
    [1] => Array ( [0] => 2 [1] => Magda Hellman [2] => Tato emailová adresa je chráněna před spamboty, abyste ji viděli, povolte JavaScript [3] => magdah )
    [2] => Array ( [0] => 3 [1] => Yvonne de Gaulle [2] => Tato emailová adresa je chráněna před spamboty, abyste ji viděli, povolte JavaScript [3] => ydegaulle )
    )
Existují i další, které vybírají pouze jeden sloupec, řádek, atd. vše je uvedeno v oficiální dokumentaci, odkaz máte výše. Další velice užitečnou funkcí je  getNumRows(), která vrací počet najitých řádků, dělá vlastně to samé jako mysql_num_rows.
Nyní si ukážeme nějaký jednoduchý příklad poskládaný z předchozích funkcí:
$query = "
SELECT name, email, username
FROM . . . "
;
$db =& JFactory::getDBO();
$db->setQuery($query);
$user=$db->loadObjectList();

foreach($user as $uzivatel){
echo 'Jmeno uzivatele:'.$uzivatel->name.' email:'.$uzivatel->email.'<br />';
}


Tímto by jsme tedy docílili, že se pod sebe vypíšou všichni uživatelé (jméno a email).

Zálohování databáze

Nyní si ještě krátce povíme o zálohování databáze. Máme tři možnosti. Buďto nám databázi průběžně zálohuje náš hosting, a my si o ni pouze v případě problémů zažádáme. Další možností je zálohovat ručně přes phpMyAdmin. Je to webové rozhraní databáze, ke kterému nám poskytne přístup naše hostingová společnost. Po přihlášení do rozhraní vybereme tlačítko vpravo - Export, poté vybereme naši databázi ze seznamu dole zaškrtneme Do souboru a necháme si vyexportovat zálohu. Poslední možností je použíkomponenty třetích stran, které to vše udělají za vás. Jen namátkou nejznámější je asi Joomla Pack, ale existují i další, mě se však zdá, že ručně je to rychlější a jistější.

 
Komentáře (2)
Vypis odhlaseni
2 Čtvrtek, 08 Duben 2010 14:40
Kalby
No takhle z hlavy asi vedet nebudu, kdyz posles cely kod muzem se na to podivat.
odhlašování
1 Čtvrtek, 08 Duben 2010 10:05
Lukas
Ahoj, diky za clanek moc mi pomohl. Jen mam problem s tim ze po pridani tohoto vypisu z DB me pokazde system odhlasi kdyz prejdu na stranku kde se data vypisuji. Nevis kde by mohl byt problem?? DIKY

Přidej Váš komentář

BoldItalicUnderlineStrikethroughSubscriptSuperscriptEmailImageHyperlinkOrdered listUnordered listQuoteCodeHyperlink to the Article by its id
Vaše jméno:
Předmět:
Komentář:

Ochrana osobních údajů, Mapa stránek,design a kód Klasdesign, Redakční systémy, rs@redakcni-systemy.com 2009
Wifi router a antény , Moje IP, Studuj FEL, Barevné kontaktní čočky