Class ezSQL Written on February 15, 2010, by David Marques.
Para quem trabalha com PHP e nomeadamente com base de dados mysql, a class ezql é bastante útil.
Esta class facilita-nos na ligação à base de dados, não sendo necessário preocupar-mo-nos com o abrir e fechar da conexão, tendo funções para seleccionar apenas uma variável (valor de um campo apenas), para seleccionar apenas uma linha de um registo (vários campos do registo) ou mesmo para seleccionar vários registos. Por defeito o acesso aos dados é feito como ponteiros, mas podendo ser possível aceder como array através do parametro A_ARRAY;
Passando a explicar como funciona:
//incluimos o ez_sql como freamwork de conexão à base de dados
require_once(’ez_sql_core.php’);
require_once(’ez_sql_mysql.php’);
//criamos a variável para a conexão
$database = new ezSQL_mysql(’utilizador’,'password’,'basededados’,'localhost’);
//definirmos os charset como UTF-8, para quem usa utf-8 na base de dados
$database->query(”SET CHARACTER SET utf8″);
//exemplo de como seleccionar um valor
$nome = $database->get_var(”SELECT nome FROM clientes WHERE id = 1″);
//exemplo de como seleccionar uma linha de registos e devolver como array
$cliente = $database->get_row(”SELECT * FROM clientes WHERE id = 1″);
//exemplo de como seleccionar várias linhas e devolver como array
$clientes = $database->get_results(”SELECT * FROM clientes”);
//exemplo de como inserir um registos
$database->query(”INSERT INTO clientes (nome),(’david’)”);
//exemplo de como eliminar
$database->query(”DELETE FROM clientes WHERE id = 1″);
Para saber mias à cerca desta class podem aceder ao seguinte link
http://www.woyano.com/view/410/PHP-and-Working-with-Databases-for-the-Lazy-Sod
Read more from the PHP category. If you would like to leave a comment, click here: 2 Comments. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Gerar PDF com PHP Written on October 8, 2009, by David Marques.
Vou explicar como gerar um ficheiro pdf através de php.
É bastante simples, no meu exemplo eu vou usar a biblioteca FPFD que pode ser adiquirida no respectivo site http://www.fpdf.org
Basta copiar a pasta para o root do projecto para depois proceder ao include de um dos ficheiros presentes na mesma.
<?php
//incluimos o ficheiro fpdf.php presente na pasta do fpdf
include('fpdf/fpdf.php')
//definimos a pasta dos tipos de letra
define('FPDF_FONTPATH','fpdf/font/');
//criamos um novo objecto PDF, do tipo imagem (P), em milimetros (mm) e do tamanho A$
$pdf= new FPDF("P","mm","A4");
//definimos o título do ficheiro
$pdf->SetTitle("PDF gerado por PHP");
//definimos o assunto do ficheiro
$pdf->SetSubject("Como gerar um ficheiro pdf com PHP");
//colocamos o ponteiro na posição -1 de forma a iniciar o conteúdo
$pdf->SetY("-1");
//escrevemos no pdf
$pdf->Cell(0,5,'O meu primeiro texto',0,0,'L');
//A função Cell permite definir os seguintes parametros
//Cell(Largura, Altura, Conteúdo, Borda, Quebra de linha, Alinhamento)
//mandamos imprimir no ecrâ o pdf
$pdf->Output("Fiecheiro","I");
//podem ver alguns exemplos e respectivas funções em http://www.fpdf.org/en/tutorial/index.php
?>
Read more from the PHP category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Actionscript 3 Class preloader / loading usando o loader Written on October 3, 2009, by David Marques.
Vou explciar como criar uma class preloder para usar com o Loader de forma a simplificar o uso de um loader sempre que precisamos carregar algum conteúdo externo.
//Começamos por definir o package
package classes
{
//importamos as classes necessárias
import flash.events.ProgressEvent;
import flash.display.*;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.net.URLRequest;
import flash.events.Event;
//definimos a class
public class Preloader extends MovieClip
{
//criamos uma caixa de texto para a percentagem
public var percentagem:TextField = new TextField;
//criamos a barra de loading
public var barra:Sprite = new Sprite;
//criamos a função chamada após carregar
public var handler:Function;
//criamos o url para o conteúdo a carregar
public var url:String;
//definimos o contructor
public function Preloader(ur:String,hand:Function)
{
//definimos o stage
addEventListener(Event.ADDED_TO_STAGE, onInit);
//definimos a função chamada na resposta
handler = hand;
//definimos o url do conteúdo
url = ur;
}
//criamos a função inicial
public function onInit(e:Event) :void
{
//definirmos a escala do stage
stage.scaleMode = StageScaleMode.NO_SCALE;
//definimos o alinhamento do stage
stage.align = StageAlign.TOP_LEFT;
//definimos a posição inicial da texto da percentagem
percentagem.x = 5;
percentagem.y = 5;
//definimos a percentagem inicial a 0
percentagem.text = “0%”;
//criamos um fundo para a barra de progresso
barra.graphics.beginFill(0×990000);
barra.graphics.drawRect(0, 0, stage.stageWidth, 5);
barra.graphics.endFill();
//definimos a largura inicial
barra.width = 0;
//adicionamos a barra e a percentagem
addChild(barra);
addChild(percentagem);
//criamos o loader
var loader:Loader = new Loader();
//definimos o vento de progresso para exectura a função que actualiza a percentagem carregada
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
//definimos a função a ser chamada quando estiver completo
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler);
//mandamos carregar
loader.load( new URLRequest(url));
}
//função para actualizar a percentagem
private function onProgress(e:ProgressEvent):void
{
//dados carregados
var loaded:Number = e.target.bytesLoaded;
//total de dados
var total:Number = e.target.bytesTotal;
//percentagem
var pct:Number = loaded/total;
//definimos a percentagem na caixa de texto
percentagem.text = Math.round(pct*100)+’%';
//actualizamos a largura da barra consoante a percenytagem
barra.width = (Math.round(pct*100)*stage.stageWidth)/100;
//actualizamos a posição do texto da percentagem
percentagem.x = barra.width + 5 ;
}
}
}
//criada a class passo a explicar como funciona
//basta criar uma variável do tipo preloader com o caminho do objecto a carregar e a função a chamar após carregar
var preloader:Preloader = new Preloader(’exemplo.swf’, loaderCompleto);
//adicionar ao stage
addChild(preloader);
Read more from the Flash category. If you would like to leave a comment, click here: 2 Comments. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Google Maps – Animação a explicar o funcionamento do StreetView Written on September 25, 2009, by David Marques.
Para quem já viu os carrinhos do google que de vez em quando andam por aí com uma camara em cima a fotografar as nossas ruas e nunca percebeu muito bem para para que serve e como funciona, a google do Japão criou um video animado muito engraçado a explicar todo o processo que envolve o trabalho do StreetView do google maps, para quem não conhece, trata-se da possibilidade de visualizar-mos qualquer rua com um simples acesso á internet.
Read more from the Geral category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
AMFPHP – Remoting para flex e flash Written on September 18, 2009, by David Marques.
O AMFPHP permite fazer a comunicação entre o flash e o PHP, usando o método SOAP para trocar objectos entre si. Trata-se talvez do sistema de remoting mais usado na criação de RIAS e mesmo em alguns sites mais complexos, facilitando imenso a transição de dados e simplificando a programação dos projectos.
Vou explicar de forma simples como usar o amfphp no flash e no flex, sem entrar em grandes pormenores e ligando mais à parte pratica, para quem quiser saber mais pode visitar o site oficial.
1) Primeiro necessitamos de efectuar o download do amfphp no seguinte link;
2) De seguida procedemos à instalação do amfphp, bastando apenas copiar a pasta do mesmo para um local no projecto onde será aplicado, exemplo “projecto/includes/amfphp”;
3) Defenimos o gateway que por norma fica na própria pasta do amfphp “projecto/includes/amfphp/gateway.php”;
4) Definimos a posta dos nossos serviços, onde ficaram as classes com as respectivas funções “projecto/includes/amfphp/services/”;
5) Criamos um serviço para teste, para isso basta apenas criar uma class na pasta services, como por exemplo a class HelloWorld que se segue:
<?php
Class HelloWorld
{
function testing()
{
return ‘Olá mundo’;’
}
}
?>
6) Agora que já temos o nosso serviço criado vamos testar o mesmo, para isso basta aceder ao explorador de serviços que o amfphp nos disponibiliza no endereço http://localhost/projecto/includes/amfphp/browser/. O explorador permite chamar os serviços de forma a saber a resposta dos mesmos, muito simples.
Read more from the Flash, Flex, PHP category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Smarty – para php Written on September 9, 2009, by David Marques.
Vou falar um pouco do Smarty, uma ferramenta essencial para quem quer ter produção e qualidade na programação de projectos em php.
O Smarty é um sistema de templates que permite separar o código php do html facilitando a compreensão da estrutura e permitindo que possa existir uma pessoa responsável pelo php e outra pelo html podendo trabalhar cada um ao seu ritmo sem interferirem tarefas entre si.
O sistema trabalha com envio de variáveis para o objecto smarty, podendo tratar os dados numa ficheiro php e mostralos num ficheiro .tpl, sendo este que incorpora o html.
Para além das vantagens de estruturação e implementação de projecto, o smarty tem um sistema de cache exemplar, criando cache dos templates à medida que as páginas são visitadas a primeira vez de forma a evitar a reprodução dos mesmos e diminuindo assim o tempo espera na navegação de um site.
Isto são algumas das vantagens, mas o smarty permite desfrutar de muitas mais, facilitando a vida para quem trabalha com php
Fica aqui o site do smarty para poderem saber mais Smarty
Read more from the PHP category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Checkbox na Datagrid Written on September 4, 2009, by David Marques.
Vou explicar como colocar uma Checkbox na listagem de uma Datagrid deforma a poder seleccionar a mesma na própria listagem.
//Começamos por criar uma Datagrid simples
var lista:DataGrid = new DataGrid;
//criamos um array para as colunas
var colunas:Array = new Array;
//associamos o array como colunas á datagrid
lista.columns = colunas;
//criamos a coluna para a checkbox
var coluna:DataGridColumn = new DataGridColumn();
//definimos o campo que fornece os dados, este campo é devolvido pelo dataprovider de um arrayCollectin por exemplo
coluna.dataField = activo;
//definimos a label da coluna
coluna.headerText = “Activo”;
//definimos o itemRenderer que será um componente estendido a um Checkbox que passarei a explicar mais à frente
coluna.itemRenderer = new ClassFactory(Check);
//definimos o campo como editável de forma a poder dar acções à Checkbox
coluna.rendererIsEditor = true;
//associamos a coluna ao array colunas
colunas.push(coluna);
vou passar a explicar como criar a class do itemRenderer
package
{
//importamos as classes necessárias
import flash.events.MouseEvent;
import mx.controls.CheckBox;
import mx.core.Application;
import mx.events.FlexEvent;
import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridListData;
//definimos a class extendida à Checkbox
public class Check extends CheckBox
{
//definimos um objecto para os dados
private var _ownerData:Object;
//fazemos override á função que define os dados
override public function set data(value:Object):void
{
//verificamos se o conteúdo não vem vazio
if(value != null)
{
//definimos o conteúdo
_ownerData = value;
//verificamos se foi definido o conteúdo
if(_ownerData)
{
//definimos a respectiva linha
var col:DataGridListData = DataGridListData(listData);
//definimos se está seleccionado
selected = (_ownerData[col.dataField] == 1) ? true : false;
//mandamos executar o evento que altera a checbox
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
}
}
//fazemos um override à função que apanha os conteúdos
override public function get data():Object
{
//devolve os dados
return _ownerData;
}
//fazemos um override à função handler do click para chamar eventos de comunicação com a base de dados por exemplo
override protected function clickHandler(event:MouseEvent):void
{
//executamos a função de click na checkbox para actualizar o estado, se seleccionado ou não
super.clickHandler(event);
//verificamos se o valor é igual a 0 para actualizar na base de dados como desactivo
if(data.activo == 0)
{
//enviamos os dados para actualizar na base de dados
//para quem quiser aceder a funções da aplicação pode usar “Application.application.funcao”
}
else
{
//enviamos o estado como activo
}
}
}
}
Espero ter ajudado, para quem tiver dúvidas ou queira dar alguma sugestão estou ao dispor
Read more from the Flex category. If you would like to leave a comment, click here: 3 Comments. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Icons de bandeiras de países europeus Written on September 3, 2009, by David Marques.
- Icons bandeiras europa
Ficam aqui uns icons que são muito úteis nomeadamente para idiomas
Read more from the Design category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Calcular rendimentos com a publicidade do google Written on September 3, 2009, by David Marques.
Encontrei um artigo muito interessante para quem se está a iniciar com o google adsense e quer fazer contas em relação aos lucros que poderá ter.
O José Fernandes disponibilizou uma calculadora no seu site que permite calcular os ganhos, uma excelente ideia quanto a mim.
http://josefernandes.pt/ferramentas/calculadora-google-adsense
Read more from the Flex category. If you would like to leave a comment, click here: Comment. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.
Flash remoting – Class MyConnector para flash e amfphp Written on September 3, 2009, by David Marques.
Criei uma class bastante simples para facilitar a utilização do amfphp com flash, embora já fosse bastante simples, mas é sempre bom poupar tempo.
Para quem não conhece o amfphp pode saber mais aqui.
Para usar a class basta apenas criar um objecto de conexão como por exemplo:
public var connector:MyConnector = new MyConnector(”amfphp/gateway.php”);
Sendo depois apenas necessário chamar as funções referentes a cada class
connector.call(’nomedaclass.nomedafunção’,new Array(),handlerLoadFunction);
Explicando os parâmetros
- Nomedaclass e o nome da função unidos por ponto e do tipo string
- Caso sejam necessários enviar parâmetros, terão de ir como array
- Por fim o terceiro parâmetro é a função que recebe a resposta
* Todas as funções presentes no gateway do amfphp terão de receber um parâmetro do tipo array que corresponde ao array enviado pelo flash no pedido.
package classes
{
import flash.net.Responder;
import flash.net.NetConnection;
public class MyConnector
{
public var res:Responder;
public var gw:NetConnection;
public var back:Function;
public function MyConnector(url:String):void
{
gw = new NetConnection();
gw.connect(url);
res = new Responder(onResult, onFault);
}
public function call(action:String,parameters:Array,func:Function):void
{
back = func;
gw.call(action, res, parameters);
}
function onResult(responds:Object):void
{
back(responds);
}
function onFault(responds:Object):void
{
for(var i in responds)
{
trace(responds[i]);
}
}
}
}
Read more from the Flash category. If you would like to leave a comment, click here: 3 Comments. or stay up to date with this post via RSS, or you can
Trackback from your site.
Social Bookmark :
Technorati,
Digg,
de.licio.us,
Yahoo,
Blinkbits,
Blogmarks,
Google,
Magnolia.








