<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debugando.com &#187; POO</title>
	<atom:link href="http://www.debugando.com/tag/poo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Criando um Data Grid com POO e PHP5</title>
		<link>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/</link>
		<comments>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:18:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Data Grid]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=649</guid>
		<description><![CDATA[


Um data grid nada mais é do que a apresentação de dados em forma de tabela (lembra das &#60;table&#62;&#60;/table&#62;? Algo assim). Cada conjunto de registros é mostrado em uma linha, e o data grid pode ter funcionalidades de ordenação dos dados e opções para sua edição ou exclusão.
Classe Data Grid PHP
Com esta simples classe é [...]]]></description>
			<content:encoded><![CDATA[<p>Um data grid nada mais é do que a apresentação de dados em forma de tabela (lembra das &lt;table&gt;&lt;/table&gt;? Algo assim). Cada conjunto de registros é mostrado em uma linha, e o data grid pode ter funcionalidades de ordenação dos dados e opções para sua edição ou exclusão.</p>
<h4><strong>Classe Data Grid PHP</strong></h4>
<p>Com esta simples classe é possível criar um data grid a partir de um array com os dados que queremos apresentar na tabela. É simples criar e configurar e, com alguns comandos avançados, é possível alterar o seu comportamento para que seja possível implementar as necessidades habituais em uma estrutura desse tipo.</p>
<p>Essa classe foi criada com POO (Programação Orientada a Objetos) e características que estão disponíveis somente a partir do PHP5. Ela pode ser baixada <a class="ext" href="http://www.phpclasses.org/browse/package/5476.html">clicando aqui</a>.</p>
<p>Vamos começar a ver como funciona a classe utilizando um exemplo simples e inserindo funcionalidades no decorrer do artigo, para deixar nosso exemplo mais robusto.</p>
<p>Para começar é necessário inserir a classe nos scripts PHP antes de utilizá-la.</p>
<div class="codigo">
<pre><em><code><span class="com">//incluimos a classe</span><span class="pln">

</span><span class="kwd">require</span><span class="pln"> </span><span class="str">'DataGrid.php'</span><span class="pun">;</span></code></em></pre>
</div>
<p>Agora temos que criar um Array com os dados que serão apresentados no Data Grid. Será um array associativo, duas dimensões, onde a primeira, o array principal, receberá todos os registros a serem mostrados no data Grid, e na segunda estão cada um dos registros definidos como um array associativo.</p>
<p>Agora construímos o array com um algumas informações, mais adiante veremos como construir esse array através de uma consulta ao banco de dados.</p>
<div class="codigo">
<pre><em><code><span class="com">//criamos o array com os dados a serem apresentados no Data Grid</span><span class="pln">

$alunos </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">(</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Pepe Perez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"María Suarez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática avançada"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Roberto Soriano"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Sistemas operacionais"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Alberto Rodriguez"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Inglés técnico"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Julia Marcos"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Sociologia"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">3</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Socorro Rozas"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">),</span><span class="pln">

array</span><span class="pun">(</span><span class="str">"id"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">11</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nome"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Pablo Reñones"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"curso"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">"Informática básica"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"nivel"</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln">

</span><span class="pun">);</span></code></em></pre>
</div>
<p>Agora, antes de continuarmos com a construção da estrutura, temos que criar alguns estilos CSS para podermos melhorar o aspecto do Data Grid</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;</span><span class="tag">style</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">.</span><span class="pln">linhaI</span><span class="pun">{</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="com">#ffffcc;}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">linhaP</span><span class="pun">{</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="com">#ffcc99;}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">fdg_sortable </span><span class="pun">{</span><span class="pln">cursor</span><span class="pun">:</span><span class="pln">pointer</span><span class="pun">;</span><span class="pln">text</span><span class="pun">-</span><span class="pln">decoration</span><span class="pun">:</span><span class="pln">underline</span><span class="pun">;</span><span class="pln">color</span><span class="pun">:</span><span class="com">#00c;}</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="tag">style</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Foram criadas três classes CSS, com seus respectivos estilos. As classes &#8220;linhaI&#8221; (linha ímpar) e &#8220;linhaP&#8221; (linha par) aplicaram estilo às linhas do Data Grid e a classe &#8220;fdg_sortable&#8221; é responsável por estilizar os títulos de cada coluna do Data Grid.</p>
<p>Vamos criar o data grid a partir dos dados que temos no array.</p>
<div class="codigo">
<pre><em><code><span class="com">//instanciamos o objeto data grid, passando como parâmetro o array anterior</span><span class="pln">

Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">

</span><span class="com">//VAMOS LANÇANDO DIVERSOS MÉTODOS SOBRE O OBJETO INSTANCIADO</span><span class="pln">

</span><span class="com">//atributos gerais para a tabela</span><span class="pln">

</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))

//permitimos que hajam características de ordenação

-&gt;enableSorting(true)

//fazemos um setup das colunas do data grid, indicando o valor que será mostrado na primeira linha do data grid

-&gt;setup(array(

'</span><span class="pln">id</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">ID</span><span class="str">'),

'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),

'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),

'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">')

))

