Skocz do zawartości

Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zdjęcie

obiekt polaczenia z baza danych


  • Zaloguj siÄ™, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1
mosilver

mosilver

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 162 postów
  • Strona www:zobacz
  • LokalizacjaOpole, PoznaÅ„, Kamienna Góra
witam, chcialbym w pewnym miejscu templatki polaczyc sie z baza danych, wyciagnac i wyswietlic liste jakichs danych, oczywiscie chcialbym tu skorzystac z gotowych obiektow, metod systemu polaczenia do bazy

przygladajac sie fragmentowi jakiejs templatki:

// Get target URL
		if ($this->method == 'GET')
		{
			$objNextPage = $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?")
										  ->limit(1)
										  ->execute($this->jumpTo);

			if ($objNextPage->numRows)
			{
				$this->Template->action = $this->generateFrontendUrl($objNextPage->fetchAssoc());
			}
		}

		return $this->Template->parse();
	}

$objNextPage = $this->Database->prepare("SELECT id, alias FROM tl_page WHERE id=?") metoda prepare sluzy do zapodania kodu sql

$objNextPage->numRows - w numRows zakladam mamy ilosc wynikow

$objNextPage->fetchAssoc() - z tego nie bardzo wiem jak skorzystac, jest to zapewne tablica wynikow ?


jak wyswietlic liste otrzymanych wynikow / przypisac do tradycyjnych tablic w przypadku kilku zwracanych wierszy (imie, nazwisko, wiek ...

do

imiona[0], imiona[1], ...
nazwiska[0], nazwiska[1], ...

) ?
  • 0
www.it-inspire.pl - from love to design -

#2
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Najlepiej to zrobić tak:
<span class="syntaxdefault">$arrCds </span><span class="syntaxkeyword">= array();</span><span class="syntaxcomment">// Fetch data from the database</span><span class="syntaxdefault">$objCds </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Database</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">execute</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"SELECT * FROM tl_cds ORDER BY title"</span><span class="syntaxkeyword">);</span><span class="syntaxcomment">// Put all CDs into array</span><span class="syntaxdefault">while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$objCds</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">next</span><span class="syntaxkeyword">()){</span><span class="syntaxdefault">    $arrCds</span><span class="syntaxkeyword">[]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> array    </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">        </span><span class="syntaxstring">'title'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $objCds</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">title</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">        </span><span class="syntaxstring">'artist'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $objCds</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">artist    </span><span class="syntaxkeyword">);}</span><span class="syntaxcomment">// Assign data to the template</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Template</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">cds </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $arrCds</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span>
A w templatce
<span class="syntaxhtml"><span class="syntaxdefault"><?php foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">cds as $cd</span><span class="syntaxkeyword">):</span><span class="syntaxdefault"> ?></span>    <h3><span class="syntaxdefault"><?php echo $cd</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'title'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></h3> - <span><span class="syntaxdefault"><?php echo $cd</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'artist'</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> ?></span></span><span class="syntaxdefault"><?php endforeach</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span></span>

  • 0

Codefog - Contao web development


#3
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Jeśli nie straszny ci język angielski to zapraszam do przeczytania tutoriala Create a custom Contao module.
  • 0

Codefog - Contao web development


#4
mosilver

mosilver

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 162 postów
  • Strona www:zobacz
  • LokalizacjaOpole, PoznaÅ„, Kamienna Góra
zrobilem jak polecales, brzmi jak najbardziej poprawnie, jednak nie dziala mi przekaz danej do templatki nawet w najprostrzej postaci:

robie to w module katalogu reader

podpinam sie pod:

