Jump to content


Bira_UFV

Member Since 14/03/2007
Offline Last Active 26/08/2007, 16:17
-----

Topics I've Started

Integrando O Smarty Com O Xajax E O Adodb

24/08/2007, 20:42

Olá pessoal, meu nome é Ubirajara e estou terminando o curso de Ciencia da Computação na UFV.
Estou desenvolvendo uma aplicação de sistema de informação geográfica pra web , pra uma entidade ligada a universidade.

Resolvi utilizar o padrão MVC e para isso estou pensando em construir um mini-framework utilizando SMARTY + XAJAX + ADODB.
Já fiz alguns projetos com Smarty e Adodb e mais recentemente Xajax e Adodb, então parei e pensei, porque não usar os 3 juntos( Smarty, Xajax, Adodb )

Por enquanto ainda estou trabalhando no framework MVC que utilizará como base o trio acima, mas já vou adiantando como fazer o Xajax e o Smarty e o Adodb funcionarem juntos

Para este pequeno tutorial, fiz o seguinte

Criei uma pasta com o nome "teste" e dentro dela coloquei o Smarty2.6.18, Xajax0.5 e Adodb501

Criando a estrutura de diretórios abaixo

teste
| adodb
|
| xajax
| | xajax_core ...
|
| smarty
| | libs
| | templates ...

Agora o código:

Primeiro só Smarty + Xajax

Arquivo teste.php
<?phpdefine('SMARTY_DIR','smarty/libs/');require_once(SMARTY_DIR.'Smarty.class.php');require_once( 'xajax/xajax_core/xajax.inc.php' );$xajax = new xajax();function myFunction(){    $objResponse = new xajaxResponse();        $objResponse->assign("SomeElementId", "innerHTML", 'Xajax + Smarty');        return $objResponse;}$xajax->registerFunction("myFunction");$xajax->processRequest();$smarty = new Smarty;$smarty->template_dir = 'smarty/templates/';$smarty->compile_dir = 'smarty/templates_c/';$smarty->config_dir = 'smarty/configs/';$smarty->cache_dir = 'smarty/cache/';$smarty->caching = true;$smarty->assign('name','Smarty');$smarty->assign('xajax_javascript', $xajax->getJavascript('xajax/'));$smarty->display('index.tpl');?>

Arquivo index.tlp
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>{$name}</title>{$xajax_javascript}</head><body>{$name}<br /><br /><div id="SomeElementId"></div><br /><br /><input value="Xajax" type="button" onclick="xajax_myFunction();" /></body></html>

Agora é só colocar o Adodb pra funcionar, e para isso é só fazer o seguinte.

Arquivo teste.php
require_once( 'adodb/adodb.inc.php' );

$xajax = new xajax();

function myFunction()
{

$conn = &ADONewConnection( 'Oci8' );

$conn->PConnect( 192.0.0.1, 'user', 'pws', 'oraSID' );

$query = "select NOME from USUARIOS where ID = 0 ";

$recordSet = &$conn->Execute( $query );

if( !$recordSet->EOF ) {
$var = $recordSet->fields['NOMEUSU'];
} else {
$var = ''Usuario Inexistente;
}


$objResponse = new xajaxResponse();

$objResponse->assign("SomeElementId", "innerHTML", $var);

return $objResponse;
}

$xajax->registerFunction("myFunction");

$xajax->processRequest();

$smarty = new Smarty;

$smarty->template_dir = 'smarty/templates/';
$smarty->compile_dir = 'smarty/templates_c/';
$smarty->config_dir = 'smarty/configs/';
$smarty->cache_dir = 'smarty/cache/';

$smarty->caching = true;

$smarty->assign('name','Smarty');

$smarty->assign('xajax_javascript', $xajax->getJavascript('xajax/'));

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

?> _linenums:0'><?phpdefine('SMARTY_DIR','smarty/libs/');require_once(SMARTY_DIR.'Smarty.class.php');require_once( 'xajax/xajax_core/xajax.inc.php' );<strong class='bbc'>require_once( 'adodb/adodb.inc.php' );</strong>$xajax = new xajax();function myFunction(){ <strong class='bbc'>$conn = &ADONewConnection( 'Oci8' ); $conn->PConnect( 192.0.0.1, 'user', 'pws', 'oraSID' ); $query = "select NOME from USUARIOS where ID = 0 "; $recordSet = &$conn->Execute( $query ); if( !$recordSet->EOF ) { $var = $recordSet->fields['NOMEUSU']; } else { $var = ''Usuario Inexistente; }</strong> $objResponse = new xajaxResponse(); $objResponse->assign("SomeElementId", "innerHTML", <strong class='bbc'>$var</strong>); return $objResponse;}$xajax->registerFunction("myFunction");$xajax->processRequest();$smarty = new Smarty;$smarty->template_dir = 'smarty/templates/';$smarty->compile_dir = 'smarty/templates_c/';$smarty->config_dir = 'smarty/configs/';$smarty->cache_dir = 'smarty/cache/';$smarty->caching = true;$smarty->assign('name','Smarty');$smarty->assign('xajax_javascript', $xajax->getJavascript('xajax/'));$smarty->display('index.tpl');?>


Por enquanto é isso.
Assim que tiver avanço no framework, estarei postando mais.

Abraços

Problema Para Carregar Um Combobox No Ie, Via Xajax

14/03/2007, 11:07

Ae galera, primeiramente gostaria de me apresentar.
Meu nome é Ubirajara e faço ciência da computação na UFV, desenvolvo sistemas em php a um tempo e estou desenvolvendo meu primeiro sistema que utiliza a(s) tecnologia(s) AJAX e para isso estou utilizando a biblioteca XAJAX.

O sistema ja tem bastante coisa funcionado, mas estou com um problema quanto a caregar um combobox via xajax no IE (no firefox esta funcionando)

Meu código está assim

Arquivo ebacuri.php

[codebox]
<?php
session_start();

require_once( 'xajax/xajax.inc.php' );
require_once( 'ebacurifuncoes.php' );

$xajax = new xajax();

$xajax->registerFunction( 'exibe' );

$xajax->statusMessagesOn();
$xajax->debugOn();
$xajax->processRequests();

if( isset( $_SESSION['nomeusu'] ) and isset( $_SESSION['tipousu'] )){

...

<select name="cbxlancenglob" id="cbxlancenglob" tabindex="23" ></select>

...

[/codebox]

arquivo ebacurifuncoes.php
[codebox]
<?php

require_once( 'adodb/adodb.inc.php' );
require_once( 'xajax/xajax.inc.php' );
require_once( 'classes/mystring.php' );
require_once( 'funcoes.php' );
require_once( 'conexao.php' );

function exibe()
{

$objResponse = new xajaxResponse();

$objResponse->addScript( 'document.frmNBCI.edtnbci.focus();' );
$objResponse->addAssign("cbxlancenglob", "innerHTML", optionSN() );
return $objResponse;
}

function optionSN()
{
$resposta = new MyString();
$resposta->append( '<OPTION value="#" > </OPTION>' );
$resposta->append( '<OPTION value="S" > SIM </OPTION>' );
$resposta->append( '<OPTION value="N" > NÃO </OPTION>' );
return $resposta->toString();
}

...

[/codebox]

Estou com o debug ativado como voces podem ver e a resposta do aparentemente esta correta
O mais engraçado é que na pagina de pesquisa uso algo similar para mostar os resultados das pesquisas mas o metodo faz um innerHTML em um div e carrega um lista.

Alguem sabe o porque disso? e como se resolve? Será bug da biblioteca XAJAX?

IPB Skin By Virteq