//definimos os estilos para as linhas ímpares

-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')

//definimos os estilos para as linhas pares

-&gt;setAlterRowClass('</span><span class="pln">linhasP</span><span class="str">')

//chamamos o método que construirá o data grid

-&gt;render();</span></code></em></pre>
</div>
<p>Todas as linhas foram comentadas para que o entendimento se torne mais simples.</p>
<p>Agora vejamos como inserir ou apagar coisas do data grid, para personalizá-lo. Faremos algumas coisas como:</p>
<ol>
<li>Vamos ocultar o &#8220;ID&#8221; do array associativo, para que não seja mostrado.</li>
<li>No campo de nível do cursos, vamos mostrar o nível com alguns asteriscos usando uma função que converterá os números em uma cadeia de asteriscos.</li>
<li>Vamos coluna no data grid, que aparecerá antes de qualquer outra, para mostrar um contador que indicará a quantidade de registros apresentados.</li>
</ol>
<p>Destas três coisas, a mais complicada é fazer um modelo para alterar a forma como é mostrado um campo. Para começar, precisaremos de uma função que devolva o dado que se quer mostrar, com o formato desejado.</p>
<div class="codigo">
<pre><em><code><span class="kwd">function</span><span class="pln"> nivel_estrelas</span><span class="pun">(</span><span class="pln">$num</span><span class="pun">){</span><span class="pln">

$estrelas </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln"> $i</span><span class="pun">&lt;</span><span class="pln">$num</span><span class="pun">;</span><span class="pln"> $i</span><span class="pun">++){</span><span class="pln">

$estrelas </span><span class="pun">.=</span><span class="pln"> </span><span class="str">"*"</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">return</span><span class="pln"> $estrelas</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span></code></em></pre>
</div>
<p>Utilizaremos essa função para atribuir como &#8220;template&#8221; para o campo nível de curso.</p>
<p>Vamos agora ao código utilizado para implementar todas as funcionalidades citadas no data grid:</p>
<div class="codigo">
<pre><em><code><span class="com">//OCULTAR UM CAMPO NO DATA GRID</span><span class="pln">

</span><span class="com">//COLOCAR UMA FUNÇÂO PARA MOSTRAR UM CAMPO</span><span class="pln">

</span><span class="com">//COLOCAR UM CAMPO ANTES DAS COLUNAS DO ARRAY DO DATA GRID</span><span class="pln">

Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">

</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))

-&gt;enableSorting(true)

//fazemos com que o campo "id" do array associativo não seja mostrado

-&gt;removeColumn('</span><span class="pln">id</span><span class="str">')

-&gt;setup(array(

'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),

'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),

//utilizamos a função template para mostrar o nivel do curso com umas estrelas

'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">', '</span><span class="pln">cellTemplate</span><span class="str">' =&gt; '</span><span class="pun">[[</span><span class="pln">nivel_estrelas</span><span class="pun">:%</span><span class="pln">data</span><span class="pun">%]]</span><span class="str">')

))

