<?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>Boteco Digital &#187; PHP</title>
	<atom:link href="http://www.botecodigital.info/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.botecodigital.info</link>
	<description></description>
	<lastBuildDate>Fri, 30 Jul 2010 20:33:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Criando um CAPTCHA em PHP</title>
		<link>http://www.botecodigital.info/php/criando-um-captcha-em-php/</link>
		<comments>http://www.botecodigital.info/php/criando-um-captcha-em-php/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 20:12:11 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=946</guid>
		<description><![CDATA[Um problema comum para quem fornece um formulário de contato ou disponibiliza algum sistema de comentário em um site é o aumento de spam enviados por bots(robos) que lêem os campos do formulário e enviam as informações de spam via POST. Uma maneira muito comum de se proteger deste tipo de ataque é diferenciar se quem está enviando as informações é uma pessoa ou um bot. Isso pode ser feito criando um código que seja de fácil leitura para o [...]]]></description>
			<content:encoded><![CDATA[<p>Um problema comum para quem fornece um formulário de contato ou disponibiliza algum sistema de comentário em um site é o aumento de spam enviados por bots(robos) que lêem os campos do formulário e enviam as informações de spam via POST.</p>
<p>Uma maneira muito comum de se proteger deste tipo de ataque é diferenciar se quem está enviando as informações é uma pessoa ou um bot. Isso pode ser feito criando um código que seja de fácil leitura para o usuário humano e difícil para máquinas e pedir para o usuário digitar este código junto com as outras informações do formulário.</p>
<p>Este sistema é muito comum hoje em dia e recebe o nome de CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart ou Teste Público Totalmente Automatizado para Diferenciar Humanos de Computadores) e vamos agora apreender com fazer um simples.</p>
<p>Começaremos criando uma imagem com um fundo um pouco bagunçado, quanto mais bagunçado melhor, isso dificulta a leitura por bots.</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-948" title="fundocaptch" src="http://www.botecodigital.info/wp-content/uploads/2010/03/fundocaptch.png" alt="" width="230" height="50" /></div>
<p>O CAPTCHA vai funcionar da seguinte forma, vamos gerar um código baseado na hora do sistema e armazená-lo em uma sessão, após isso iremos criar uma imagem com o fundo que criamos acima e escrever o nosso código gerado sobre ele.</p>
<p>Vamos então aos código</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$codigoCaptcha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$codigoCaptcha</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$imagemCaptcha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecreatefrompng</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;fundocaptch.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$fonteCaptcha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imageloadfont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;anonymous.gdf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$corCaptcha</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecolorallocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$imagemCaptcha</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">255</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">imagestring</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$imagemCaptcha</span><span style="color: #339933;">,</span><span style="color: #000088;">$fonteCaptcha</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">15</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #000088;">$codigoCaptcha</span><span style="color: #339933;">,</span><span style="color: #000088;">$corCaptcha</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: image/png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">imagepng</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$imagemCaptcha</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">imagedestroy</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$imagemCaptcha</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Na linha 3 geramos nosso código “aleatório” começamos pegando o <em>timestamp</em> através da função <a href="”http://www.php.net/manual/pt_BR/function.time.php”" target="”_blank”">time</a> e aplicamos sobre ele a função <a href="http://www.php.net/manual/pt_BR/function.md5.php“" target="”_blank”">md5</a> deste código <em>md5</em> pegamos os 9 primeiros caracteres(se você quiser pode pegar mais ou menos) através da função  <a href="http://br.php.net/manual/pt_BR/function.substr.php" target="”_blank”">substr</a>.</p>
<p>Na linha 5 salvamo nosso código na sessão para que possamos compará-lo mais tarde.</p>
<p>Na linha 8 criamos uma imagem a partir da imagem de fundo que criamos.</p>
<p>Na linha 10 carregamos uma fonte através da função <a href="http://www.php.net/manual/pt_BR/function.imageloadfont.php" target="_blank"> imageloadfont</a> que carrega define a fonte que será utilizada para escrever nosso código de <strong>captcha</strong> na imagem criada na linha 8.</p>
<p>Na linha 12 utilizamos a função <a href="http://www.php.net/manual/pt_BR/function.imagecolorallocate.php" target="_blank">imagecolorallocate</a> para gerar uma cor para o código que iremos inserir na imagem.</p>
<p>Na linha 14 utilizamos a função <a href="http://www.php.net/manual/pt_BR/function.imagecolorallocate.php" target="_blank">imagestring</a> para &#8220;desenhar&#8221; o código gerado na linha 3 na imagem criada na linha 8, utilizando a fonte definida na linha 10.</p>
<p>Na linha 17 mudamos o cabeçalho do arquivo para ele ser um arquivo do tipo imagem no formato png, isso faz com que o navegador mostre a imagem e não o código binarios em forma de texto.</p>
<p>Na linha 19 enviamos a imagem gerada para o navegador. Na linha 21 desalocamos o espaço utilizado pela imagem criada.</p>
<p>Para utilizar o captcha precisamos de um formulário e dentro dele exibiremos a nossa imagem através da <em>tag</em> <strong>IMG</strong> e também precisaremos de um campo para o usuário inserir o código captcha.</p>

<div class="wp_syntax"><div class="code"><pre class="htmlstrict" style="font-family:monospace;">&lt;form action=&quot;valida.php&quot; method=&quot;post&quot;&gt;
    &lt;img src=&quot;captcha.php&quot; alt=&quot;código captcha&quot; /&gt;
&nbsp;
    &lt;label for=&quot;captcha&quot;&gt;Digite o código&lt;/label&gt;
&lt;input id=&quot;captcha&quot; name=&quot;captcha&quot; type=&quot;text&quot; /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Enviar&quot; /&gt;
&lt;/form&gt;</pre></div></div>

<p>Agora basta compara o valor passado por POST no input <strong>captcha</strong> com o valor armazenada em sessão.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'captcha'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;
&nbsp;
&lt;h1&gt;Ok - Código Correto&lt;/h1&gt;
&nbsp;
&nbsp;
&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;
&nbsp;
&lt;h1&gt;Erro - Código digitado errado&lt;/h1&gt;
&nbsp;
&nbsp;
&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p><a href="http://www.botecodigital.info/exemplos/captcha/form.php" target="_blank">Aqui você pode visializar o exemplo</a></p>
<p><a href="http://www.botecodigital.info/exemplos/captcha/captcha.zip">Download do exemplo</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/criando-um-captcha-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDO &#8211; PHP Data Object &#8211; Trocar de banco de dados já não é dor de cabeça</title>
		<link>http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/</link>
		<comments>http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:25:50 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[objetos]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[pdo]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=925</guid>
		<description><![CDATA[Se você desenvolve com PHP há algum tempo e necessitou trocar de banco de dados sabe que o PHP pode causar um certo problema, pois possui funções com nomes diferentes para conectar a banco de dados diferentes. O que muitas vezes inviabiliza o processo. Aqueles que já trabalharam com Java sabem que existe algo chamado JDBC que resolve este problema, fornecendo uma camada de abstração de dados através de interfaces, bastando carregar o driver correto e utilizar sempre os mesmos [...]]]></description>
			<content:encoded><![CDATA[<p>Se você desenvolve com <acronym title="Pre-Hypertext Processing">PHP</acronym> há algum tempo e necessitou trocar de banco de dados sabe que o <acronym title="Pre-Hypertext Processing">PHP</acronym> pode causar um certo problema, pois possui funções com nomes diferentes para conectar a banco de dados diferentes. O que muitas vezes inviabiliza o processo.</p>
<p>Aqueles que já trabalharam com Java sabem que existe algo chamado JDBC que resolve este problema, fornecendo uma camada de abstração de dados através de interfaces, bastando carregar o driver correto e utilizar sempre os mesmos métodos para acessar qualquer banco de dados.</p>
<p>Para os desavisados o <acronym title="Pre-Hypertext Processing">PHP</acronym> possui, desde a versão 5, algo parecido que se chama <strong>PDO &#8211; <acronym title="Pre-Hypertext Processing">PHP</acronym> Data Objects</strong>, permitindo o acesso a vários bancos de dados chamando sempre as mesmas funções.</p>
<p>Os drivers PDOs devem ser carregados pelo módulo <acronym title="Pre-Hypertext Processing">PHP</acronym> então temos que habilita-los e isso é feito dentro do arquivo <em>php.ini</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">extension<span style="color: #339933;">=</span>pdo<span style="color: #339933;">.</span>so
extension<span style="color: #339933;">=</span>pdo_mysql<span style="color: #339933;">.</span>so
extension<span style="color: #339933;">=</span>pdo_pgsql<span style="color: #339933;">.</span>so
extension<span style="color: #339933;">=</span>pdo_sqlite<span style="color: #339933;">.</span>so</pre></div></div>

<p>Normalmente não temos acesso ao arquivo <em>php.ini</em> pois contratamos um serviço de hospedagem, então para ver os drivers que estão habilitados na hospedagem  que contratamos devemos executar o código abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">getAvailableDrivers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$driver</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$driver</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Como o próprio nome do recurso &#8220;<acronym title="Pre-Hypertext Processing">PHP</acronym> Data <strong>Objects</strong>&#8221; a conexão e a manipulação dos dados é feita utilizando <a href="http://www.botecodigital.info/php/classes-em-php/">uma classe do <acronym title="Pre-Hypertext Processing">PHP</acronym></a> chamada  <strong>PDO</strong> &#8211; que deve ser instanciado com as informações de conexão ao banco.</p>
<p>Exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Como podemos notar o construtor do objeto <strong>PDO</strong> aceita três parâmetros, o primeiro é uma string contendo o driver a ser utilizado <strong>mysql</strong>, o local onde o banco esta rodando <strong>localhost</strong>, a porta que o banco esta escutando <strong>3306</strong> e o nome do banco de dados <strong>teste</strong>. O segundo parâmetro é o usuário de acesso ao banco de dados e o terceiro é a senha de acesso.</p>
<p>A partir de agora podemos utilizar o objeto armazenado em <em>$conn </em> para manipular os dados no banco de dados.</p>
<p>Como sabemos quando estamos trabalhando com banco de dados  vários erros podem acontecer como o banco de dados estar indisponível entre outra coisas. O <strong>PDO</strong> pode ser configurado para gerar <a href="http://imasters.uol.com.br/artigo/4451/php/tratamento_de_excecoes_no_php_5/">exceção</a> quando algum erro destes ocorrem sendo capturados com um bloco try{&#8230;}catch(){&#8230;} sendo lançada a exceção <strong>PDOException</strong>.</p>
<p>Abaixo um exemplo de inserção utilizando a classe PDO:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">try<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//instancia o objeto PDO, conectando com o banco mysql</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//configurando para utilizar exceções</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAttribute</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">ATTR_ERRMODE</span><span style="color: #339933;">,</span> PDO<span style="color: #339933;">::</span><span style="color: #004000;">ERRMODE_EXCEPTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;">//executa as instruções SQL</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO usuarios (login,senha,nome) VALUES ('rodrigo', '123456', 'rodrigo')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO usuarios (login,senha,nome) VALUES ('thiago', '654321', 'Thiago')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO usuarios (login,senha,nome) VALUES ('maria', '654123', 'Maria')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//fecha a conexão</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>PDOException <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//se houver exceção, exibe</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Erro: &lt;code&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/code&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Como vemos nas linha 11,12,13 utilizamos o método <em>exec</em> para executar comando <acronym title="Structured Query Language">SQL</acronym> no banco de dados.</p>
<p>Agora  veremos como  consultar utilizando a classe PDO:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">try<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//instancia o objeto PDO, conectando com o banco mysql</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//configurando para utilizar exceções</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAttribute</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">ATTR_ERRMODE</span><span style="color: #339933;">,</span> PDO<span style="color: #339933;">::</span><span style="color: #004000;">ERRMODE_EXCEPTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//executa a instrução de consulta</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT senha,login FROM usuarios&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">//percorre os resultados via o laço foreach</span>
                <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$linha</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">//exibe o resultado</span>
                        <span style="color: #b1b100;">print</span> <span style="color: #000088;">$linha</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; - &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$linha</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'senha'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;br&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">//fecha a conexão</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>PDOException <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//se houver exceção, exibe</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Erro: &lt;code&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/code&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Como vimos para executar uma consulta utilizanos a função <strong>query</strong> que retorna um objeto de resposta <a href="http://www.php.net/manual/pt_BR/class.pdostatement.php" target="_blank"><strong>PDOStatement </strong></a> que pode ser percorrido utilizando um laço <em>foreach</em>(linha 9).</p>
<p>Também é possível percorrer um objeto <strong>PDOStatement</strong> utilizando o método <strong>fetch</strong> dele tratar cada linha da consulta como um objeto.</p>
<p>Exemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">try<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//instancia o objeto PDO, conectando com o banco mysql</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//configurando para utilizar exceções</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAttribute</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">ATTR_ERRMODE</span><span style="color: #339933;">,</span> PDO<span style="color: #339933;">::</span><span style="color: #004000;">ERRMODE_EXCEPTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//executa a instrução de consulta</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT login, senha FROM usuarios&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">//percorre os resultados via o fetch()</span>
                <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$linha</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">FETCH_OBJ</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">//exibe resultado</span>
                        <span style="color: #b1b100;">print</span> <span style="color: #000088;">$linha</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">login</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; - &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$linha</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">senha</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;br&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//fecha a conexão</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>PDOException <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//se houver exceção, exibe</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Erro: &lt;code&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/code&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Na linha  13 chamamos o método fetch que recebe a constante <strong>PDO::FETCH_OBJ</strong> que é responsável por definir que o retorno será um objeto. Também podemos passar as constantes <strong>PDO::FETCH_ASSOC</strong> que retorna um array com os indices sendo os nomes das colunas da consulta e <strong>PDO::FETCH_NUM</strong> que retorna um array com os indices numéricos.</p>
<p>Outra funcionalidade interessante que ameniza muitos erros é os famosos  do <strong>prepared statements</strong>. Veja o exemplo abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
try<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//instancia o objeto PDO, conectando com o banco mysql</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//configurando para utilizar exceções</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAttribute</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">ATTR_ERRMODE</span><span style="color: #339933;">,</span> PDO<span style="color: #339933;">::</span><span style="color: #004000;">ERRMODE_EXCEPTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//prepara a consulta</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO usuarios (login,senha,nome) VALUES (?, ?, ?)&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//insere os valores nas ?</span>
    <span style="color: #000088;">$valores</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'rodrigo'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'rodrigo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//executa o comando SQL</span>
    <span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$valores</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;">//fecha a conexão</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>PDOException <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//se houver exceção, exibe</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Erro: &lt;code&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/code&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
try<span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//instancia o objeto PDO, conectando com o banco mysql</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PDO<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mysql:host=localhost;port=3306;dbname=teste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//configurando para utilizar exceções</span>
    <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAttribute</span><span style="color: #009900;">&#40;</span>PDO<span style="color: #339933;">::</span><span style="color: #004000;">ATTR_ERRMODE</span><span style="color: #339933;">,</span> PDO<span style="color: #339933;">::</span><span style="color: #004000;">ERRMODE_EXCEPTION</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//prepara a consulta</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$conn</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO usuarios (login,senha,nome) VALUES (?, ?, ?)&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//insere os valores nas ?</span>
    <span style="color: #000088;">$valores</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'rodrigo'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'123456'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'rodrigo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//executa o comando SQL</span>
    <span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$valores</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;">//fecha a conexão</span>
    <span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>catch <span style="color: #009900;">&#40;</span>PDOException <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//se houver exceção, exibe</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">&quot;Erro: &lt;code&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/code&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Com o uso dos <strong>prepared statements</strong> não precisamos ficar nos preocupando em concatenar várias variaveis, ou nos preocuparmos com escape de aspas e tudo mais, basta colocar os valores no array que será passado por parâmetro para o método <strong>execute</strong>.</p>
<p>Espero que tenham gostado. Para mais infomações consulte a <a href="http://www.php.net/manual/pt_BR/book.pdo.php" target="_blank">documentação da classe PDO</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/pdo-php-data-object-trocar-de-banco-de-dados-ja-nao-e-dor-de-cabeca/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Framework CakePHP</title>
		<link>http://www.botecodigital.info/php/framework-cakephp/</link>
		<comments>http://www.botecodigital.info/php/framework-cakephp/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 01:33:23 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=906</guid>
		<description><![CDATA[O que é Framework: um Framework nada mais é do que um conjunto de funcionalidade compartilhadas por uma família de aplicações, o Framework fornece uma estrutura genérica para se construir uma aplicação deixando para os programadores somente as regras de negócio . Os Frameworks normalmente fornecem funções como validação, tratamento de requisições, persistência de dados etc. É importante não confundir um framework web com um CMS(Sistema de Gerenciamento de Conteúdo) que é uma aplicação que inclusive pode ser construída com [...]]]></description>
			<content:encoded><![CDATA[<p><strong>O que é Framework:</strong> um Framework nada mais é do que um conjunto  de funcionalidade compartilhadas por uma família de aplicações, o Framework fornece uma estrutura genérica para se construir uma aplicação deixando para os programadores somente as regras de negócio . Os Frameworks normalmente fornecem funções como validação, tratamento de requisições, persistência de dados etc.<br />
É importante não confundir um framework web com um <acronym title="Content Management System">CMS</acronym>(Sistema de Gerenciamento de Conteúdo) que é uma aplicação que inclusive pode ser construída com um Framework.</p>
<h2>O CakePHP</h2>
<p>O CakePHP é um Framework  de desenvolvimento rápido web em <acronym title="Pre-Hypertext Processing">PHP</acronym>, suas principais características são:</p>
<ul>
<li>Código aberto</li>
<li>Utiliza a arquitetura MVC </li>
<li>Possui um robusto sistema de persistência de dados que facilita as operações CRUD</lI>
<li>Utiliza URLs amigáveis(mod_rewrite)</li>
<li>Estrutura de diretórios simples e clara</li>
</ul>
<p>Pode-se fazer o download da ultima versão na página do projeto <a href="http://cakephp.org/" target="_blank">http://cakephp.org/</a></p>
<h2>Arquitetura MVC</h2>
<p>O CakePHP  como a maioria dos Frameworks web utiliza a arquitetura MVC que divide a aplicação em três camadas Modelo(Model), Visão(View) e Controle(Controller) para torná-la de mais fácil manutenção permitindo que alterações em uma das camadas  causem pouca influencia nas outras.</p>
<p><strong>Modelo(Model):</strong> Representa os dados que a aplicação manipula. Suas regras de validação e persistência.</p>
<p><strong>Visão(View):</strong> É a apresentação dos dados para o usuário, normalmente uma página <acronym title="HyperText Markup Language">HTML</acronym> mas pode gerar outros tipos de documentos como <acronym title="Portable Document Format">PDF</acronym>, <acronym title="eXtensible Markup Language">XML</acronym>,XLS, etc.</p>
<p><strong>Controle(Controller):</strong> É onde se processa e responde as requisições do usuário e pode invocar alterações no Model.</p>
<div style="text-align:center">
<img src="http://www.botecodigital.info/wp-content/uploads/2010/02/basic_mvc-300x131.png" alt="" title="Diagrama MVC" width="300" height="131" class="aligncenter size-medium wp-image-908" /><br />
Exemplo de uma requisição feita ao CakePHP
</div>
<p>O cliente(1) faz uma requisição ao Dispatcher(componente responsável por encaminhar requisições) que identifica qual Controller deve ser chamado e repassa a requisição para ele(2).</p>
<p>O controle verifica qual ação deve tomar(regras de negócio), e se necessário utliza o Model salvando ou lendo dados(3,4) e após passa o controle para o View(5).</p>
<p>O View então trata de formatar a resposta e a envia para o cliente(6).</p>
<h2>Exemplo de Requisição ao CakePHP</h2>
<p><strong>http://localhost/cake/<span style="color:#F00">contatos</span>/<span style="color:#999">infocontato</span>/<span style="color:#00F">1</strong></strong></p>
<ul>
<li><strong><span style="color:#F00">Controller:</span></strong> contatos</li>
<li><strong><span style="color:#999">Método:</span></strong> infocontato </li>
<li><strong><span style="color:#00F">Paramêtro:</span></strong>  1</li>
</ul>
<p>Vejamos agora a estrutura de diretórios do CakePHP</p>
<div style="text-align:center">
<img src="http://www.botecodigital.info/wp-content/uploads/2010/02/diretorios.png" alt="" title="Diretórios do CakePHP" width="266" height="274" class="aligncenter size-full wp-image-909" />
</div>
<p>Nossa aplicação fica dentro da pasta app</p>
<ul>
<li><strong>config:</strong>Contém os arquivos de configuração. Detalhes das conexões ao banco de dados, bootstrapping, arquivos de configuração do núcleo e outros devem ser armazenados aqui.</li>
<li><strong>controllers:</strong> Contém os controladores da sua aplicação e seus componentes.</li>
<li><strong>locale:</strong>Guarda os arquivos com as strings para internacionalização.</li>
<li><strong>models: </strong>Contém os modelos da sua aplicação.</li>
<li>plugins: </strong>Contém os pacotes de plugins.</li>
<li><strong>tmp: </strong>Aqui é onde o CakePHP armazena os arquivos temporários. Esta pasta normalmente é usada para guardar a descrição dos modelos, logs e outras informações, como as das sessões.</li>
<li><strong>vendors:</strong>Qualquer classe ou biblioteca de terceiro deve ser armazenada aqui. </li>
<li><strong>views:</strong>Arquivos de apresentação devem vir aqui: elements, páginas de erro, helpers, layouts e arquivos de view.</li>
<li><strong>webroot:</strong>No modo de produção, esta pasta deve servir como a pasta raiz da sua aplicação. Dentro desta pasta são guardados os arquivos públicos, como estilos <acronym title="Cascading Style Sheets">CSS</acronym>, imagens e arquivos de JavaScript.</li>
<p>Agora vamos a um vídeo de como montar um cadastro simples utilizando o CakePHP.  A tabela no banco de dados que iremos manipular será esta</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span><span style="color: #66cc66;">&#40;</span>
	Id INT <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span><span style="color: #66cc66;">,</span>
	nome VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
	email VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
	telephone VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
	endereco VARCHAR<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p><object><br />
<embed src='http://www.videolog.tv/ajax/codigoPlayer.php?id_video=523458&#038;relacionados=S&#038;default=S&#038;lang=PT_BR&#038;cor_fundo=FFFFFF&#038;cor_titulo=777777&#038;swf=1&#038;width=424&#038;height=318' width='424' height='318' type='application/x-shockwave-flash' allowFullScreen='true' AllowScriptAccess='always'></embed></object></p>
<p><a href="http://www.mediafire.com/?di23nntmilj" target="_blank">Download do vídeo</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/framework-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NORAD irá perseguir o Papai Noel</title>
		<link>http://www.botecodigital.info/php/norad-ira-perseguir-o-papai-noel/</link>
		<comments>http://www.botecodigital.info/php/norad-ira-perseguir-o-papai-noel/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 17:07:47 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=861</guid>
		<description><![CDATA[Nos anos 50 um erro na divulgação de um número de telefone para as crianças falarem com o Papai Noel faz com que o telefone vermelho do CONAD(que depois virou o NORAD) tocar, do outro lado da linha uma criança pergunta pelo Papai Noel. O Coronel depois de identificar o mal entendido resolveu entrar na brincadeira e mandou os operadores de radar rastrearem o Papai Noel. A brincadeira pegou e todos os anos muitas crianças ligam, sendo que vários oficiais [...]]]></description>
			<content:encoded><![CDATA[<p>Nos anos 50 um erro na divulgação de um número de telefone para as crianças falarem com o Papai Noel faz com que o telefone vermelho do CONAD(que depois virou o NORAD) tocar, do outro lado da linha uma criança pergunta pelo Papai Noel. O Coronel depois de identificar o mal entendido resolveu entrar na brincadeira e mandou os operadores de radar rastrearem o Papai Noel. </p>
<p>A brincadeira pegou e todos os anos muitas crianças ligam, sendo que vários oficiais se voluntariam para atender estas ligações.</p>
<p>A brincadeira virou uma tradição então na noite de natal soa um alarme na base do NORAD, um operador identifica um objeto pequeno do tamanho de um trenó, no radar, vindo em direção dos Estados Unidos. O Comandante então informa que é o Papai Noel e autoriza a entrada no espaço aereo. </p>
<p>Para essa brincadeira foi feito até um site <a href="http://www.noradsanta.org/en/index.html" target="_blank">NORAD tracks Santa</a> que este ano vai disponibilizar a <a href="http://www.noradsanta.org/en/track3d.html" target="_blank">perseguição pelo Google Earth</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/norad-ira-perseguir-o-papai-noel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UruguaianaTech</title>
		<link>http://www.botecodigital.info/php/uruguaianatech/</link>
		<comments>http://www.botecodigital.info/php/uruguaianatech/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 01:27:42 +0000</pubDate>
		<dc:creator>Thiago Finardi</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cidão]]></category>
		<category><![CDATA[humberto moura]]></category>
		<category><![CDATA[jose inoue]]></category>
		<category><![CDATA[rodrigo aramburu]]></category>
		<category><![CDATA[senac uruguaiana]]></category>
		<category><![CDATA[Thiago Finardi]]></category>
		<category><![CDATA[ti uruguaiana]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=798</guid>
		<description><![CDATA[Chegamos ao fim do 1º Uruguaiana Tech, foram três dias de evento onde podemos colaborar de alguma forma com a nossa comunidade. Fiquei extremamante satisfeito com o resultado do evento, era muito prazeroso conversar com os participantes após as palestras, podendo assim os conhecer melhor e principalmente constatar que muitas pessoas estão testando softwares livre. Várias pessoas elogiaram a iniciativa e principalmente a qualidade do evento como um todo. A idéia da realização do UruguaianaTECH surgiu a partir da necessidade [...]]]></description>
			<content:encoded><![CDATA[<p>Chegamos ao fim do 1º Uruguaiana Tech, foram três dias de evento onde podemos colaborar de alguma forma com a nossa comunidade. Fiquei extremamante satisfeito com o resultado do evento, era muito prazeroso conversar com os participantes após as palestras, podendo assim os conhecer melhor e principalmente constatar que muitas pessoas estão testando softwares livre. Várias pessoas elogiaram a iniciativa e principalmente a qualidade do evento como um todo.</p>
<p>A idéia da realização do UruguaianaTECH surgiu a partir da necessidade de eventos na área de tecnologia da informação em nossa região, e principalmente para difundir a utilização do Software Livre em todos os setores de nossa comunidade.</p>
<p>O constante crescimento da utilização do software livre nas organizações nos últimos anos, demonstram que o reconhecimento dos benefícios é algo concreto, nosso país é considerado um dos maiores utilizadores desta tecnologia, onde também existem diversos colaboradores e mantenedores de aplicativos Livres.</p>
<p>Vemos na fronteira oeste, um mercado a ser explorado pois muitas organizações locais não fazem o uso de um Software Livre pelo fato de desconhecerem suas vantagens e benefícios.</p>
<p>Cabe a nós profissionais e estudantes da área de TI mudar este cenário, pois a evolução esta acontecendo, é nossa obrigação contribuir para que ela aconteça também em nossa cidade.</p>
<p>As vezes pensamos que em nossa cidade não há um mercado para os profissinais de TI, isto faz com que muitos estudantes recém formados acabem saindo de nossa cidade em busca de oportunidades, com isso nossa comunidade acaba perdendo qualidade nos serviços prestados. Com esta iniciativa esperamos demosntrar a nossa comunidade que dentro dela mesmo é possível encontrar profissionais qualificados e preparados para os desafios da área de TI.</p>
<p>Gostaria muito de agradecer a participação dos Professores Cidão e Humberto Moura que trouxeram um brilho a mais em nosso evento, a área de TI do Senac Uruguaiana, aos colaboradores voluntários que nos ajudaram na organização e principalmente aos nossos apoiadores, pois sem eles esta edição do Uruguaiana Tech não seria possível.</p>
<p>Agora fica a saudade dos bons momentos compartilhados durante o evento, o conhecimento que foi recebido e retribuido, pois como mencionei no evento: &#8220;O conhecimento é universal, nós aprendemos com alguém e é nossa OBRIGAÇÃO ensinar alguém&#8221;.</p>
<p>Nós nos comprometemos em levar esta causa adiante e faremos o que for necessário para alavancar nossa área de TI em nossa cidade, o sol nasce para todos e juntos faremos com que esta mudança aconteça.</p>
<p><div id="galeria"><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01143.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01143.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01151.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01151.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01159.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01159.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01160.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01160.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01161.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01161.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01162.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01162.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01164.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01164.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01165.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01165.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01171.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01171.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01177.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01177.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01179.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01179.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01180.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01180.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01184.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01184.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01186.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01186.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01187.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01187.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01190.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01190.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01196.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01196.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01199.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01199.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01200.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01200.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01207.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01207.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01208.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01208.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01212.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01212.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01213.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01213.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01214.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01214.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01215.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01215.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01217.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01217.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01219.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01219.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01222.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01222.jpg" /></a><a href="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/g/DSC01225.jpg" rel="prettyPhoto[uruguaianatech]" class="prettyPhoto"><img src="http://www.botecodigital.info/wp-content/uploads/galerias/uruguaianatech/p/DSC01225.jpg" /></a><div style="clear:both;"></div></div></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/uruguaianatech/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1º UruguaianaTech</title>
		<link>http://www.botecodigital.info/php/1%c2%ba-uruguaianatech/</link>
		<comments>http://www.botecodigital.info/php/1%c2%ba-uruguaianatech/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 02:50:35 +0000</pubDate>
		<dc:creator>Thiago Finardi</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[senac uruguaiana]]></category>
		<category><![CDATA[ti uruguaiana]]></category>
		<category><![CDATA[uruguaiana tech]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=778</guid>
		<description><![CDATA[Com a missão de educar para o trabalho em atividades do comércio de bens, serviços e turismo, o SENAC Uruguaiana promove nos dias 26, 27 e 28 de novembro o 1° UruguaianaTech, evento que visa difundir a utilização do Software Livre nos diversos setores de nossa comunidade. Sempre conectado às inovações do mercado e atento às novas tendências em tecnologia, o núcleo de TI do Senac Uruguaiana, ministrará palestras sobre os temas: Linux, Servidores, Segurança, Desenvolvimento de Aplicações Web e [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-777" title="logo" src="http://www.botecodigital.info/wp-content/uploads/2009/11/logo.png" alt="logo" width="423" height="174" /></p>
<p>Com a missão de educar para o trabalho em atividades do comércio de bens, serviços e turismo, o SENAC Uruguaiana promove nos dias <strong>26, 27 e 28</strong> de novembro o <a href="http://www.uruguaianatech.info" target="_blank"><strong>1° UruguaianaTech</strong></a>, evento que visa difundir a utilização do Software Livre nos diversos setores de nossa comunidade.</p>
<p>Sempre conectado às inovações do mercado e atento às novas tendências em tecnologia, o núcleo de<strong> TI do Senac Uruguaiana</strong>, ministrará palestras sobre os temas: Linux, Servidores, Segurança, Desenvolvimento de Aplicações Web e Móvel.</p>
<p>Esta edição contará com a presença de profissionais de destaque no mercado da Tecnologia da Informação, com ampla experiência na utilização de Software Livre em ambientes corporativos, educacionais e domésticos.</p>
<p>O evento será realizado no auditório do Colégio Marista Sant’Ana. As inscrições podem ser realizadas através do <a href="http://www.uruguaianatech.info/inscricaos/">site</a> ou na unidade do Senac, mediante a colaboração com um alimento não-perecível. Aos interessados na emissão do certificado, o investimento será de R$10,00.</p>
<p>Vejam abaixo a programação do evento. Destaque para o 1º e 2º dia onde os editores deste blog, <strong>Thiago Finardi</strong> e <strong>Rodrigo Aramburu</strong>, ministrarão palestras no evento.</p>
<p><img class="aligncenter size-full wp-image-782" title="Cartaz_RGB_peq" src="http://www.botecodigital.info/wp-content/uploads/2009/11/Cartaz_RGB_peq.png" alt="Cartaz_RGB_peq" width="454" height="642" /></p>
<p>Vamos lá pessoal, participem e ajudem no crescimento da área de TI em nossa cidade.</p>
<h1>
<p style="text-align: center;"><a href="http://www.uruguaianatech.info" target="_blank"><strong>http://www.uruguaianatech.info</strong></a></p>
</h1>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/1%c2%ba-uruguaianatech/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Criando arquivos PDF com PHP e classe FPDF</title>
		<link>http://www.botecodigital.info/php/criando-arquivos-pdf-com-php-e-classe-fpdf/</link>
		<comments>http://www.botecodigital.info/php/criando-arquivos-pdf-com-php-e-classe-fpdf/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 11:29:53 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[relatorio]]></category>

		<guid isPermaLink="false">http://www.botecodigital.info/?p=669</guid>
		<description><![CDATA[Quando criamos um sistema web um pouco mais complexo temos a necessidade de gerar relatórios, uma forma de termos maior controle sobre a impressão, como forçar a impresão em paisagem, e a necessidade que muitos têm de armazenar estes relatórios nos levam a uma saída interessante: gerá-los no formato PDF. Neste tutorial vamos criar documentos PDF utilizando a classe PDF que pode ser baixada aqui. 1 2 3 4 5 6 7 8 9 require_once&#40;&#34;fpdf/fpdf.php&#34;&#41;; &#160; $pdf= new FPDF&#40;&#34;P&#34;,&#34;pt&#34;,&#34;A4&#34;&#41;; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Quando criamos um sistema web um pouco mais complexo temos a necessidade de gerar relatórios, uma forma de termos maior controle sobre a impressão, como forçar a impresão em paisagem, e a necessidade que muitos têm de armazenar estes relatórios nos levam a uma saída interessante: gerá-los no formato <acronym title="Portable Document Format">PDF</acronym>.</p>
<p>Neste tutorial vamos criar documentos <acronym title="Portable Document Format">PDF</acronym> utilizando a classe <a href="http://www.fpdf.org" target="_blank"><acronym title="Portable Document Format">PDF</acronym></a> que pode ser <a href="http://www.fpdf.org/en/download.php" target="_blank">baixada aqui</a>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;fpdf/fpdf.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FPDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;P&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;pt&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;A4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">AddPage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Boteco Digital&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Ln</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Output</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;arquivo.pdf&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;D&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><a href="http://www.botecodigital.info/exemplos/fpdf/exe1.php">Demo</a></p>
<p>Na linha 1 incluimos a classe FPDF. Na linha 3 criamos o documento <acronym title="Portable Document Format">PDF</acronym> com as seguintes configurações:</p>
<p><strong>Orientação:</strong> &#8220;P&#8221; Paisagem &#8211; (poderia ser retrato &#8220;L&#8221; )</p>
<p><strong>Unidade de medida:</strong> &#8220;pt&#8221; &#8211; a unidade e medida é utilizada pelos métodos de escrita no documento <acronym title="Portable Document Format">PDF</acronym> para determinar a posição onde o conteúdo deve ser escrito. As unidades aceitas são &#8220;pt&#8221;, &#8220;mm&#8221;, &#8220;cm&#8221; e &#8220;in&#8221;.</p>
<p><strong>Formato: </strong> &#8220;A4&#8243; &#8211; O formato utilizado pelas páginas.</p>
<p>Na linha 5 adicionamos uma nova página ao documento(a página inicial).</p>
<p>Na linha 6 modificamos a fonte do documento para &#8220;arial&#8221;, negrito &#8220;B&#8221;, tamanho &#8220;12&#8243;. A partir de agora todo texto que escrevermos no documento <acronym title="Portable Document Format">PDF</acronym> terá estas configurações.</p>
<p>Na linha 7 escrevemos uma célula(área retangular) de texto no documento. Na ordem as configurações desta célula são:</p>
<ul>
<li><strong>Largura:</strong> Largura da célula(definidas pela unidade). Se 0, a célula se estende até a margem direita.</li>
<li><strong>Altura:</strong> Altura da célula (definidas pela unidade).</li>
<li><strong>Texto:</strong> Texto a ser impresso. Valor padrão: texto vazio.</li>
<li><strong>Borda:</strong> Indica se as bordas devem ser desenhadas em volta da célula. Os valores aceitos são 0(sem borda), 1(com borda). Também é possível definir quais bordas serão desenhadas pela combinação das seguintes letras:<br />
L: esquerda<br />
T: acima<br />
R: direita<br />
B: abaixo
</li>
<li><strong>Nova linha: </strong>Indica onde a posição corrente deve ficar depois que a função for chamada. Os valores possíveis são:<br />
0: à direita<br />
1: no início da próxima linha<br />
2: abaixo
</li>
<li><strong>Alinhamento</strong> Permite centralizar ou alinhar o texto. Os valores possíveis são: L(esquerda), C(centro), R(direita)
</li>
</ul>
<p>Na linha 8 temos uma quebra de linha com a altura de 8 unidades.</p>
<p>Na linha 9 mandamos o documento ser gerado e forçamos o download com o nome informado pelo primeiro argumento.Outras opções seriam:</p>
<ul>
<li><strong>I:</strong> envia o arquivo diretamente para o browser. Se o plug-in estiver instalado ele será usado. O nome indicado pelo por name e á usado quando se usa a opção &#8220;Salvar destino como&#8221; no link que gera o <acronym title="Portable Document Format">PDF</acronym>.</li>
<li><strong>D:</strong> envia para o browser e força o download do arquivo com o nome indicado por name.</li>
<li><strong>F:</strong> salva em um arquivo local com o nome informado em name.</li>
</ul>
<p>Vejamos agora um exemplo um pouco mais complexo</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$nome</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Rodrigo&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$email</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;blogbotecodigital@gmail.com&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$endereco</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Rua do Andradas 9999 nº 12&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cep</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;99999-999&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cidade</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Urugaiana&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$estado</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;RS&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$telefone</span><span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;9999-9999&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$observacoes</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse mattis fringilla sagittis. Aliquam eu est dapibus justo commodo dapibus. Etiam aliquet, mauris id gravida suscipit, purus ligula venenatis nisi, eget dignissim elit ipsum a libero. In tristique vestibulum arcu sit amet mattis. Ut aliquet cursus consectetur. Fusce eu lacinia magna. Praesent laoreet sapien at est pulvinar nec facilisis sem mollis. Nulla eget congue tellus. Praesent id velit id sem volutpat condimentum ut at ligula. Phasellus libero leo, ultricies et eleifend et, mollis a metus. Duis adipiscing imperdiet luctus. Vestibulum pulvinar, dolor vel porttitor posuere, nisl est lacinia felis, nec gravida felis risus nec ante. Integer imperdiet, dui vitae pellentesque tempor, magna purus accumsan augue, eget hendrerit risus leo quis augue. Vivamus faucibus est quis ante placerat congue. &quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;fpdf/fpdf.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FPDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;P&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;pt&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;A4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">AddPage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Image</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'logog8.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Ficha&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;B&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Ln</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//nome</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Nome:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$nome</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//email</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;E-mail:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$email</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Endereço</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Endereço:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$endereco</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//cep</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;CEP:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$cep</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//cidade</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Cidade:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$cidade</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Estado</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Estado:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$estado</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ln</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Observações</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">70</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Observações:&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'L'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">MultiCell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #000088;">$observacoes</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'J'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Output</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;arquivo.pdf&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;D&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><a href="http://www.botecodigital.info/exemplos/fpdf/exe2.php">Demo</a></p>
<p>Da linha 1 até a linha 8 temos os dados que serão mostrados na ficha. Nas linhas 10 a 15 já falamos no exemplo anterior</p>
<p>Na linha 16 inserimos uma imagem no <acronym title="Portable Document Format">PDF</acronym>, note que devemos fornecer o endereço da imagem PATH ou <acronym title="Uniform Resource Locator">URL</acronym>. Outros parâmetros que podemos inserir são (na seqüência):</p>
<p>Image(string file [, float x [, float y [, float w [, float h [, string type]]]])</p>
<ul>
<li><strong>X:</strong> posição da imagem em relação ao eixo X.</li>
<li><strong>Y:</strong> posição da imagem em relação ao eixo Y.</li>
<li><strong>W:</strong> largura da imagem.</li>
<li><strong>H: </strong>altura da imagem.</li>
<li><strong>TYPE:</strong> tipo da imagem. S nõ for informado será detectado pela extensão.</li>
<p>Na linha 25 trocamos a fonte para Negrito &#8211; 26 inserimos um célula sem quebrar linha, para ao lado inserir o valor do campo. Na linha 27 inserimos o valor do nome.</p>
<p>Deste modo inserimos todos os dados até as observações.</p>
<p>Para inserir as observações, que podem facilmente ocupar várias linhas, utilizamos o método  <em>MultiCell</em>  que basicamente é o mesmo método <em>Cell</em> mas que pode ocupar várias linhas. Os parâmetros são basicamente os mesmo a não ser por aceitar a opção de alinhamento &#8220;J&#8221; de justificado.</p>
<p>Veremos agora um exemplo de como criar um tabela em PDF:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;fpdf/fpdf.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FPDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;P&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;pt&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;A4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">AddPage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">18</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Relatório&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;B&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Ln</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//cabeçalho da tabela </span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'B'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">14</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">130</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Coluna 1'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">140</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Coluna 2'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">130</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Coluna 3'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">160</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Coluna 4'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//linhas da tabela</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'arial'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">130</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Linha &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$i</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">140</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">130</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">160</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;L&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Output</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;arquivo.pdf&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;D&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><a href="http://www.botecodigital.info/exemplos/fpdf/exe3.php">Demo</a></p>
<p>O modo de fazer uma tabela neste caso foi basicamente empilhar células com bordas, lembrando sempre que a largura da célula definida  no cabeçalho da coluna deve ser mantida na célula correspondente da linha.</p>
<p>Outros métodos da classe FPDF podem ser encontrados na sua documentação que (pasmem) existe um tradução e pode ser encontrada <a href="http://www.fpdf.org/en/dl.php?id=97">aqui</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/criando-arquivos-pdf-com-php-e-classe-fpdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listando arquivos de um diretório em PHP</title>
		<link>http://www.botecodigital.info/php/listando-arquivos-de-um-diretorio-em-php/</link>
		<comments>http://www.botecodigital.info/php/listando-arquivos-de-um-diretorio-em-php/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 23:50:23 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[arquivo]]></category>
		<category><![CDATA[diretorio]]></category>
		<category><![CDATA[galeria]]></category>

		<guid isPermaLink="false">http://botecodigital.g8si.com/?p=519</guid>
		<description><![CDATA[Mostrei no meu último artigo como criar uma galeria de fotos utilizando JQuery e o plugin PrettyPhoto, mas ele tinha um problema, ou melhor uma dificuldade, para adicionar uma nova foto tínhamos que abrir o arquivo e acrescentar o código HTML para a nova foto. Para não termos esse tipo e trabalho que inventaram a informática . Vamos ver então um simples script que lê um determinado diretório e monta a tag HTML para a imagem: 1 2 3 4 [...]]]></description>
			<content:encoded><![CDATA[<p>Mostrei no meu último artigo como criar uma galeria de  <a href="http://www.botecodigital.info/web/construindo-uma-galeria-de-fotos-com-o-plugin-prettyphoto-do-jquery">fotos utilizando JQuery e o plugin PrettyPhoto</a>, mas ele tinha um problema, ou melhor uma dificuldade, para adicionar uma nova foto tínhamos que abrir o arquivo e acrescentar o código <acronym title="HyperText Markup Language">HTML</acronym> para a nova foto. Para não termos esse tipo e trabalho que inventaram a informática <img src='http://www.botecodigital.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Vamos ver então um simples <em>script</em> que lê um determinado diretório e monta a tag <acronym title="HyperText Markup Language">HTML</acronym> para a imagem:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$dir</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;fotos&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$d</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$nome</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$d</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$nome</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nome</span><span style="color: #009900;">&#41;</span> and <span style="color: #009900;">&#40;</span><span style="color: #000088;">$nome</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'Thumbs.db'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$arquivos</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$nome</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$nome</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$d</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">sort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arquivos</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arquivos</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$arq</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;img src=&quot;'</span><span style="color: #339933;">,</span><span style="color: #000088;">$dir</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot; alt=&quot;</span><span style="color: #0000ff;">&quot; /&gt; ';
}</span></pre></td></tr></table></div>

<p>Na linha 1 definimos o diretório que será lido e armazenamos em uma variável para facilitar a manutenção do código, na linha 2 abrimos um manipulador de diretório com a função <a href="http://br2.php.net/manual/pt_BR/function.opendir.php" target="_blank">opendir()</a> que nos retorna um ponteiro para ser utilizado em funções posteriores.</p>
<p>Bom agora podemos percorrer o diretório, mas antes vamos iniciar um contador (linha 3) para podermos armazenar em um <em>array</em> os nomes dos arquivos para poder entre outras coisas ordená-los.</p>
<p>Na linha 5 começamos a ler os arquivos e fazemos isso utilizando a função <a href="http://br2.php.net/manual/pt_BR/function.readdir.php" target="_blank">readdir()</a> que retorna o nome do próximo arquivo do diretório aberto com a função <em>opendir</em>. Na linha 6 entramos em um laço que executa enquanto o nome do arquivo retornado pela função <em>readdir()</em> não for falso, ou seja não tenha listado todos os arquivos do diretório.</p>
<p>Dentro do laço (linha 7) fazemos um teste, se o nome retornado não for um diretório ( com a função <a href="http://br2.php.net/manual/pt_BR/function.is-dir.php" target="_blank">is_dir()</a>) e se o nome for diferente de &#8220;Thumbs.db&#8221;, aqueles arquivos chatos e miniaturas do windows que as vezes <em>upamos</em> sem querer <img src='http://www.botecodigital.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Na linha 8 armazenamos o nome do arquivo no <em>array</em> e na linha 9 incrementamos nosso contador. fora do <em>if</em> lemos o próximo arquivo do diretório para o teste do <em>while</em>.</p>
<p>Na linha 13 utilizamos a função <a href="http://br2.php.net/manual/pt_BR/function.sort.php" target="_blank">sort()</a> para ordenar nosso <em>array</em> onde estão armazenados os nomes das imagens. Isto é muito útil principalmente se os nomes dos arquivos sejam seqüênciais e correspondem também a uma miniatura em outro diretório <strong>como é o mais indicado caso queiram utilizar esse script para criar uma galeria com o PrettyPhoto</strong>.</p>
<p>Agora basta juntar os nomes do arquivos do <em>array</em> com as tags para exibir as fotos como é feito na linha 16, utilizando um <em>foreach</em> para percorrer  <em>array</em>.</p>
<p>Este <em>script</em> facilita bastante a vida principalmente se s galerias criadas forem grandes ou precisar adicionar fotos frequentemente, espero que tenham gostado quem <a href="http://www.botecodigital.info/wp-content/donwloads/listar_direotorios.zip">quiser baixar o exemplo clique aqui</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/listando-arquivos-de-um-diretorio-em-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Redimensionando imagens com PHP</title>
		<link>http://www.botecodigital.info/php/redimensionando-imagens-com-php/</link>
		<comments>http://www.botecodigital.info/php/redimensionando-imagens-com-php/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 11:40:58 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[imagecopyresampled]]></category>
		<category><![CDATA[imagecreatefromjpeg]]></category>
		<category><![CDATA[ImageCreateTrueColor]]></category>
		<category><![CDATA[imagejpeg]]></category>
		<category><![CDATA[imagens]]></category>
		<category><![CDATA[imagesX]]></category>
		<category><![CDATA[imagesY]]></category>
		<category><![CDATA[redimensionar imagens]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://botecodigital.g8si.com/?p=389</guid>
		<description><![CDATA[Muitas vezes, quando estamos criando um sistema web, necessitamos enviar alguma imagem para o servidor e é só falar a palavra redimensionar que o usuário faz cara feia. Então a responsabilidade fica para o desenvolvedor que deve redimensionar a imagem enviada e armazená-la ou exibi-la. Antes de começarmos a ver código temos que nos certificar de que a biblioteca GD esteja instalada pois a manipulação de imagens no PHP é feita através das funções desta biblioteca. Por padrão ela já [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes, quando estamos criando um sistema web, necessitamos enviar alguma imagem para o servidor e  é só falar a palavra redimensionar que o usuário faz cara feia. Então a responsabilidade fica para o desenvolvedor que deve redimensionar a imagem enviada e armazená-la ou exibi-la.</p>
<p>Antes de começarmos a ver código temos que nos certificar de que a <strong>biblioteca GD</strong> esteja instalada pois a manipulação de imagens no <acronym title="Pre-Hypertext Processing">PHP</acronym> é feita através das funções desta biblioteca. Por padrão ela já vem instalada no PHP5. No Debian ela pode ser instalada facilmente utilizando o comando:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="shell" style="font-family:monospace;">apt-get install php5-gd</pre></td></tr></table></div>

<p>Veremos então um exemplo de como utilizar o <acronym title="Pre-Hypertext Processing">PHP</acronym> para redimensionar uma imagem:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$imagemjpg</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;castelo.jpg&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$largura_alvo</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'size'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$img</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagecreatefromjpeg</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$imagemjpg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$largura_original</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagesX</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$altura_original</span> <span style="color: #339933;">=</span> <span style="color: #990000;">imagesY</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$img</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$altura_nova</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$altura_original</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$largura_alvo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #000088;">$largura_original</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$nova</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ImageCreateTrueColor</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$largura_alvo</span><span style="color: #339933;">,</span><span style="color: #000088;">$altura_nova</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">imagecopyresampled</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nova</span><span style="color: #339933;">,</span> <span style="color: #000088;">$img</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$largura_alvo</span><span style="color: #339933;">,</span> <span style="color: #000088;">$altura_nova</span><span style="color: #339933;">,</span> <span style="color: #000088;">$largura_original</span><span style="color: #339933;">,</span>  <span style="color: #000088;">$altura_original</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-type: image/jpg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">imagejpeg</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nova</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Na linha 1 definimos  a imagem, detalhe poderíamos ter recebido ela por parâmetro <strong>GET</strong> como recebemos o novo tamanho da imagem na linha 2, este valor(<strong>size</strong>) será a nova largura da imagem e deve ser passado ao chamar o script de redimensionamento.</p>
<p>Na linha 4 criamos uma nova imagem via <acronym title="Pre-Hypertext Processing">PHP</acronym> a partir do arquivo fornecido na linha 1 utilizando a função <a href="http://br2.php.net/imagecreatefromjpeg" target="_blank">imagecreatefromjpeg</a> (para criar uma imagem a partir de outros arquivos utilizamos as funções <a href="http://br2.php.net/manual/pt_BR/function.imagecreatefrompng.php" target="_blank">imagecreatefrompng</a>, <a href="http://br2.php.net/manual/pt_BR/function.imagecreatefromgif.php" target="_blank"> imagecreatefromgif</a>).</p>
<p>Na linha 6 e 7 pegamos a largura e altura da imagem utilizando as funções  <a href="http://br2.php.net/manual/pt_BR/function.imagesx.php" target="_blank">imagesX()</a> e  <a href="http://br2.php.net/manual/pt_BR/function.imagesy.php" target="_blank">imagesX()</a> que  retornam respectivamente a largura(eixo x) e altura(eixo y) da imagem passada como parâmetro.</p>
<p> Na linha 9 é onde calculamos a nova altura da imagem, como queremos que nossa imagem tenha uma largura especifica  também temos que alterar a altura para a imagem não ficar desproporcional. O cálculo é feito através de uma regra  de três simples.</p>
<p> Na linha 11 criamos uma nova imagem em branco com as novas dimensões utilizando a função  <a href="http://br2.php.net/manual/pt_BR/function.imagecreatetruecolor.php" target="_blank">ImageCreateTrueColor</a>.</p>
<p> Na linha 10 copiamos a imagem antiga(criada na linha 4)  para a nova (criada na linha 11) utilizando a função  <a href="http://br2.php.net/manual/pt_BR/function.imagecopyresampled.php" target="_blank">  imagecopyresampled  ( resource $dst_image  , resource $src_image  , int $dst_x  , int $dst_y  , int $src_x  , int $src_y  , int $dst_w  , int $dst_h  , int $src_w  , int $src_h  )</a></p>
<p> Agora já temos a nossa imagem redimensionada armazenada em <strong>$nova</strong> então precisamos  mostrá-la na tela, para isso utilizaremos a função  <a href="http://br2.php.net/manual/pt_BR/function.imagejpeg.php" target="_blank">imagejpeg  </a>  que envia para o browser a imagem armazenada no parâmetro passado.</p>
<p>Em vez de mostrarmos a imagem no browser podemos salvá-la no servidor utilizando a mesma função, bastando informa como segundo parêmetro o local para ser armazenado.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">imagejpeg</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$nova</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'/home/boteco/imagens/imagemredimensionada.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Um detalhe na linha 14 mudamos nosso <strong>Content-type</strong> para <strong>image/jpg</strong> para que possamos   visualizá-la no browser diretamente pelo link:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">  http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.botecodigital.info/exemplos/redimensionar-imagem/imagem.php?size=500</span></pre></td></tr></table></div>

<p>  Também podemos utilizá-lo em uma tag img:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.botecodigital.info/exemplos/redimensionar-imagem/imagem.php?size=500&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;imagem redimensionada&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></td></tr></table></div>

<p>A manipulação de imagens no <acronym title="Pre-Hypertext Processing">PHP</acronym> é bem vasta, utilizando as mesmas funções você pode criar vários outros efeitos como marca d&#8217;agua, captcha entre outros. </p>
<p>Bom era isso espero que tenham gostado! Paz e prosperidade!</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/redimensionando-imagens-com-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Introdução a classes em PHP</title>
		<link>http://www.botecodigital.info/php/classes-em-php/</link>
		<comments>http://www.botecodigital.info/php/classes-em-php/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 20:38:31 +0000</pubDate>
		<dc:creator>Rodrigo Aramburu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[OO]]></category>

		<guid isPermaLink="false">http://botecodigital.g8si.com/?p=157</guid>
		<description><![CDATA[Hoje gostaria de fazer uma breve introdução classes de PHP, um assunto indispensavél para que pretende utilizar algum framework. Uma classe nada mais é do que um definição de um objeto, uma abstração de algo real. Nesta definição indicamos o que o objeto vai ter (propriedades) e como vai se comportar(métodos). Por exemplo um usuário poderia ter como propriedade nome, idade, data de nascimento e como métodos printNome, getIdade, logar, etc. Então vamos a um exemplo simples de classe do [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-168 alignleft" style="margin: 5px;" title="logo-php" src="http://www.botecodigital.info/wp-content/uploads/miniaturas/php.png" alt="logo-php" width="100" height="79" /></p>
<p>Hoje gostaria de fazer uma breve introdução classes de <acronym title="Pre-Hypertext Processing">PHP</acronym>, um assunto indispensavél para que pretende utilizar algum framework.</p>
<p>Uma classe nada mais é do que um definição de um objeto, uma abstração de algo real. Nesta definição indicamos o que o objeto vai ter (propriedades) e como vai se comportar(métodos). Por exemplo um usuário poderia ter como propriedade nome, idade, data de nascimento e como métodos printNome, getIdade, logar, etc.</p>
<p>Então vamos a um exemplo simples de classe do <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Usuario<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$nome</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Rodrigo&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> printNome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nome</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Como vemos na linha 1 estamos declarando uma classe de nome <em>Usuario</em>, esta classe contém uma propriedade <em>$nome</em> que nada mais é do que uma variável que pertence a classe ou seja só irá existir se a classe existir.</p>
<p>Na linha 4 criamos o método de nossa classe <em>printNome()</em> que simplismente exibe  a propriedade <em>nome</em> do objeto. Você deve ter achado meio estranha a variábel <em>$this</em> usada, ela é uma variável de referência que referência a própria classe e o operador <em>-></em> é utilizado para acessar uma variável ou método do objeto.</p>
<p>Agora que já temos a classe vamos utilizá-la, para isso precissamos instância-la, ou seja criar um objeto propriamente dito.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$class1</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Usuario<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$class1</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nome</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;João&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$class2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Usuario<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$class2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nome</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Fernanda&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$class1</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">printNome</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$class2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">printNome</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Como pode ser visto no exemplo acima instânciamos dois objetos da classe <em>Usuario</em> utilizando para isso o operador <em>new</em> que retorna uma referência ao objeto criado.</p>
<p>Se você executar o exemplo acima vai notar que alteramos a propriedade <em>nome</em> dos objetos <em>class1</em> e <em>class2</em> e quando executamos o método <em>printNome()</em> de cada objeto ele exibe o nome que foi alterado para cada objeto, ou seja as classes compratilham um conjunto de atributos mas os valores de cada atributo pode ser diferente para cada objeto instânciado.</p>
<p>Você viu no exemplo anterior que utilizamos o método <em>Usuario()</em> para criar nosso objeto certo? Para ser mais preciso ele não é um método, é um <strong>Contrutor</strong> que é chamado quando criamos nosso objeto, ele é utilizado para inicializar o objeto quando ele é criado.</p>
<p>Para criar um construtor basta criar um método com o nome <em> function __construct(){}</em>, lembrando que como os métodos um contrutor pode ter argumentos como podemos ver a seguir:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nome</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Rodrigo&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$nome</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nome</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$nome</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Interessante não! Agora podemos contruir nossos objetos Usuario de duas formas.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$user1</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Usuario<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Usuario<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Rodrigo&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Notem que as duas formas agora são válidas, isto é chamado de sobrecarga de métodos.</p>
<p>Uma dica quando for trabalhar com objetos aconselho declara-los em uma arquivo <acronym title="Pre-Hypertext Processing">PHP</acronym> separado com o nome da classe e implui-los no script que irá utiliza-los com a função</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nomedoarquivo.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Isto fará com que tudo fique bem mais organizado!</p>
<p>Bom foi isso, esta foi uma pequane introdução a orientação a objetos consiste em bem mais coisas, mais coisas podem ser aprendidas no site <a href="http://www.digitalminds.com.br/tags/zenoop">O Zen e a arte cavalheiresca da programação orientada a objeto</a> e indico também o site <a href="http://www.phpclasses.org/" target="_blank">PHPClasses</a> que é um repositório de classes <acronym title="Pre-Hypertext Processing">PHP</acronym>(dá para achar muita coisa lá).</p>]]></content:encoded>
			<wfw:commentRss>http://www.botecodigital.info/php/classes-em-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