protected function compile()
	{
		global $objPage;
		

// Assign data to the template
[b]$zmienna = 'wyswietl mnie!!!!!!!!!!'; 
$this->Template->zmienna = $zmienna;  [/b]
		

		$this->Template->catalog = '';
		$this->Template->referer = $this->getReferer(ENCODE_AMPERSANDS);
		$this->Template->back = $GLOBALS['TL_LANG']['MSC']['goBack'];
		$this->Template->gobackDisable = $this->catalog_goback_disable;

		$objCatalogType = $this->Database->prepare("SELECT aliasField,titleField,descriptionField,keywordsField FROM tl_catalog_types WHERE id=?")
										->execute($this->catalog);
...


a w templatce catalog full:

<?php echo "" . $this->zmienna . "aaaaaaaaa"  ?>

i wyswietla sie samo aaaaaaa

rowniez:

<pre>
      <?php print_r($this); ?>
</pre>

w strukturze nie wyswietla nigdzie tej zmiennej ???? :cry:

trzeba cos dodatkowo zadeklarowac w module katalogu ??
  • 0
www.it-inspire.pl - from love to design -

#5
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Jeżeli chcesz wyświetlić pola dane z modułu Catalog, podczas tworzenia tego modułu musisz zaznaczyć, które pola mają zostać uwzględnione we frontendzie. Następnie w templatce daj
<span class="syntaxhtml"><span class="syntaxdefault"><?php print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">entries</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> ?></span></span>
o ile dobrze pamiętam powinno ci to wyświetlić tablicę z danymi.
  • 0

Codefog - Contao web development


#6
mosilver

mosilver

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 162 postów
  • Strona www:zobacz
  • LokalizacjaOpole, PoznaÅ„, Kamienna Góra
tak zgadza sie,

wyswietla wszystko, rowniez i entries, ale nie tÄ… dodatkowa zmienna, ktora chce przekazac bezposrednio poprzez kod modulu do templatki

$zmienna = 'wyswietl mnie!!!!!!!!!!';
$this->Template->zmienna = $zmienna;


tej zmiennej nie bede mial jako pola [iteam] w liscie produktu, zreszta nie o to mi chodzi, do zmiennej wyciagne sobie zupelnie inna informacje z bazy danych, tylko nie wiem dlaczego przekaz nie dziala

obiekt templatki this nie posiada tej "zmienna"

czego dowodem jest wyswietlenie calej struktury this:
  • 0
www.it-inspire.pl - from love to design -

#7
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Spróbuj przypisanie swojej zmienne do templatki dać na samym końcu, możliwe że zostaje ona nadpisana:
<span class="syntaxdefault"></span><span class="syntaxcomment">// twoja zmienna</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Template</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">zmienna </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'zmienna'</span><span class="syntaxkeyword">;</span><span class="syntaxcomment">// ... tu jakis kod ...// a tu nastepuje nadpisanie wszystkich zmiennych w templatce</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Template</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">setData</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$objQuery</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">row</span><span class="syntaxkeyword">()); </span><span class="syntaxdefault"></span>

Problemem może być również to, że dopisujesz swoją zmienną do innej templatki. Sprawdź zmienną $strTemplate (która powinna znajdować się na początku klasy catalog readera) czy jest to ta sama, w której próbujesz wyświetlić swoje dane.
  • 0

Codefog - Contao web development


#8
mosilver

mosilver

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 162 postów
  • Strona www:zobacz
  • LokalizacjaOpole, PoznaÅ„, Kamienna Góra
no niestety, przeniesienie mojego kodu na sam koniec nic nie pomoglo, kodu typu $this->Template->setData($objQuery->row()); w templatce rowniez nie ma, ja sie poddaje :)

oparlem to na sesji i dziala, aczkolwiek zwykly przekaz zmiennej do templatki powinien dzialac, jeszcze zapewne do tego wroce i dam znac jak do czegos dojde, w kazdym razie wielkie dzieki za pomoc!!!
  • 0
www.it-inspire.pl - from love to design -

#9
Kamil

Kamil

    Contao ambassador

  • Administratorzy
  • 1 538 postów
  • Strona www:zobacz
  • LokalizacjaLidzbark Warminski
Tak jak mówię, przyczyną może być nie ten template. Ja się tak walnąłem grzebiąc w module News: tam w ModuleNewsList jest użyty mod_newslist, a do wyświetlenia pojedynczego niusa służy już inny templejt -> news_full, który jest określany w klasie News (lub ModuleNews).
  • 0

Codefog - Contao web development





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych użytkowników