//inserimos uma coluna em todos os registros do data grid(a primeira coluna será esta)

//nesta coluna mostramos um contador de registros

-&gt;addColumnBefore('</span><span class="pln">Contador</span><span class="str">', '</span><span class="pun">%</span><span class="pln">counter</span><span class="pun">%</span><span class="pln">.</span><span class="str">', '</span><span class="pln">Num</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">right</span><span class="str">'))

//definimos a partir de que número será iniciado o contador

-&gt;setStartingCounter(1)

-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')

-&gt;setAlterRowClass('</span><span class="pln">linhaP</span><span class="str">')

-&gt;render();</span></code></em></pre>
</div>
<p>Novamente as linhas foram comentadas para facilitar o entendimento. Chamo a atenção sobre a linha que faz uso da função anterior como um template para um campo.</p>
<div class="codigo">
<pre><em><code><span class="str">'nivel'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'header'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'Nivel curso'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'cellTemplate'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'[[nivel_estrelas:%data%]]'</span><span class="pun">)</span></code></em></pre>
</div>
<p>Isto faz com que o campo &#8220;nivel&#8221;, quando for mostrado em linhas distintas do data grid, chame a função nivel_estrelas(), passando como parâmetro %data%, que é o valor que tem cada um dos registros do array associativo, no campo &#8220;nível&#8221;.</p>
<p>Por último vamos ver outro exemplo, um pouco mais desenvolvido, para mostrar os dados do mesmo array. Neste caso vamos simplesmente mostrar uma coluna adicional ao final de cada registro do data grid, onde iremos inserir uns links para editar e/ou apagar o registro atual.</p>
<div class="codigo">
<pre><em><code><span class="com">//PARA COLOCAR UM BOTÃO PARA EDITAR OU APAGAR</span><span class="pln">
Fete_ViewControl_DataGrid</span><span class="pun">::</span><span class="pln">getInstance</span><span class="pun">(</span><span class="pln">$alunos</span><span class="pun">)</span><span class="pln">
</span><span class="pun">-&gt;</span><span class="pln">setGridAttributes</span><span class="pun">(</span><span class="pln">array</span><span class="pun">(</span><span class="str">'cellspacing'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'3?, '</span><span class="pln">cellpadding</span><span class="str">' =&gt; '</span><span class="lit">4</span><span class="pun">?,</span><span class="pln"> </span><span class="str">'border'</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'0?))
-&gt;enableSorting(true)
-&gt;removeColumn('</span><span class="pln">id</span><span class="str">')
-&gt;setup(array(
'</span><span class="pln">nome</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Nome</span><span class="str">'),
'</span><span class="pln">curso</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="pln">Curso</span><span class="str">'),
'</span><span class="pln">nivel</span><span class="str">' =&gt; array('</span><span class="pln">header</span><span class="str">' =&gt; '</span><span class="typ">Nivel</span><span class="pln"> curso</span><span class="str">', '</span><span class="pln">cellTemplate</span><span class="str">' =&gt; '</span><span class="pun">[[</span><span class="pln">nivel_estrelas</span><span class="pun">:%</span><span class="pln">data</span><span class="pun">%]]</span><span class="str">')
))
-&gt;addColumnBefore('</span><span class="pln">Contador</span><span class="str">', '</span><span class="pun">%</span><span class="pln">counter</span><span class="pun">%</span><span class="pln">.</span><span class="str">', '</span><span class="pln">Num</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">right</span><span class="str">'))
//agora mostro um campo depois de cada elelemto, com links para editar ou apagar o registro
//no interior deste campo utilizo $id$ para enviar o valor "id" do array
-&gt;addColumnAfter('</span><span class="pln">actions</span><span class="str">', '</span><span class="pun">&lt;</span><span class="pln">a href</span><span class="pun">=</span><span class="str">"exemplo3.php?editar=$id$"</span><span class="pun">&gt;</span><span class="typ">Editar</span><span class="pun">&lt;</span><span class="str">/a&gt; ?
&lt;a href="exemplo3.php?apagar=$id$" onclick="return confirm('Está certo que quer apagar $nome$?')"&gt;Apagar&lt;/</span><span class="pln">a</span><span class="pun">&gt;</span><span class="str">', '</span><span class="pln">Actions</span><span class="str">', array('</span><span class="pln">align</span><span class="str">' =&gt; '</span><span class="pln">center</span><span class="str">'))
-&gt;setStartingCounter(1)
-&gt;setRowClass('</span><span class="pln">linhaI</span><span class="str">')
-&gt;setAlterRowClass('</span><span class="pln">linhaP</span><span class="str">')
-&gt;render();</span></code></em></pre>
</div>
<p>Neste exemplo apenas inserimos uma linha de código para fazer uma chamada ao método addColumnAfter(), que serve para inserir uma coluna depois das colunas que formamos com o array.</p>
<div class="codigo">
<pre><em><code><span class="pun">-&gt;</span><span class="pln">addColumnAfter</span><span class="pun">(</span><span class="str">'actions'</span><span class="pun">,</span><span class="pln">
</span><span class="str">'&lt;a href="exemplo3.php?editar=$id$"&gt;Editar&lt;/a&gt; ? &lt;a
href="exemplo3.php?apagar=$id$" onclick="return confirm('</span><span class="typ">Est</span><span class="pun">á</span><span class="pln"> certo que
quer apagar $nome$</span><span class="pun">?</span><span class="str">')"&gt;Apagar&lt;/a&gt;'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Actions'</span><span class="pun">,</span><span class="pln"> array</span><span class="pun">(</span><span class="str">'align'</span><span class="pln">
</span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">'center'</span><span class="pun">))</span></code></em></pre>
</div>
<p>Neste caso simplesmente temos que indicar como parâmetro a addColumnAfter() dois dados: o primeiro para especificar um título para a coluna e o segundo para especificar o seu conteúdo. O conteúdo dessa coluna, neste caso, são os links para editar e apagar, onde são utilizadas urls que enviam os dados por GET, que é o identificador do registro.</p>
<h4><strong>Montando o data grid a partir de um banco de dados</strong></h4>
<p>Só falta agora falar sobre como extrair os dados de uma base de dados para fazer o array de elementos que será utilizado na montagem do data grid.</p>
<p>No exemplo que acompanha a classe data_grid há um código para extrair a informação do MySQL, como pode ser visto nas linhas abaixo.</p>
<div class="codigo">
<pre><em><code><span class="pln">$users </span><span class="pun">=</span><span class="pln"> array</span><span class="pun">();</span><span class="pln">

$result </span><span class="pun">=</span><span class="pln"> mysql_query</span><span class="pun">(</span><span class="str">"SELECT * FROM user"</span><span class="pun">,</span><span class="pln"> $dbLinkId</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$row </span><span class="pun">=</span><span class="pln"> mysql_fetch_assoc</span><span class="pun">(</span><span class="pln">$result</span><span class="pun">))</span><span class="pln">

</span><span class="pun">{</span><span class="pln">

$users</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> $row</span><span class="pun">;</span><span class="pln">

</span><span class="pun">}</span></code></em></pre>
</div>
<p>Como se pode ver, primeiro se cria um array e logo se faz um looping pelos resultados da consulta. Cada um dos elementos retornados pela consulta será introduzido no array criado anteriormente e para ele assinalamos o array associativo que nos devolverá mysql_fetch_assoc() desse primeiro array.</p>
<p>Bom, pessoal, espero que esse artigo possa ser útil a vocês. Clique abaixo para poder fazer o download da classe e de um exemplo.<br />
<strong><br />
<a href="http://www.jlamim.com.br/downloads/php_datagrid.zip">Clique aqui para baixar a classe data grid junto com um exemplo</a></strong></p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/13951/php/criando_um_data_grid_com_poo_e_php5/" target="_blank">Imasters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/criando-um-data-grid-com-poo-e-php5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

