<?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>voindo.eu &#124; Eduardo Pereira &#124; Web Design &#124; Develop</title>
	<atom:link href="http://www.voindo.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.voindo.eu</link>
	<description>usando a web</description>
	<lastBuildDate>Wed, 14 Dec 2011 12:55:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Problemas passando variáveis PHP para o Javascript</title>
		<link>http://www.voindo.eu/2011/09/23/problemas-passando-variaveis-php-para-o-javascript/</link>
		<comments>http://www.voindo.eu/2011/09/23/problemas-passando-variaveis-php-para-o-javascript/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 10:00:48 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Variáveis]]></category>

		<guid isPermaLink="false">http://www.voindo.eu/?p=438</guid>
		<description><![CDATA[Ora como falámos no post anterior existe um problema grande ao passarmos variáveis do PHP para o javascript. O PHP não se importa com quebras de linha, ou melhor ignora-as, o que quer dizer que o seguinte código: Vai gerar um output de primeira linha segunda linha terceira linha Portanto o PHP ignora quebras de linha. No entanto, seguindo o tutorial do anterior post, se o Javascript contiver o seguinte...]]></description>
			<content:encoded><![CDATA[<p>Ora como falámos no <a title="Acessar variáveis PHP em JAVASCRIPT" href="http://www.voindo.eu/2011/09/22/acessar-variaveis-php-em-javascript/">post anterior</a> existe um problema grande ao passarmos variáveis do PHP para o javascript. O PHP não se importa com quebras de linha, ou melhor ignora-as, o que quer dizer que o seguinte código:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
echo &quot;primeira linha
segunda linha
terceira linha&quot;;
?&gt;
</pre>
<p>Vai gerar um output de</p>
<blockquote><p>primeira linha segunda linha terceira linha</p></blockquote>
<p>Portanto o PHP ignora quebras de linha. No entanto, seguindo o tutorial do anterior post, se o Javascript contiver o seguinte código:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$var &quot;primeira linha
segunda linha
terceira linha \&quot;COM\&quot; aspas &amp; ainda 'aspas' simples&quot;;
?&gt;
window.onload = function () {
    alert(&quot;&lt;?php echo $var; ?&gt;&quot;);
};
</pre>
<p>Acontece que a seguir às tags do PHP <!--?php?--> o browser vai interpretar o restante como javascript e então o resultado seria o mesmo que termos:</p>
<pre class="brush: jscript; title: ; notranslate">
window.onload = function () {
    alert(&quot;primeira linha
segunda linha
terceira linha &quot;COM&quot; aspas &amp; ainda 'aspas' simples&quot;);
};
</pre>
<p>O que simplesmente iria gerar um erro de javascript no seu browser. Para além de o Javascript não suportar quebras de linha, ainda temos o problema de as aspas no meio da string que veio da variável do PHP, interferirem com as aspas do bloco de código javascript gerado. No que diz respeito às quebras de página do PHP temos de substiruir por /n que em javascript significa <em>newline</em> e em relação às aspas, temos de as manter visto que o echo do PHP exclui as mesmas ao fazer o output.</p>
<p>Então temos este código bonitinho que resolve estas situações.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$var &quot;primeira linha
segunda linha
terceira linha \&quot;COM\&quot; aspas &amp; ainda 'aspas' simples&quot;;
?&gt;
window.onload = function () {
    alert(&quot;&lt;?php echo preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, addslashes($var)); ?&gt;&quot;);
};
</pre>
<p>Assim o equivalente em javascript que irá ser gerado com o bloco de código anterior é o seguinte:</p>
<pre class="brush: jscript; title: ; notranslate">
window.onload = function () {
    alert(&quot;primeira linha\nsegunda linha\nterceira linha \&quot;COM\&quot; aspas &amp; ainda \'aspas\' simples&quot;);
};
</pre>
<p>Código javascript perfeitamente válido. E pronto não há mais problemas com erros ao passar variáveis de PHP para Javascript</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2011/09/23/problemas-passando-variaveis-php-para-o-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acessar variáveis PHP em JAVASCRIPT</title>
		<link>http://www.voindo.eu/2011/09/22/acessar-variaveis-php-em-javascript/</link>
		<comments>http://www.voindo.eu/2011/09/22/acessar-variaveis-php-em-javascript/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 17:23:21 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Variáveis]]></category>

		<guid isPermaLink="false">http://www.voindo.eu/?p=432</guid>
		<description><![CDATA[Um problema comum que pode acontecer quando estamos a programar em javascript é precisarmos de aceder a variáveis de PHP, sejam variáveis básicas, pré-definidas, superglobals ou qualquer outra coisa. Normalmente nestas situações, quando há essa necessidade, normalmente nunca vem só. Normalmente precisamos de aceder a mais que uma variável. Nestas condições o ideal será ao invés de criarmos uma nova inclusão de &#60;script&#62; com o ficheiro.js no &#60;head&#62;&#60;/head&#62; da nossa...]]></description>
			<content:encoded><![CDATA[<p>Um problema comum que pode acontecer quando estamos a programar em javascript é precisarmos de aceder a variáveis de PHP, sejam variáveis básicas, pré-definidas, superglobals ou qualquer outra coisa.</p>
<p>Normalmente nestas situações, quando há essa necessidade, normalmente nunca vem só. Normalmente precisamos de aceder a mais que uma variável. Nestas condições o ideal será ao invés de criarmos uma nova inclusão de &lt;script&gt; com o ficheiro.js no &lt;head&gt;&lt;/head&gt; da nossa página, chamamos o script da seguinte forma:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;head&gt;
    &lt;script src=&quot;scripts/script-normal.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;scripts/script-modificado.php&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
</pre>
<p>De notar que no código em cima chamamos dois scripts, e na segunda linha o scrip-modificado.php termina em PHP. Portanto este ficheiro vai ser carregado e interpretado pelo servidor como um ficheiro de PHP. Agora o conteúdo deste ficheiro será simples, como devem imaginar.</p>
<pre class="brush: php; title: ; notranslate">
    &lt;?php
        $var = &quot;CONTEUDO DA VARIAVEL&quot;;
    ?&gt;

    window.onload = function () {
        alert(&quot;&lt;?php echo $var; ?&gt;&quot;);
    };
</pre>
<p>Ora como o próprio código indica, entre as tags &lt;?php ?&gt; temos o nosso código PHP e na parte fora das tags &lt;?php ?&gt; é tudo executado pelo browser normalmente. Basicamente este ficheiro é interpretado pelo borwser como um ficheiro normal mas o servidor interpreta qualquer bloco de código PHP.</p>
<p>Agora existem um problema nesta situação, que é o facto de o PHP permitir quebras de linha (line breaks) ao passo que o javascript não. Mas deixamos este tópico para um futuro post.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2011/09/22/acessar-variaveis-php-em-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Função JavaScript equivalente ao PHP Explode</title>
		<link>http://www.voindo.eu/2011/03/24/funcao-javascript-equivalente-ao-php-explode/</link>
		<comments>http://www.voindo.eu/2011/03/24/funcao-javascript-equivalente-ao-php-explode/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 11:56:07 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[explode]]></category>
		<category><![CDATA[função]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.voindo.eu/?p=408</guid>
		<description><![CDATA[Em linguagem PHP conseguimos facilmente separar uma string grande em palavras, separando por um caractere à nossa escolha, usando a função explode(). Em execução podemos usar por exemplo o seguinte código: Como podemos ver pelo código, a variable $brokenstring vai ser uma array com todas as palavras separadas pelo espaço (" "), e não esquecer que o index começa em 0. Agora em JavaScript o método é parecido, usando a...]]></description>
			<content:encoded><![CDATA[<p>Em linguagem PHP conseguimos facilmente separar uma string grande em palavras, separando por um caractere à nossa escolha, usando a função <strong>explode()</strong>. Em execução podemos usar por exemplo o seguinte código:</p>
<pre class="brush: php; title: ; notranslate">
$longstring = &quot;Às vezes é complicado conseguirmos as soluções.&quot;;
$brokenstring = explode(&quot; &quot;, $longstring);
echo $brokenstring[0]; // Vai fazer echo à palavra &quot;Às&quot;
echo $brokenstring[1]; // Vai fazer echo à palavra &quot;vezes&quot;
</pre>
<p>Como podemos ver pelo código, a variable $brokenstring vai ser uma array com todas as palavras separadas pelo espaço (" "), e não esquecer que o index começa em 0.</p>
<p>Agora em JavaScript o método é parecido, usando a função <strong>split()</strong> que é muito idêntica alterando ligeiramente a sintaxe. Por exemplo tendo em as mesmas variáveis que o exemplo acima de PHP, fazemos:</p>
<pre class="brush: jscript; title: ; notranslate">
var longstring = &quot;Às vezes é complicado conseguirmos as soluções.&quot;;
var brokenstring = longstring.split(&quot; &quot;);
alert(brokenstring[0]); // Vai fazer alert com a palavra &quot;Às&quot;
alert(brokenstring[1]); // Vai fazer alert com a palavra &quot;vezes&quot;
</pre>
<p>Alterando um pouco a sintaxe, o efeito é o mesmo. Resultado é a variável brokenstring como array contendo as palavras, igualmente com index a começar em 0.</p>
<p>Simples <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2011/03/24/funcao-javascript-equivalente-ao-php-explode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Renomear tabela ou coluna em MySQL</title>
		<link>http://www.voindo.eu/2011/03/22/renomear-tabela-ou-coluna-em-mysql/</link>
		<comments>http://www.voindo.eu/2011/03/22/renomear-tabela-ou-coluna-em-mysql/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 14:55:52 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.voindo.eu/?p=389</guid>
		<description><![CDATA[Tendo como base de partida o MySQL 5.0, a forma de alterarmos o nome de uma tabela é trivial e simples com o comando/função "rename table". Outrora, renomear uma coluna, era extremamente confuso e complexo, mesmo lendo a documentação de trás para a frente. Deixamos alguns exemplos concretos para explicar melhor. Para renomear uma tabela de "nome_tabela" para "novo_nome_tabela": Para renomear uma coluna com o nome "id_exemplo" para "novo_id_exemplo" numa...]]></description>
			<content:encoded><![CDATA[<p>Tendo como base de partida o MySQL 5.0, a forma de alterarmos o nome de uma tabela é trivial e simples com o comando/função "rename table". Outrora, renomear uma coluna, era extremamente confuso e complexo, mesmo lendo a documentação de trás para a frente. Deixamos alguns exemplos concretos para explicar melhor.</p>
<p>Para <strong><a title="Manual MySQL" href="http://dev.mysql.com/doc/refman/5.0/en/rename-table.html" target="_blank"><strong>renomear uma tabela</strong></a></strong> de "nome_tabela" para "novo_nome_tabela":</p>
<pre class="brush: php; title: ; notranslate">
RENAME TABLE nome_tabela TO novo_nome_tabela;
</pre>
<p>Para <a href="http://dev.mysql.com/doc/refman/5.0/en/alter-table.html"><strong>renomear uma coluna</strong></a> com o nome "id_exemplo" para "novo_id_exemplo" numa tabela chamada "tabela_exemplo":</p>
<pre class="brush: php; title: ; notranslate">
ALTER TABLE tabela_exemplo CHANGE id_exemplo novo_id_exemplo integer(5) unsigned;
</pre>
<p>Portanto, quando quisermos renomear uma coluna, colocamos simplesmente o nome original em primeiro lugar e a seguir o novo nome. Não esquecer que é necessário incluir as especificações da coluna.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2011/03/22/renomear-tabela-ou-coluna-em-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Novo Website voindo.eu</title>
		<link>http://www.voindo.eu/2011/03/21/novo-website-voindo-eu/</link>
		<comments>http://www.voindo.eu/2011/03/21/novo-website-voindo-eu/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 20:54:28 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[Pessoal]]></category>

		<guid isPermaLink="false">http://www.voindo.eu/?p=383</guid>
		<description><![CDATA[Featuring Luna Maria]]></description>
			<content:encoded><![CDATA[<p>Featuring Luna Maria</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2011/03/21/novo-website-voindo-eu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paginação de resultados em PHP</title>
		<link>http://www.voindo.eu/2010/06/11/paginacao-de-resultados-em-php/</link>
		<comments>http://www.voindo.eu/2010/06/11/paginacao-de-resultados-em-php/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 11:26:39 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[paginação]]></category>

		<guid isPermaLink="false">http://blog.voindo.eu/?p=257</guid>
		<description><![CDATA[Este tutorial é destinado a todos os developer que necessitem de utilizar um sistema de paginação de resultados de uma base de dados, para que os mesmo sejam exibidos por páginas em vez da listagem completa. Muito útil quando apresentando grandes volumes de data. Partindo do principio que o utilizador tem conhecimentos base de PHP e MySQL. De notar que o exemplo apresentado é com base nestas linguagem mas qualquer...]]></description>
			<content:encoded><![CDATA[<p>Este tutorial é destinado a todos os developer que necessitem de utilizar um sistema de paginação de resultados de uma base de dados, para que os mesmo sejam exibidos por páginas em vez da listagem completa. Muito útil quando apresentando grandes volumes de data.</p>
<p>Partindo do principio que o utilizador tem conhecimentos base de PHP e MySQL. De notar que o exemplo apresentado é com base nestas linguagem mas qualquer sistema de base de dados que permita LIMIT e OFFSET nas querys SELECT podem ser usados.</p>
<p><span id="more-257"></span></p>
<p>Depois de ter necessitado deste sistema para alguns projectos, a forma mais simples que encontrei de fazer o pretendido é a seguinte:</p>
<h3>Obter o número da página pretendida:</h3>
<p>Com este bloco de código vamos saber que página foi pedida pelo utilizador. De notar que se não estiver definido o numero da página, então mostra a página 1.</p>
<pre class="brush: php; title: ; notranslate">
if (isset($_GET['pageno'])) {
   $pageno = $_GET['pageno'];
} else {
   $pageno = 1;
}
</pre>
<h3>Saber quantas linhas vão ser apresentadas na base de dados:</h3>
<p>Este bloco de código vai detectar quantas linhas serão apresentadas no nosso query à base de dados.</p>
<pre class="brush: php; title: ; notranslate">
// Query Basedados
$q = &quot;SELECT * FROM tabela WHERE exemplo=exemplo&quot;;
$result = mysql_query($q, $DBconnection);
$numrows = mysql_num_rows($result);
</pre>
<h3>Calcular numero de páginas:</h3>
<p>Este bloco utiliza valores predefinidos. <b>$rows_per_page</b> é hardcoded pelo developer para definir quantos resultados por página, enquanto <b>$numrows</b> é o total de resultados no bloco de código anterior. Utilizamos também a função <b>ceil</b> do php que arredonda qualquer valor numérico para o numero inteiro exactamente a seguir de qualquer fracção que resulte.</p>
<pre class="brush: php; title: ; notranslate">
$rows_per_page = 15;
$lastpage      = ceil($numrows/$rows_per_page);
</pre>
<h3>Garantir que página pretendida é válida:</h3>
<p>Neste bloco vamos assegurar que a página pretendida (<b>$pageno</b>) está dentro das possíveis páginas, isto é, menor ou igual à ultima página (<b>$lastpage</b>)</p>
<pre class="brush: php; title: ; notranslate">
$pageno = (int)$pageno;
if ($pageno &gt; $lastpage) {
   $pageno = $lastpage;
}

if ($pageno &lt; 1) {
   $pageno = 1;
}
</pre>
<h3>Construir a cláusula LIMIT para MySQL e executar o SELECT com o LIMIT:</h3>
<p>Agora vamos construir a cláusula LIMIT para o comando SELECT do MySQL. P.ex. (LIMIT 10, 5) que iria exibir cinco resultados a contar do 11º que corresponde à terceira página. De seguida executamos o comando SELECT com o LIMIT construído.</p>
<pre class="brush: php; title: ; notranslate">
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
$query = &quot;SELECT * FROM table $limit&quot;;
$result = mysql_query($query, $db) or trigger_error(&quot;SQL&quot;, E_USER_ERROR);
/* processamos os resultados do $result */
</pre>
<h3>Construir os links de paginação:</h3>
<p>Finalmente podemos construir os links de paginação que permitirá os utilizadores navegarem por entre as páginas de resultados.</p>
<pre class="brush: php; title: ; notranslate">
if ($pageno == 1) {
	// Se página actual é igual a UM não há resultados anteriores
	echo &quot; FIRST PREV &quot;;
} else {
	// Se página actual é superior a UM então activa links anteriores
	echo &quot; &lt;a href='{$_SERVER['PHP_SELF']}?pageno=1'&gt;FIRST&lt;/a&gt; &quot;;
	$prevpage = $pageno-1;
	echo &quot; &lt;a href='{$_SERVER['PHP_SELF']}?pageno=$prevpage'&gt;PREV&lt;/a&gt; &quot;;
}

// Mostrar página actual e o total de páginas
echo &quot; ( Página: $pageno de $lastpage ) &quot;;

if ($pageno == $lastpage) {
	// Se página actual é igual à ultima, não há resultados a seguir
	echo &quot; NEXT LAST &quot;;
} else {
	// Se página actual é diferente da ultima mostra links de resultados a seguir
	$nextpage = $pageno+1;
	echo &quot; &lt;a href='{$_SERVER['PHP_SELF']}?pageno=$nextpage'&gt;NEXT&lt;/a&gt; &quot;;
	echo &quot; &lt;a href='{$_SERVER['PHP_SELF']}?pageno=$lastpage'&gt;LAST&lt;/a&gt; &quot;;
}
</pre>
<p>E prontinho. É tudo o que há para fazer. Claro que podemos elaborar muito mais toda esta coisa. Mais tarde irei fazer um update a este post e mostrar como se pode acrescentar selector de página e trabalhar com ordenação de resultados como fiz para o site http://www.hd-subs.com/legendas.php</p>
<p>Para já é tudo, obrigado <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2010/06/11/paginacao-de-resultados-em-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial completo MySQL com PHP</title>
		<link>http://www.voindo.eu/2010/06/01/tutorial-completo-mysql-com-php/</link>
		<comments>http://www.voindo.eu/2010/06/01/tutorial-completo-mysql-com-php/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 12:59:43 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.voindo.eu/?p=247</guid>
		<description><![CDATA[Hoje em dia, sites dinâmicos são uma constante na web. Longe vai o tempo que os sites eram simples páginas estáticas HTML. Os conteúdos armazenados, interacção com utilizadores, gestão de conteúdos são peças chave dos sites de hoje. Grande pilar nesta dinamização está as base de dados. Não sendo obrigatório como é natural, é um complemento eficaz no armazenamento da informação. Neste tutorial vamos passar pela utilização de base e...]]></description>
			<content:encoded><![CDATA[<p>Hoje em dia, sites dinâmicos são uma constante na web. Longe vai o tempo que os sites eram simples páginas estáticas HTML.</p>
<p>Os conteúdos armazenados, interacção com utilizadores, gestão de conteúdos são peças chave dos sites de hoje. Grande pilar nesta dinamização está as base de dados. Não sendo obrigatório como é natural, é um complemento eficaz no armazenamento da informação.</p>
<p>Neste tutorial vamos passar pela utilização de base e dados MySQL com PHP. Lamento o facto de apenas falar em PHP e material opensource, mas é assim a vida, só há lugar para as coisas boas <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-247"></span></p>
<p>Partindo do principio que já está instalado o PHP e o MySQL vamos passar à frente dessa parte.</p>
<p>Contudo poderá usar o WAMP para windows, muito bom e fácil de instalar:</p>
<ul>
<li><a href="http://www.wampserver.com/en/">Download WAMP Server</a></li>
</ul>
<p></p>
<h3>Criar uma base de dados:</h3>
<p>Vamos criar uma base de dados com o nome <b>teste</b> e uma única tabela com o nome <b>utilizadores</b>. Em baixo deixo o código para criar a base de dados, respectiva tabela e adicionar dados de exemplo.</p>
<pre class="brush: sql; title: ; notranslate">
      CREATE DATABASE if NOT EXISTS `teste`;
      USE teste;
      CREATE TABLE `utilizadores` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `nome` VARCHAR(100) DEFAULT NULL,
      `cidade` VARCHAR(100) DEFAULT NULL,
      `web` VARCHAR(100) DEFAULT NULL,
      `idade` SMALLINT(6) DEFAULT NULL,
      PRIMARY KEY (`id`)
      ) ENGINE=INNODB DEFAULT CHARSET=latin1;

      INSERT INTO `users`(`id`,`nome`,`cidade`,`web`,`idade`) VALUES (1,'Miguel','Lisboa','www.miguel.com',25);
      INSERT INTO `users`(`id`,`nome`,`cidade`,`web`,`idade`) VALUES (2,'Joao','Setubal','www.joao.com',37);
      INSERT INTO `users`(`id`,`nome`,`cidade`,`web`,`idade`) VALUES (3,'Ana','Porto','www.ana.com',24);
      INSERT INTO `users`(`id`,`nome`,`cidade`,`web`,`idade`) VALUES (4,'Diogo','Coimbra','www.diogo.com',19);
      INSERT INTO `users`(`id`,`nome`,`cidade`,`web`,`idade`) VALUES (5,'Julia','Lisboa','www.julia.com',20);
</pre>
<p></p>
<h3>Conectando à base de dados:</h3>
<p>Para nos conectarmos à base de dados usando o PHP (Ou qualquer outra linguagem de programação) precisamos de estabelecer uma ligação. Para esta ligação precisamos sempre de alguns dados importantes:</p>
<ul>
<li>hostname (nome do servidor)</li>
<li>username da base de dados</li>
<li>password</li>
<li>nome da base de dados</li>
</ul>
<p>O procedimento básico é efectuarmos uma ligação e autenticação ao MySQL, e de seguida escolher a base de dados a trabalhar. Neste caso ponderamos já o caso de a ligação falhar (devido a password inválida ou permissões inválidas), e caso falhe não faz sentido continuarmos com o script. Portanto:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$hostname = &quot;localhost&quot;;	// Vamos considerar localhost ou máquina local
	$username = &quot;userTeste&quot;; 	// Username é userTeste
	$password = &quot;passTeste&quot; 	// Password é passTeste (Cuidado com maiúsculas e minúsculas

	mysql_connect(&quot;$hostname&quot;, &quot;$username&quot;, &quot;$password&quot;) or die(mysql_error());
	echo &quot;Conexão efectuada com sucesso!&lt;br/&gt;&quot;;

	mysql_select_db(&quot;teste&quot;) or die(mysql_error());
	echo &quot;Base de dados seleccionada!&lt;br/&gt;&quot;;
?&gt;
</pre>
<p>Como se pode verificar, usando a função interna do PHP <b>mysql_connect()</b> estabelecemos uma ligação ao servidor MySQL. Com a variável <b>or die</b> no caso da mesma falhar.</p>
<p>De seguida escolhemos a base de dados a trabalhar com a função <b>mysql_select_db()</b></p>
<p>Se estiver tudo criado e corrermos o script o resultado será algo parecido a:</p>
<blockquote><p>
Conexão efectuada com sucesso!<br />
Base de dados seleccionada!
</p></blockquote>
<p></p>
<h3>Fechar a conexão</h3>
<p>Antes de continuarmos, queria falar já no oposto a esta operação. Isto é fechar a ligação. Por motivos de segurança poderá ser necessário fechar a conexão à base de dados. Contudo desde o PHP4 que não é necessário fecharmos conexões à base de dados, porque o PHP efectua uma operação automática chamada de <b>garbage collector</b> ainda assim a função interna do PHP é <b>mysql_close()</b></p>
<p></p>
<h3>Obter dados da base de dados:</h3>
<p>Agora passamos a algo mais interessante deste processo. Ver coisas a acontecer. Neste caso vamos obter informação retida na tabela. Basicamente vamos trabalhar com o PHP para enviar comandos SQL ao servidor MySQL. Vamos começar com o comando para obter TODA a informação da tabela "utilizadores" da nossa base de dados "teste" onde o comando aplicável é:</p>
<blockquote><p>SELECT * FROM users;</p></blockquote>
<p>Portanto querendo obter toda a informação com o seguinte comando, precisamos de a armazenar. Vamos efectuar esta operação com a função PHP <b>mysql_query()</b>, que é uma função para executar comandos SQL, e neste caso é da seguinte forma:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$hostname = &quot;localhost&quot;;	// Vamos considerar localhost ou máquina local
        $username = &quot;userTeste&quot;; 	// Username é userTeste
	$password = &quot;passTeste&quot; 	// Password é passTeste (Cuidado com maiúsculas e minúsculas

	mysql_connect(&quot;$hostname&quot;, &quot;$username&quot;, &quot;$password&quot;) or die(mysql_error());
	mysql_select_db(&quot;teste&quot;) or die(mysql_error());

	$result = mysql_query(&quot;SELECT * FROM utilizadores&quot;);
	echo $result;
?&gt;
</pre>
<p>Pois muito bem, até aqui tudo muito simples, e temos todo o conteúdo numa variável <b>$result</b> mas esta variável ficou de facto automaticamente numa <b>array()</b> porque foi adicionado um conjunto de dados. Se tentarmos imprimir o conteúdo da variável para o ecrã com um <b>echo</b> como mostra o código em cima, o resultado será algo parecido a isto:</p>
<blockquote><p>Resource id #3</p></blockquote>
<p>E isto não é de facto o que queremos como resultado. Para vermos o resultado precisamos de elaborar o código um pouco mais. Existem funções internas do PHP para mostrar colecções de dados (ARRAYS). Alguns casos:</p>
<ul>
<li>mysql_fetch_assoc() - Obtém um linha de resultados como uma array associativa (pelo nome)</li>
<li>mysql_fetch_row() - Obtém uma linha de resultado como uma array numerada (numeradas)</li>
<li>mysql_fetch_array() - Obtém uma linha de resultado como uma array associativa, numerada ou ambas</li>
</ul>
<p>Todas estas funções convertem uma célula de informação da tabela para uma posição num ARRAY para que depois possamos utilizar a informação guardada na variável ARRAY como quisermos. No próximo exemplo vamos usar associativa:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
      $row = mysql_fetch_assoc($result);
      echo &quot;ID: &quot;.$row['id'].&quot;, Nome:&quot;.$row['nome'].&quot;, Cidade:&quot;.$row['cidade'].&quot;, Idade:&quot;.$row['idade'].&quot;&lt;br/&gt;&quot;;
?&gt;
</pre>
<p>Contudo, isto mostra apenas uma linha da tabela. Isto porque lembrem-se que todas as funções internas do PHP para obtenção de informação da base de dados é relativa a <b>uma linha</b> portanto como nós queremos obter toda a informação na tabela temos de usar um ciclo WHILE LOOP para armazenar todas as linhas da tabela. Assim sendo:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$result = mysql_query(&quot;SELECT * FROM utilizadores&quot;);

	while($row = mysql_fetch_assoc($result)){
		echo &quot;ID: &quot;.$row['id'].&quot;, Nome:&quot;.$row['nome'].&quot;, Cidade:&quot;.$row['cidade'].&quot;, Idade:&quot;.$row['idade'].&quot;&lt;br/&gt;&quot;;
	}
?&gt;
</pre>
<p>Como se pode verificar não é complicado, ao efectuar um ciclo WHILE que percorre em loop até não haver mais linhas na tabela, e em cada ciclo faz o output da informação com ECHO</p>
<p></p>
<h3>Inserir, actualizar e remover dados da tabela</h3>
<p>Estes próximos passos são de maior importância, contudo sempre com expressões simples e de fácil entendimento.</p>
<p><b>Inserir dados na tabela</b><br />
Para inserir novos dados na tabela usamos comandos SQP muito parecidos com o <b>select</b> como no exemplo anterior para seleccionar informação. Inclusive o comando de <b>insert</b> é igualmente usado com a função <b>mysql_query()</b>. Portanto vamos fazer um exemplo de como adicionar novo utilizador à nossa tabela, em que o comando SQL seria:</p>
<blockquote><p>INSERT INTO utilizadores(nome,cidade,web,idade) VALUES ('Antonio','Aveiro','www.antonio.com',44);</p></blockquote>
<p>Portanto para executarmos este comando com a função <b>mysql_query()</b> fazes o seguinte:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$comando_sql = &quot;INSERT INTO utilizadores(nome,cidade,web,idade) VALUES ('Antonio','Aveiro','www.antonio.com',44)&quot;;
	$result = mysql_query($comando_sql);
?&gt;
</pre>
<p>Neste caso é então adicionado à tabela "utilizadores" uma nova entrada (linha) com os dados referidos.</p>
<p><b>Actualizar uma entrada (Linha) na tabela:</b><br />
Básicamente igual, as únicas alterações é no comando SQL, portanto:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$sql = &quot;UPDATE utilizadores SET idade=45 WHERE nome='Antonio'&quot;;
	$result = mysql_query($sql);
?&gt;
</pre>
<p>Nesta actualização usamos o comando UPDATE e dizemos com SET que a idade é neste caso 45 na tabela onde o nome é igual a Antonio (WHERE nome='Antonio').</p>
<p><b>Remover uma entrada:</b><br />
Outra vez praticamente igual, mudamos o comando SQL para:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$sql = &quot;DELETE FROM utilizadores WHERE nome='Antonio'&quot;;
	$result = mysql_query($sql);
?&gt;
</pre>
<p>E aqui está, remover a linha onde o nome é igual a antonio.</p>
<p></p>
<h3>Aqui fica o script completo com todos os passos e comandos, num só ficheiro</h3>
<p></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	$hostname = &quot;localhost&quot;;	// Vamos considerar localhost ou máquina local
	$username = &quot;userTeste&quot;; 	// Username é userTeste
	$password = &quot;passTeste&quot; 	// Password é passTeste (Cuidado com maiúsculas e minúsculas

	mysql_connect(&quot;$hostname&quot;, &quot;$username&quot;, &quot;$password&quot;) or die(mysql_error());
	mysql_select_db(&quot;teste&quot;) or die(mysql_error());

	echo &quot;&lt;br/&gt;Passo 1. Inserir data&lt;br/&gt;&lt;hr/&gt;&quot;;

	$sql = &quot;INSERT INTO utilizadores (nome,cidade,web,idade) VALUES ('Antonio','Aveiro','www.antonio.com',5)&quot;;
	$result = mysql_query($sql);
	if ($result){ // verifica se o resultado é positivo, portanto se o comando foi executado;
		echo &quot;Dados inseridos!&lt;br/&gt;&quot;;
	} else {
		echo &quot;Ocurreu um erro ao inserir!&lt;br/&gt;&quot;;
	}

	$result = mysql_query(&quot;SELECT * FROM utilizadores&quot;);
	while($row = mysql_fetch_assoc($result)){
		echo &quot;ID: &quot;.$row['id'].&quot;, Nome:&quot;.$row['nome'].&quot;, Cidade:&quot;.$row['cidade'].&quot;, Idade:&quot;.$row['idade'].&quot;&lt;br/&gt;&quot;;
	}

	echo &quot;&lt;br/&gt;Passo 2. Actualizar data&lt;br/&gt;&lt;hr/&gt;&quot;;

	$sql = &quot;UPDATE utilizadores SET idade=45 WHERE nome='Antonio'&quot;;
	$result = mysql_query($sql);

	if ($result){ // verifica se o resultado é positivo, portanto se o comando foi executado;
		echo &quot;Dados actualizados!&lt;br/&gt;&quot;;
	} else {
		echo &quot;Occureu um erro ao actualizar os dados!&lt;br/&gt;&quot;;
	}

	$result = mysql_query(&quot;SELECT * FROM utilizadores&quot;);
	while($row = mysql_fetch_assoc($result)){
		echo &quot;ID: &quot;.$row['id'].&quot;, Nome:&quot;.$row['nome'].&quot;, Cidade:&quot;.$row['cidade'].&quot;, Idade:&quot;.$row['idade'].&quot;&lt;br/&gt;&quot;;
	}

	echo &quot;&lt;br/&gt;Passo 3. Remover data&lt;hr/&gt;&quot;;

	$sql = &quot;DELETE FROM utilizadores WHERE nome='Antonio'&quot;;
	$result = mysql_query($sql);

	if ($result){ // verifica se o resultado é positivo, portanto se o comando foi executado;
		echo &quot;Dados foram removidos!&lt;br/&gt;&quot;;
	} else {
		echo &quot;Ocurreu um erro ao remover os dados!&lt;br/&gt;&quot;;
	}

	$result = mysql_query(&quot;SELECT * FROM utilizadores&quot;);
	while($row = mysql_fetch_assoc($result)){
		echo &quot;ID: &quot;.$row['id'].&quot;, Nome:&quot;.$row['nome'].&quot;, Cidade:&quot;.$row['cidade'].&quot;, Idade:&quot;.$row['idade'].&quot;&lt;br/&gt;&quot;;
	}
?&gt;
</pre>
<p>
Espero que este tutorial tenha sido de interesse. Mais tarde falarei em pormenor sobre alguns dos passos aqui. Obrigado e abraços <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2010/06/01/tutorial-completo-mysql-com-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Friendly URLs com mod_rewrite (URLs Amigáveis)</title>
		<link>http://www.voindo.eu/2010/05/25/wertwert/</link>
		<comments>http://www.voindo.eu/2010/05/25/wertwert/#comments</comments>
		<pubDate>Tue, 25 May 2010 09:58:14 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[SEF]]></category>

		<guid isPermaLink="false">http://blog.voindo.eu/index.php/2010/05/25/wertwert/</guid>
		<description><![CDATA[Recentemente ultrapassei uma barreira. SEF URL's do meu site www.hd.subs.com com o método mod_rewrite. De facto havia esta necessidade, e esta barreira técnica para ultrapassar. As únicas vezes que tinha trabalhado neste tema, era usando componentes para o Joomla ou outros afins. Agora vou passar pelo tutorial que usei, e concretamente o exemplo em prática no site hd-subs.com Arrumar e limpar os URLs usando o método mod_rewrite. Não só vai...]]></description>
			<content:encoded><![CDATA[<p>Recentemente ultrapassei uma barreira. SEF URL's do meu site www.hd.subs.com com o método mod_rewrite. De facto havia esta necessidade, e esta barreira técnica para ultrapassar. As únicas vezes que tinha trabalhado neste tema, era usando componentes para o Joomla ou outros afins.</p>
<p>Agora vou passar pelo tutorial que usei, e concretamente o exemplo em prática no site hd-subs.com</p>
<p><span id="more-234"></span></p>
<p><strong>Arrumar e limpar os URLs usando o método mod_rewrite. Não só vai esconder os querys realizados no PHP mas também vai mostrar o URL mais amigável ao utilizador e especialmente aos Search Engines.</strong></p>
<p>Friendly URLs (Ou endereços amigáveis <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  são algo deveras importante no desenvolvimento de sites dinâmicos de hoje em dia. Endereços com querys são comuns em sites complexos, grandes e dinâmicos. O próprio Joomla consegue gerar uma série destes URLs dinâmicos, tornando os links complexos e quase imperceptíveis ao olho do comum utilizador. Note-se que os crawlers dos search engines são mais básicos ainda. Assim tornar os URLs amigáveis, não só ajuda na fácil percepção do conteúdo do URL como também ajuda na indexação por parte dos Search Engines. Vamos então seguir um tutorial achado na web, e mais à frente as alterações efectuadas por mim para a implementação deste mesmo tutorial.</p>
<p><strong>Pré-requisitos:</strong></p>
<p>É necessário o site estar alojado num servidor com Apache e com o módulo mod_rewrite devidamente instalado e activado.</p>
<p><strong>Planeamento:</strong></p>
<p>É imperativo estudar o que queremos fazer antes de começarmos as alterações. Efectuar alterações deste género periodicamente vai arrasar a indexação que os motores de pesquisa têm sobre o nosso site. Vamos ver o seguinte exemplo:</p>
<p>Query String URL: http://yoursite.com/tutorials.php?req=tutorial&#038;id=3&#038;page=0</p>
<p>mod_rewrite URL: http://yoursite.com/tutorials/3/0.php</p>
<p>Não parece tudo muito mais simples!?<br />
Portanto depois deste estudo de como queremos que os nossos URLs fiquem, e termos o Apache pronto e configurado, podemos seguir para a criação do nosso ficheiro .htaccess que terá as indicações de como escrever os novos URLs. Segue um exemplo:</p>
<p><strong>RewriteEngine On</strong></p>
<p>RewriteRule ^tutorials/(.*)/(.*).php /tutorials.php?req=tutorial&#038;tut_id=$1&#038;page=$2</p>
<p>Neste exemplo temos duas linhas. A primeira temos apenas "RewriteEngine On" que inicia o módulo do apache mod_rewrite. A segunda linha fará todo o trabalho.</p>
<p><strong>RewriteRule</strong>  ^tutorials/(.*)/(.*).php /tutorials.php?req=tutorial&#038;tut_id=$1&#038;page=$2</p>
<p>Aqui iniciamos a regra a utilizar</p>
<p>RewriteRule  <strong>^tutorials/(.*)/(.*).php</strong> /tutorials.php?req=tutorial&#038;tut_id=$1&#038;page=$2</p>
<p>Aqui começa a função regex que nos permite criar wildcards para a criação do URL amigável. Neste exemplo dizemos que podemos utilizar qualquer coisa no lugar de (.*) em comparação com a segunda parte da regra RewriteRule</p>
<p>RewriteRule  ^tutorials/(.*)/(.*).php <strong>/tutorials.php?req=tutorial&#038;tut_id=$1&#038;page=$2</strong></p>
<p>Esta é a parte final da regra RewriteRule que dirá como mapear o URL desta segunda parte num URL amigável na primeira parte. Portanto o mod_rewrite traduzirá a parte dois para a parte um automáticamente.</p>
<p>Isto acontece usando regex. O primeiro (.*) será considerado o $1 e o segundo (.*) será considerado o $2 na tradução da regra em cima.</p>
<p>Acredite ou não é tão simples quanto isto. Claro que precisamos de adaptar isto tudo muito bem...</p>
<p>Agora algo que não encontrei nos tutoriais que andei a ver, é o seguinte. Tudo muito bem, temos os URLs a funcionarem, mas os links internos no nosso site continuam a apontar para os URLs dinâmicos. Portanto temos de ir ao nosso código e alterar os blocos de código onde os links são criados e dar-lhe a nova forma em versão amigável, porque aí sim depois o mod_rewrite fará a magia... URLs amigáveis ele traduz internamente em URLs dinâmicos e os scripts funcionam novamente...</p>
<p>info baseada em: <a href="http://www.devshed.com/c/a/Apache/Search-Engine-Friendly-URLs-with-mod-rewrite/">devshed</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2010/05/25/wertwert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alterar conteúdo DIV com javascript (jQuery)</title>
		<link>http://www.voindo.eu/2010/05/10/alterar-conteudo-div-com-javascript-jquery/</link>
		<comments>http://www.voindo.eu/2010/05/10/alterar-conteudo-div-com-javascript-jquery/#comments</comments>
		<pubDate>Mon, 10 May 2010 13:22:41 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://blog.voindo.eu/?p=208</guid>
		<description><![CDATA[Este é um pequeno tutorial cobre uma pequena operação básica de jQuery. Como alterar o conteúdo de um elemento HTML (p.ex. DIV) com javascript jQuery. Criar um novo documento HTML com o código: Neste momento a página que criamos apenas carrega a biblioteca jQuery. Vamos então adicionar algum código HTML para servir como exemplo: Código jQuery: Agora vamos adicionar código para que o conteúdo da division 'caixaTexto' seja alterado assim...]]></description>
			<content:encoded><![CDATA[<p>Este é um pequeno tutorial cobre uma pequena operação básica de jQuery. Como alterar o conteúdo de um elemento HTML (p.ex. DIV) com javascript jQuery.</p>
<p><span id="more-208"></span></p>
<p>Criar um novo documento HTML com o código:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Página teste jQuery &lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
// javascript código (jQuery)
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;--- HTML aqui --&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Neste momento a página que criamos apenas carrega a biblioteca jQuery.</p>
<p>Vamos então adicionar algum código HTML para servir como exemplo:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a id=&quot;linkAltera&quot;&gt;Alterar conteúdo&lt;/a&gt;
&lt;br /&gt;
&lt;div id=&quot;caixaTexto&quot;&gt;Este conteúdo será alterado para outra coisa qualquer&lt;/div&gt;
</pre>
<p><strong>Código jQuery:</strong><br />
Agora vamos adicionar código para que o conteúdo da division 'caixaTexto' seja alterado assim que clicarmos no link 'linkAltera'</p>
<pre class="brush: jscript; title: ; notranslate">
$(document).ready(function() {
$(&quot;#linkAltera&quot;).click(function() {
$(&quot;#caixaTexto&quot;).html(&quot;Este é o novo texto heehe!&quot;);
});
});
</pre>
<p>Assim que a págiuna for carregada no browser, uma função é declarada para o link com o ID 'linkAltera', que fará que assim que for clicado, o conteúdo da DIV com o ID 'caixaTexto' será alterado para o especificado.</p>
<p><strong>Código final completo:</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Página teste jQuery &lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function() {
$(&quot;#linkAltera&quot;).click(function() {
$(&quot;#caixaTexto&quot;).html(&quot;Este é o novo texto heehe!&quot;);
});
});
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a id=&quot;linkAltera&quot;&gt;Alterar conteúdo&lt;/a&gt;
&lt;br /&gt;
&lt;div id=&quot;caixaTexto&quot;&gt;Este conteúdo será alterado para outra coisa qualquer&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Prontinho, simples função para alterar conteúdo HTML via javascrip jQuery</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2010/05/10/alterar-conteudo-div-com-javascript-jquery/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Criar ficheiros ZIP com PHP</title>
		<link>http://www.voindo.eu/2010/05/06/criar-ficheiros-zip-com-php/</link>
		<comments>http://www.voindo.eu/2010/05/06/criar-ficheiros-zip-com-php/#comments</comments>
		<pubDate>Thu, 06 May 2010 21:30:14 +0000</pubDate>
		<dc:creator>eduardo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[zip PELC]]></category>

		<guid isPermaLink="false">http://blog.voindo.eu/?p=189</guid>
		<description><![CDATA[Criar arquivos .ZIP através de PHP é algo possivelmente muito necessário e comum, e também relativamente simples. Passo a passo, vou passar pelos requisitos para poder utilizar as funções ZIP do PHP e a utilização das mesmas. Para que as funções de ZIP funcionem correctamente no servidor em questão temos de instalar e activar a bibliotecas (Libraries) no servidor. Apenas falarei de APACHE em Linux ou Windows neste post, Microsoft...]]></description>
			<content:encoded><![CDATA[<p>Criar arquivos .ZIP através de PHP é algo possivelmente muito necessário e comum, e também relativamente simples.</p>
<p>Passo a passo, vou passar pelos requisitos para poder utilizar as funções ZIP do PHP e a utilização das mesmas.</p>
<p><span id="more-189"></span></p>
<p>Para que as funções de ZIP funcionem correctamente no servidor em questão temos de instalar e activar a bibliotecas (Libraries) no servidor.</p>
<blockquote><p>Apenas falarei de APACHE em Linux ou Windows neste post, Microsoft IIS fica para possivelmente nunca <img src='http://www.voindo.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></blockquote>
<p>&nbsp;</p>
<h3>Instalação:</h3>
<p>As seguintes <em>libraries</em> são necessárias:</p>
<ul>
<li>A library ZZIPlib de Guido Draheim: <a href="http://zziplib.sourceforge.net/download.html">Download ZZIPlib</a></li>
<li>A extenção Zip PELC: <a href="http://snaps.php.net/">Zip PELC</a></li>
</ul>
<p><strong>Instalação em Sistemas Linux</strong></p>
<p>PHP 5+: As funções de ZIP e respectivas libraries não vêm activadas por defeito, por isso precisa de fazer o download e usar a opção de configuração --with-zip=DIR para incluir suporte de ZIP quando instala o PHP</p>
<p><strong>Instalação em Sistemas Windows</strong></p>
<p>PHP 5+: As funções de ZIP e respectivas libraries não vêm activadas por defeito, por isso tem de fazer o download do ficheiro php_zip.dll e a library ZZIPlib library e activar o php_zip.dll no ficheiro de configuração php.ini.</p>
<p>Para activar qualquer extenção de PHP, a opção "extension_dir setting" do PHP (no ficheiro php.ini) tem de ser configurada para a directoria onde as extenções do PHP estão (normalmente em c:phpext)</p>
<h3>Usar as funções ZIP:</h3>
<p>Vamos lá então ao código para usar as funções de ZIP, primeiro a bela da função:</p>
<pre class="brush: php; title: ; notranslate">
/* criar um ficheiro ZIP */
function create_zip($files = array(),$destination = '',$overwrite = false) {
	//Se o ficheiro existe, e overwrite é falso, return false
	if(file_exists($destination) &amp;&amp; !$overwrite) { return false; }
	//variaveis
	$valid_files = array();
	//Se foi dado os files...
	if(is_array($files)) {
		//ciclo por cada ficheiro
		foreach($files as $file) {
			//certificar se ficheiro existe mesmo
			if(file_exists($file)) {
				$valid_files[] = $file;
			}
		}
	}
	//se temos então bons ficheiros...
	if(count($valid_files)) {
		//criar o arquivo ZIP
		$zip = new ZipArchive();
		if($zip-&gt;open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		//adicionar os ditos finheiros
		foreach($valid_files as $file) {
			$zip-&gt;addFile($file,$file);
		}
		//debug
		//echo 'O arquivo ZIP contem ',$zip-&gt;numFiles,' files com o estado de ',$zip-&gt;status;

		//fechar o zip -- done!
		$zip-&gt;close();

		//verificar se o ZIP foi bem criado
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}
</pre>
<p>Então bora lá usar a função que acabamos de criar:</p>
<pre class="brush: php; title: ; notranslate">
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'teste/umgifzito.gif',
	'outra.jpg',
	'eoutra.gif'
);
//if true, correu tudo bem; if false, correu algo errado com a criação do ZIP
$result = create_zip($files_to_zip,'my-archive.zip');
</pre>
<p>E pronto, simples. Falaremos mais sobre isto, até porque há muito para dizer sobre o zip. Inclusive no decorrer do desenvolvimento do site <a href="http://www.hd-subs.com">hd-subs.com</a> deparei-me com algumas dificuldades, sobre UnZIP e Zip e mais importante algo que irei debater brevemente é os ZIP's criados com estas funções serem abertos pelo Mac OSX interface.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.voindo.eu/2010/05/06/criar-ficheiros-zip-com-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

