Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] Przekazywanie obiektów itp.
Forum PHP.pl > Forum > PHP
scanner
Jak skorzystać z AdoDB w Smarty wykorzystując modułowość Smartiego?

Mam następujące pliki:
[php:1:fc665c0fa4]
<?php
// --- index.php ---
// (...)
$objDBConn = &ADONewConnection($dbms);
$objDBConn->Connect($dbhost, $dbuser, $dbpasswd, $dbname);
// (..)
$objSmarty->assign( 'objDBConn', $objDBConn );
$output = $objSmarty->fetch( 'index.tpl' );
echo $output;
?>
[/php:1:fc665c0fa4]
Kod
{* Smarty *}

{* --- index.tpl --- *}

{include file="show_news.tpl"}

Kod
{* Smarty *}

{* --- show_news.tpl --- *}

{include_php file="_includes/show_news.php"}

{section name="news" loop=$newsData}

{* (...) *}

{/section}

[php:1:fc665c0fa4]
<?php
// --- show_news.php ---
// (...)
$objNewsRecordset = $this->objDBConn->Execute($strSqlQuery);
?>
[/php:1:fc665c0fa4]

Dostaję w wyniku:
Cytat
Fatal error: Call to a member function Execute() on a non-object in D:...show_news.php on line...

I teraz mam pytanie - co robię źle, że nie mam dostępu do obiektu AdoDB z pliku show_news.php??
itsme
ja mialem wczotaj ten sam problem i Seth usdzielił mi pomocy
oto co winno być

[php:1:2bf68f0feb]<?php

// --- show_news.php ---
// (...)
global $objDBConn;
$objNewsRecordset = $this->objDBConn->Execute($strSqlQuery);

?>[/php:1:2bf68f0feb]

i po kłopocie ...
@scanner widze ze idziemy tym samym tempem :-)
DeyV
1. zamiast:
$output = $objSmarty->fetch( 'index.tpl' );
echo $output;

$objSmarty->display( 'index.tpl' );


2. Po co przerzucać na smarty zabawę z rekordami? Czy nie wymagamy wtedy zbyt dużo od designera?
Ja robię to tak:
[php:1:c5b1163dd4]<?php
$arrData = $this->objDBConn->GetAll( $strSqlQuery );
$objSmarty->assign_by_ref( "arrData", $arrData);
//lub $objSmarty->assign( "arrData", &$arrData); (daje to chyba ten sam efekt)
?>[/php:1:c5b1163dd4]
scanner
Zamiast [php:1:ee9393b5c5]<?php
$arrData = $this->objDBConn->GetAll( $strSqlQuery );
?>[/php:1:ee9393b5c5]
Powinno być:
[php:1:ee9393b5c5]<?php
$arrData = $objDBConn->GetAll( $strSqlQuery );
?>[/php:1:ee9393b5c5]

Pozatym niby działa, tylko, że wywołując w ten sposób zapytanie i sprawdzając:
[php:1:ee9393b5c5]<?php
var_dump( $arrData );
?>[/php:1:ee9393b5c5]

Otrzymuję tablicę pustą - a zapytanie wywołane z PhpMyAdmin zwraca dobre wyniki.
Co znowu spieprzyłem? Bo na logikę, wszystko musi działać...

@itsme: ja teraz nadrabiam zaległości urlopowe - niedługo Cię przegonię, hehe smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.