<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8641587540606110224</id><updated>2024-09-11T08:57:04.659-07:00</updated><category term="codeigniter"/><category term="CI"/><category term="php"/><category term="formulario"/><category term="funcoes"/><category term="validacao"/><category term="be-a-ba"/><category term="imagem"/><category term="mysql"/><category term="Active Record"/><category term="artigo"/><category term="config.php"/><category term="configuração"/><category term="template"/><category term="upload de arquivos"/><category term="IDE"/><category term="SimpleXML"/><category term="autoload.php"/><category term="banco de dados"/><category term="cnpj"/><category term="como"/><category term="cpf"/><category term="crowdsourcing"/><category term="css"/><category term="database.php"/><category term="desenvolvimento de jogos"/><category term="dicas"/><category term="framework"/><category term="html"/><category term="html templates"/><category term="importar"/><category term="index.php"/><category term="jogo em php"/><category term="jogo online"/><category term="login"/><category term="pagseguro"/><category term="recursivas"/><category term="retorno automatico"/><category term="select_sum"/><category term="sistema"/><category term="subquery"/><category term="tema"/><category term="templates"/><category term="url"/><category term="verificar"/><category term="versão"/><category term="xml"/><title type='text'>Programando Todo Dia</title><subtitle type='html'>PHP Avançado, CSS, CodeIgniter, Zend, Wordpres e muitas outras coisas!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-6386652441394297251</id><published>2022-07-20T09:14:00.001-07:00</published><updated>2022-07-20T09:14:17.590-07:00</updated><title type='text'>Novo blog!</title><content type='html'>&lt;p&gt;&amp;nbsp;Depois de alguns anos em off...&lt;/p&gt;&lt;p&gt;Segue o link do meu novo blog!!&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.technote.com.br&quot; target=&quot;_blank&quot;&gt;TechNote&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Abs!!&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/6386652441394297251/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2022/07/novo-blog.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6386652441394297251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6386652441394297251'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2022/07/novo-blog.html' title='Novo blog!'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-4015004222394487204</id><published>2016-07-14T20:20:00.000-07:00</published><updated>2016-07-14T20:21:02.597-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dicas"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="html templates"/><category scheme="http://www.blogger.com/atom/ns#" term="template"/><category scheme="http://www.blogger.com/atom/ns#" term="templates"/><title type='text'>Dica: Sites para download de templates HTML para sites e área administrativas</title><content type='html'>Salve!&lt;br /&gt;
&lt;br /&gt;
Eu, como bom engenheiro, matemático e de raciocínio lógico, tenho enorme dificuldade para criar sites, ou interfaces amigáveis que sejam &quot;bonitas&quot;.&lt;br /&gt;
&lt;br /&gt;
Para isso eu tenho procurado alguns templates de sites na Web e vou postar aqui o que encontrei de melhor!&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.free-css.com/&quot;&gt;http://www.free-css.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://designscrazed.org/free-responsive-html5-css3-templates/&quot;&gt;https://designscrazed.org/free-responsive-html5-css3-templates/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://templated.co/&quot;&gt;https://templated.co&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://speckyboy.com/2015/03/26/20-free-html5-web-templates/&quot;&gt;https://speckyboy.com/2015/03/26/20-free-html5-web-templates/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Esses possuem bons templates com HTML5 e CSS.&lt;br /&gt;
Deixem outras dicas...</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/4015004222394487204/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2016/07/dica-sites-para-download-de-templates.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4015004222394487204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4015004222394487204'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2016/07/dica-sites-para-download-de-templates.html' title='Dica: Sites para download de templates HTML para sites e área administrativas'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-6093616337648369329</id><published>2016-01-03T14:12:00.000-08:00</published><updated>2016-01-03T14:12:32.656-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="crowdsourcing"/><category scheme="http://www.blogger.com/atom/ns#" term="desenvolvimento de jogos"/><category scheme="http://www.blogger.com/atom/ns#" term="jogo em php"/><category scheme="http://www.blogger.com/atom/ns#" term="jogo online"/><title type='text'>Precisa-se de Apoio!</title><content type='html'>Salve Geral!&lt;br /&gt;
&lt;br /&gt;
Estou trazendo novamente a ativa um antigo projeto de jogo online.&lt;br /&gt;
É um jogo Web-browser desenvolvido em PHP (Codeigniter) + MySql.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;E preciso de ajuda!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Infelizmente estou sem tempo para me dedicar ao desenvolvimento do jogo devido ao meu trabalho e por ser pai, marido e outras atividades.&lt;br /&gt;
&lt;br /&gt;
Estou procurando por programadores e designer, inclusive o jogo não possui nem mesmo logo tipo.&lt;br /&gt;
&lt;br /&gt;
Atividades para Programadores:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ajudar no desenvolvimento das funcionalidades do jogo;&lt;/li&gt;
&lt;li&gt;Desenvolvimento de backend em PHP com Codeigniter;&lt;/li&gt;
&lt;li&gt;Desenvolvimento do frontend com Java Script e/ou HTML5;&lt;/li&gt;
&lt;li&gt;Documentação dos fontes;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Atividades para Designers:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Elaborar a identidade visual do jogo;&lt;/li&gt;
&lt;li&gt;Criar um logo;&lt;/li&gt;
&lt;li&gt;Criar o dashboard do jogador;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
O nome do jogo é &lt;b&gt;The Presidents&lt;/b&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Este jogo tem como objetivo criar uma cidade e evoluir a uma grande nação.&lt;/div&gt;
&lt;div&gt;
O endereço do jogo é:&amp;nbsp;&lt;a href=&quot;http://www.the-presidents.net/&quot;&gt;http://www.the-presidents.net&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Entrem em contato caso queira conhecer melhor o projeto.&lt;/div&gt;
&lt;div&gt;
Estou aberto a discussões,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Grande abraço!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/6093616337648369329/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2016/01/precisa-se-de-apoio.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6093616337648369329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6093616337648369329'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2016/01/precisa-se-de-apoio.html' title='Precisa-se de Apoio!'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3702463178114895503</id><published>2016-01-03T10:12:00.000-08:00</published><updated>2016-01-03T10:12:09.038-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="como"/><category scheme="http://www.blogger.com/atom/ns#" term="framework"/><category scheme="http://www.blogger.com/atom/ns#" term="verificar"/><category scheme="http://www.blogger.com/atom/ns#" term="versão"/><title type='text'>Codeigniter - Como verificar a versão do framework</title><content type='html'>Salve!&lt;br /&gt;
Hoje me deparei com uma situação. Estava recuperando alguns projetos antigos e fiquei na dúvida de qual era a versão do Codeigniter que usava na época que iniciei o projeto.&lt;br /&gt;
&lt;br /&gt;
Temos duas formas de verificar a versão do Codeigniter:&lt;br /&gt;
&lt;br /&gt;
1 - Código&lt;br /&gt;
&lt;br /&gt;
Basta colocar a seguinte linha em qualquer &quot;view&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;echo CI_VERSION;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
2 - Verificar os arquivos de sistema do Codeigniter:&lt;br /&gt;
&lt;br /&gt;
Procure o seguinte arquivo:&amp;nbsp;&lt;span style=&quot;background-color: white; color: #222426; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 15px; line-height: 19.5px;&quot;&gt;/system/core/CodeIgniter.php&lt;/span&gt;&lt;br /&gt;
Abra este arquivo e procure por &quot;Codeigniter Version&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3702463178114895503/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2016/01/codeigniter-como-verificar-versao-do.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3702463178114895503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3702463178114895503'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2016/01/codeigniter-como-verificar-versao-do.html' title='Codeigniter - Como verificar a versão do framework'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-6972999871301488718</id><published>2012-08-31T14:27:00.001-07:00</published><updated>2012-08-31T14:29:07.385-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="config.php"/><category scheme="http://www.blogger.com/atom/ns#" term="index.php"/><category scheme="http://www.blogger.com/atom/ns#" term="url"/><title type='text'>Codeigniter - Retirando a index.php da URL do site</title><content type='html'>Salve All!&lt;br /&gt;
&lt;br /&gt;
Atendendo a pedidos, vou postar aqui o &quot;esquema&quot; para retirar o &quot;index.php&quot; da URL dos sites com Codeigniter.&lt;br /&gt;
&lt;br /&gt;
Primeiro, preciso deixar claro que o &quot;mod_rewrite&quot; do Apache deve estar ativado e funcionando corretamente. Caso você não utilize o Apache como servidor HTTP, vá googar sobre o isso com o seu servidor HTTP.&lt;br /&gt;
&lt;br /&gt;
Vamos precisar criar na raiz do FTP, geralmente na pasta &quot;www/&quot; um arquivo chamado &quot;.htaccess&quot; e colocar o seguinte conteúdo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Depois disso, será preciso editar o arquivo &quot;config.php&quot; do Codeigniter que está em: &quot;application/config/config.php&quot;.&lt;br /&gt;
&lt;br /&gt;
A linha que originalmente é:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;index_page&#39;] = &#39;index.php&#39;;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Deverá ficar assim:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;index_page&#39;] = &#39;&#39;;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
E pronto! Nada além disso...&lt;br /&gt;
Tenho essa configuração rodando no meu agregador de ofertas: &lt;a href=&quot;http://www.armazemdasofertas.com.br/&quot;&gt;http://www.armazemdasofertas.com.br&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Duvidas?&lt;br /&gt;
Deixe um comentário.</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/6972999871301488718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/08/codeigniter-retirando-indexphp-da-url.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6972999871301488718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6972999871301488718'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/08/codeigniter-retirando-indexphp-da-url.html' title='Codeigniter - Retirando a index.php da URL do site'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-8646546115779210337</id><published>2012-07-10T11:20:00.000-07:00</published><updated>2012-07-10T11:20:15.845-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="artigo"/><category scheme="http://www.blogger.com/atom/ns#" term="autoload.php"/><category scheme="http://www.blogger.com/atom/ns#" term="banco de dados"/><category scheme="http://www.blogger.com/atom/ns#" term="be-a-ba"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="configuração"/><category scheme="http://www.blogger.com/atom/ns#" term="database.php"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><title type='text'>Bê-a-Bá do Codeigniter - Configurando Banco de Dados</title><content type='html'>Salve geral...&lt;br /&gt;
&lt;br /&gt;
Dando continuidade à série de artigos básicos do Codeigniter, agora vamos configurar o acesso a banco de dados no codeigniter.&lt;br /&gt;
&lt;br /&gt;
O primeiro passo é realizado no arquivo &lt;i&gt;/application/config/database.php&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Obs. Considera-se que servidor de banco de dados esteja OK! Assim como o banco de dados e usuário e senha para acesso.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
$db[&#39;default&#39;][&#39;hostname&#39;] = &#39;mysql.seusite.com.br&#39;;&lt;br /&gt;
$db[&#39;default&#39;][&#39;username&#39;] = &#39;usuario&#39;;&lt;br /&gt;
$db[&#39;default&#39;][&#39;password&#39;] = &#39;senha&#39;;&lt;br /&gt;
$db[&#39;default&#39;][&#39;database&#39;] = &#39;bancodedados&#39;;&lt;br /&gt;
$db[&#39;default&#39;][&#39;dbdriver&#39;] = &#39;mysql&#39;;&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Então vamos explicar os campos &quot;auto-explicativos&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;hostname&lt;/b&gt; = Nome do servidor do banco de dados ou a URL de acesso ao banco de dados. Poderia ser &lt;i&gt;&quot;localhost&quot;&lt;/i&gt; se o banco de dados estiver na mesma maquina que o Webserver. Caso você seja um servidor diferente, &lt;u&gt;NUNCA&lt;/u&gt; coloque o &lt;i&gt;&quot;HTTP://&quot;&lt;/i&gt; antes do URL.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;username&lt;/b&gt; = É o usuário que tem acesso ao servidor e ao banco de dados. Esse usuário precisa ter as permissões para executar &lt;i&gt;&quot;queries&quot;&lt;/i&gt; tipo SELECT, INSERT, UPDATE, DELETE e etc no banco de dados.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;password&lt;/b&gt; = Senha...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;database&lt;/b&gt; = Aqui vai o nome do banco de dados criado no servidor que foi mencionado na linha do &lt;i&gt;hostname&lt;/i&gt;. &lt;i&gt;&lt;b&gt;Sim!! O banco de dados já deve estar criado!!&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;dbdriver&lt;/b&gt; = Aqui fica a definição do driver do banco de dados que será utilizado. Uma das principais&amp;nbsp;características&amp;nbsp;do framework é a&amp;nbsp;transparência&amp;nbsp;na utilização de banco de dados. Os bancos de dados suportados atualmente pelo codeigniter são:&amp;nbsp;MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC.&lt;br /&gt;
&lt;br /&gt;
Até aqui a configuração já está 100% pronta!&lt;br /&gt;
Porém será necessário inicializar a library de banco de dados sempre que for necessário. Para automatizar e deixar essa library sempre inicializada, &amp;nbsp;basta configurar no arquivo /application/config/autoload.php a seguinte linha:&lt;br /&gt;
&lt;br /&gt;&lt;pre class=&quot;brush:php&quot;&gt;
$autoload[&#39;libraries&#39;] = array(&#39;database&#39;);&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Mais detalhes sobre a configuração do autoload no&amp;nbsp;próximo&amp;nbsp;post.&lt;br /&gt;
&lt;br /&gt;
Duvidas? Deixe um comentário...&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/8646546115779210337/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-configurando-banco.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/8646546115779210337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/8646546115779210337'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-configurando-banco.html' title='Bê-a-Bá do Codeigniter - Configurando Banco de Dados'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-826650657090180350</id><published>2012-07-10T10:19:00.000-07:00</published><updated>2012-07-10T10:19:09.572-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="artigo"/><category scheme="http://www.blogger.com/atom/ns#" term="be-a-ba"/><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="config.php"/><category scheme="http://www.blogger.com/atom/ns#" term="configuração"/><title type='text'>Bê-a-Bá do CodeIgniter - Configurando o config.php</title><content type='html'>Salve Geral!!&lt;br /&gt;
&lt;br /&gt;
Começando a série de artigos sobre o CodeIgniter eu vou apresentar a configuração do arquivo &lt;i&gt;application/config/config.php&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Obs. A configuração aqui apresentada não esgota as possibilidades de configurações, e apresenta aquilo que o blogueiro aqui considera necessário para uma boa utilização do Codeigniter.&lt;/b&gt;&lt;br /&gt;
&lt;h4&gt;


Vamos a primeira parte.&lt;/h4&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;base_url&#39;] = &#39;http://www.seusite.com.br/&#39;;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Essa linha define o URL ou o &lt;i&gt;endereço&lt;/i&gt; do seu site.&lt;br /&gt;
&lt;b&gt;Sim!&lt;/b&gt; Eu sempre utilizo a barra no final do URL. É a partir dessa barra que o CodeIgniter vai começar a trabalhar.&lt;br /&gt;
Quando você utilizar o helper &quot;&lt;i&gt;base_url()&lt;/i&gt;&quot; o Codeigniter irá escrever exatamente o conteúdo desse parâmetro da configuração.&lt;br /&gt;
Existe uma forma de deixar esse campo automático mas nunca utilizei, é possível encontrar as informações para essa automatização em &amp;gt;&amp;gt;&amp;nbsp;&lt;a href=&quot;http://codeigniter.com/forums/viewthread/60181/&quot;&gt;http://codeigniter.com/forums/viewthread/60181/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;


Segunda Parte.&lt;/h4&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;index_page&#39;] = &#39;index.php&#39;;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Só altere essa linha se você mudar o nome desse arquivo que se encontra na raiz do diretório do seu site.&lt;br /&gt;
Ou então caso você utilize o mod_rewrite em um arquivo .htaccess, que eu irei fazer um artigo sobre isso mais para frente. E nesse caso de utilização do mod_rewrite, deixe em branco.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;


Terceira Parte.&lt;/h4&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;language&#39;] = &#39;english&#39;;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Só altere isso caso você desejar criar... É MELHOR QUE VOCÊ NÃO ALTERE ESSA LINHA!!&lt;br /&gt;
Vai por mim...&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;

Quarta Parte.&lt;/h4&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;charset&#39;] = &#39;UTF-8&#39;;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Essa linha define o charset utilizado no site.&lt;br /&gt;
Eu sinceramente prefiro escrever &lt;i&gt;&lt;b&gt;&lt;u&gt;&quot;&amp;amp;aacute&quot;&lt;/u&gt;&lt;/b&gt;&lt;/i&gt; que não dá tanto trabalho como alterar o charset para ISO.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;

Quinta Parte.&lt;/h4&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;$config[&#39;encryption_key&#39;] = &#39;chavedecriptografia&#39;;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Esse parâmetro é usado quando você utiliza sessões.&lt;br /&gt;
Por exemplo, se você fizer um sistema de login que utilize sessões, esse parâmetro deverá estar configurado.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
E chega! Não mexa em mais nada nesse arquivo!&lt;br /&gt;
A não ser que você realmente saiba que o estiver fazendo...&lt;br /&gt;
&lt;br /&gt;
Mas de forma geral, essas configurações são básicas para utilização do Codeigniter.&lt;br /&gt;
Muitos site que eu já fiz estão com essas configurações e funcionam normalmente.&lt;br /&gt;
&lt;br /&gt;
Caso você tenha duvidas, deixe um comentário!</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/826650657090180350/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-configurando-o.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/826650657090180350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/826650657090180350'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-configurando-o.html' title='Bê-a-Bá do CodeIgniter - Configurando o config.php'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-6279560454075560486</id><published>2012-07-10T08:15:00.000-07:00</published><updated>2012-07-10T08:15:07.398-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="be-a-ba"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Bê-a-Bá do Codeigniter: Iniciando uma série de artigos</title><content type='html'>Salve All()!&lt;br /&gt;
&lt;br /&gt;
Esse post será curto pois vou iniciar uma série de posts (artigos) sobre iniciação no framework Codeigniter.&lt;br /&gt;
Pra quem já é avançado isso não será de grande valia mas poderá&amp;nbsp;acrescentar&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;alguns detalhes valiosos.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Eu tentarei seguir a seguinte &quot;ordem&quot; de publicação nessa série:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Configuração do Codeigniter&lt;/li&gt;
&lt;li&gt;Personalização do Codeigniter&lt;/li&gt;
&lt;li&gt;Introdução à POO com Codeigniter&lt;/li&gt;
&lt;li&gt;Talvez exista!&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Para entender sobre o codeigniter, eu vou recomendar o site&amp;nbsp;&lt;a href=&quot;http://codeigniterbrasil.com/&quot; style=&quot;background-color: white;&quot;&gt;http://codeigniterbrasil.com/&lt;/a&gt;&amp;nbsp;que tem muito conteúdo sobre o Codeigniter.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/6279560454075560486/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-iniciando-uma.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6279560454075560486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/6279560454075560486'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/07/be-ba-do-codeigniter-iniciando-uma.html' title='Bê-a-Bá do Codeigniter: Iniciando uma série de artigos'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3969048195066169558</id><published>2012-06-10T20:54:00.000-07:00</published><updated>2012-06-10T20:54:37.474-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="login"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="sistema"/><title type='text'>Sistema de Login Completo - PHP e CodeIgniter</title><content type='html'>Salve!&lt;br /&gt;
&lt;br /&gt;
Estou postando um sistema de login que eu desenvolvi utilizando o CodeIgniter e MySql.&lt;br /&gt;
Depois de escrever várias vezes as mesmas funções eu resolvi criar esse sistema para implementar em todos os&amp;nbsp;próximos&amp;nbsp;sites que eu desenvolver.&lt;br /&gt;
&lt;br /&gt;
Esse sistema conta com as seguintes&amp;nbsp;características:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Registro de usuário Simples&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Dados: Nome, E-mail, Senha (grava a data do cadastro)&lt;/li&gt;
&lt;li&gt;Validação dos dados do formulário (através do CodeIgniter)&lt;/li&gt;
&lt;li&gt;Checagem de e-mail já cadastrado no banco de dados&lt;/li&gt;
&lt;li&gt;Envia e-mail de confirmação com link para ativação do cadastro&lt;/li&gt;
&lt;li&gt;Ativa o cadastro do usuário através de link&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Login / Logoff de usuário&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Logon com sessão&lt;/li&gt;
&lt;li&gt;Valida se o usuário e senha são válidos e autentica o usuário&lt;/li&gt;
&lt;li&gt;Cria variáveis de sessão para identificação do usuário&lt;/li&gt;
&lt;li&gt;Faz Logoff do usuário&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Reset de Senha&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;O usuário deve informar o e-mail cadastrado&lt;/li&gt;
&lt;li&gt;Gera uma nova senha e envia para o e-mail cadastrado&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
Observações:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;O login não depende da ativação, ou seja, o usuário poderá se autenticar mesmo sem ativar o cadastro.&lt;/li&gt;
&lt;li&gt;As senhas são criptografadas com MD5&lt;/li&gt;
&lt;li&gt;O arquivo contém todos os arquivos do CodeIgniter&lt;/li&gt;
&lt;li&gt;O banco de dados está em estrutura no arquivo &quot;bancodedados.txt&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Link para download:&amp;nbsp;&lt;a href=&quot;http://www.4shared.com/zip/jeIngosl/Sistem_login.html&quot; target=&quot;_blank&quot;&gt;http://www.4shared.com/zip/jeIngosl/Sistem_login.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;Altere a vontade!!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Duvidas?? Deixe um comentário...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3969048195066169558/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/06/sistema-de-login-completo-php-e.html#comment-form' title='16 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3969048195066169558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3969048195066169558'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/06/sistema-de-login-completo-php-e.html' title='Sistema de Login Completo - PHP e CodeIgniter'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>16</thr:total><georss:featurename>Freguesia do Ó, São Paulo, 02804-000, Brasil</georss:featurename><georss:point>-23.4833329 -46.7</georss:point><georss:box>-23.5124599 -46.739482 -23.4542059 -46.660518</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-5032966697683174776</id><published>2012-05-28T11:34:00.000-07:00</published><updated>2012-05-28T11:34:53.480-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="cpf"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="funcoes"/><category scheme="http://www.blogger.com/atom/ns#" term="validacao"/><title type='text'>Codeigniter - Validando CPF em Formulários</title><content type='html'>Salve, salve...&lt;br /&gt;
E para fechar a série de validações em formulários, só falta a validação de CPF.&lt;br /&gt;
&lt;br /&gt;
Essa função deve ser inserida no final do arquivo &quot;Form_validation.php&quot; que geralmente se encontra em: &lt;span style=&quot;color: #b6d7a8;&quot;&gt;&quot;/* Location: ./system/libraries/Form_validation.php */&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;Obs: Nessa função, o formato do CNPJ deve ser:&amp;nbsp;&lt;u&gt;000.000.000-00&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;Sem os pontos, barra e traço apresentará erro!!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Função:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;     /**
      * Verifica se o CPF informado é valido
      * @param     string
      * @return     bool
      */
     function valid_cpf($cpf)
     {
         // Verifiva se o número digitado contém todos os digitos
         $cpf = str_pad(preg_replace(&#39;/[^0-9]/&#39;, &#39;&#39;, $cpf), 11, &#39;0&#39;, STR_PAD_LEFT);

         // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
         if (strlen($cpf) != 11 ||
             $cpf == &#39;00000000000&#39; ||
             $cpf == &#39;11111111111&#39; ||
             $cpf == &#39;22222222222&#39; ||
             $cpf == &#39;33333333333&#39; ||
             $cpf == &#39;44444444444&#39; ||
             $cpf == &#39;55555555555&#39; ||
             $cpf == &#39;66666666666&#39; ||
             $cpf == &#39;77777777777&#39; ||
             $cpf == &#39;88888888888&#39; ||
             $cpf == &#39;99999999999&#39;) {
             return FALSE;
         } else {
             // Calcula os números para verificar se o CPF é verdadeiro
             for ($t = 9; $t &amp;lt; 11; $t++) {
                 for ($d = 0, $c = 0; $c &amp;lt; $t; $c++) {
                     $d += $cpf{$c} * (($t + 1) - $c);
                 }

                 $d = ((10 * $d) % 11) % 10;
                 if ($cpf{$c} != $d) {
                     return FALSE;
                 }
             }
             return TRUE;
         }
     }

     // --------------------------------------------------------------------
&lt;/pre&gt;
&lt;br /&gt;
Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
$lang[&#39;valid_cpf&#39;] = &quot;O campo %s n&amp;atilde;o &amp;eacute; um CPF v&amp;aacute;lido. Use o formato 000.000.000-00&quot;;
&lt;/pre&gt;
&lt;br /&gt;
Para chamar a validação do formulário em um controller, utilize e seguinte linha:
&lt;pre class=&quot;brush:php&quot;&gt;
$this-&amp;gt;form_validation-&amp;gt;set_rules(&#39;cpf&#39;, &#39;CPF&#39;, &#39;required|valid_cpf&#39;);&lt;/pre&gt;
&lt;br /&gt;
Duvidas?? Deixe um comentário...&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/5032966697683174776/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-cpf-em.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5032966697683174776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5032966697683174776'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-cpf-em.html' title='Codeigniter - Validando CPF em Formulários'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-1499989062132299296</id><published>2012-05-28T09:13:00.002-07:00</published><updated>2012-05-28T10:45:12.770-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="cnpj"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="funcoes"/><category scheme="http://www.blogger.com/atom/ns#" term="validacao"/><title type='text'>Codeigniter - Validando CNPJ em formulários</title><content type='html'>Salve!&lt;br /&gt;
&lt;br /&gt;
Segue agora uma função para validar CNPJ em formulários com o Codeigniter.&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;Essa função deve ser inserida no final do arquivo &quot;Form_validation.php&quot; que geralmente se encontra em: &quot;/* Location: ./system/libraries/Form_validation.php */&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;Obs: Nessa função, o formato do CNPJ deve ser:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small; line-height: 18px;&quot;&gt;&lt;u&gt;00.000.000/0000-00&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small; line-height: 18px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;Sem os pontos, barra e traço apresentará erro!!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;Função:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
 /**
      * Verifica se o CNPJ é valido
      * @param     string
      * @return     bool
      */
     function valid_cnpj($str)
     {
         if (strlen($str) &lt;&gt; 18) return FALSE;
         $soma1 = ($str[0] * 5) +
                 ($str[1] * 4) +
                 ($str[3] * 3) +
                 ($str[4] * 2) +
                 ($str[5] * 9) +
                 ($str[7] * 8) +
                 ($str[8] * 7) +
                 ($str[9] * 6) +
                 ($str[11] * 5) +
                 ($str[12] * 4) +
                 ($str[13] * 3) +
                 ($str[14] * 2);
         $resto = $soma1 % 11;
         $digito1 = $resto &lt; 2 ? 0 : 11 - $resto;
         $soma2 = ($str[0] * 6) +
                 ($str[1] * 5) +
                 ($str[3] * 4) +
                 ($str[4] * 3) +
                 ($str[5] * 2) +
                 ($str[7] * 9) +
                 ($str[8] * 8) +
                 ($str[9] * 7) +
                 ($str[11] * 6) +
                 ($str[12] * 5) +
                 ($str[13] * 4) +
                 ($str[14] * 3) +
                 ($str[16] * 2);
         $resto = $soma2 % 11;
         $digito2 = $resto &lt; 2 ? 0 : 11 - $resto;
         return (($str[16] == $digito1) &amp;&amp; ($str[17] == $digito2));
     }

     // --------------------------------------------------------------------
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;

$lang[&#39;valid_cnpj&#39;] = &quot;O campo %s nao e um CNPJ valido. Use o formato 00.000.000/0000-00&quot;;

&lt;/pre&gt;
&lt;br /&gt;
Para chamar a validação do formulário em um controller, utilize e seguinte linha:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;

$this-&amp;gt;form_validation-&amp;gt;set_rules(&#39;cnpj&#39;, &#39;CNPJ&#39;, &#39;required|valid_cnpj&#39;);

&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Duvidas?? Deixe um comentário...</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/1499989062132299296/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-cnpj-em.html#comment-form' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/1499989062132299296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/1499989062132299296'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-cnpj-em.html' title='Codeigniter - Validando CNPJ em formulários'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-5770422691160561193</id><published>2012-05-28T08:53:00.000-07:00</published><updated>2012-05-28T10:48:41.657-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="funcoes"/><category scheme="http://www.blogger.com/atom/ns#" term="validacao"/><title type='text'>Codeigniter - Validando Datas e Horas em formulários</title><content type='html'>De volta do submundo dos sumidos...&lt;br /&gt;
&lt;br /&gt;
Eu vou mostrar aqui duas funções para validar Datas e Horas em formulários utilizando o Codeigniter.&lt;br /&gt;
Essas funções devem ser inseridas no final do arquivo &quot;Form_validation.php&quot; que geralmente se encontra em: &lt;i&gt;&lt;span style=&quot;color: #b6d7a8;&quot;&gt;&quot;/* Location: ./system/libraries/Form_validation.php */&quot;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Segue as funções:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
     /**
      * Verifica se a data informada é valida, formato padrão dd/mm/yyyy
      * caso precise validar em outros formatos adicione nessa função
      * ex: mm/yyyy, mm/yy, etc
      * @param     string
      * @return     bool
      */
     function valid_date($date, $format = &#39;dd/mm/yyyy&#39;)
     {

         $dateArray = explode(&quot;/&quot;, $date); // slice the date to get the day, month and year separately

         $d = 0;
         $m = 0;
         $y = 0;
         if (sizeof($dateArray) == 3) {
             if (is_numeric($dateArray[0]))
                 $d = $dateArray[0];
             if (is_numeric($dateArray[1]))
                 $m = $dateArray[1];
             if (is_numeric($dateArray[2]))
                 $y = $dateArray[2];
         }

         return checkdate($m, $d, $y) == 1;
     }

     // ---
  
  // --------------------------------------------------------------------

     /**
      * Verifica se a hora informada é valida, formato padrão HH:ii
      * caso precise validar em outros formatos adicione nessa função
      * 
      * @param     string
      * @return     bool
      */
     function valid_hour($hour)
     {
   if(preg_match(&quot;/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/&quot;, $hour)){
   return TRUE;
  }else{
   return FALSE;
  }

     }

     // ---
&lt;/pre&gt;&lt;br /&gt;
Não se esqueça de adicionar a seguinte linha no arquivo de mensagens de erro de validação de formulários.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
//---
$lang[&#39;valid_date&#39;] = &quot;O campo %s nao e uma data (dd/mm/yyyy) valida.&quot;;&lt;br /&gt;
$lang[&#39;valid_hour&#39;] = &quot;O campo %s nao e uma hora (hh/mm) valida.&quot;;&lt;br /&gt;
&lt;br /&gt;
/* End of file form_validation_lang.php */&lt;br /&gt;
/* Location: ./system/language/english/form_validation_lang.php */&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Para chamar a validação do formulário em um controller, utilize e seguinte linha:&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
//----
$this-&amp;gt;form_validation-&amp;gt;set_rules(&#39;data&#39;, &#39;Data&#39;, &#39;required|valid_date&#39;);
//---
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Duvidas?? Deixe um&amp;nbsp;comentário...</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/5770422691160561193/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-datas-e-horas-em.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5770422691160561193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5770422691160561193'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2012/05/codeigniter-validando-datas-e-horas-em.html' title='Codeigniter - Validando Datas e Horas em formulários'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3808037723681587406</id><published>2011-11-25T04:59:00.000-08:00</published><updated>2012-05-28T10:53:05.448-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="imagem"/><category scheme="http://www.blogger.com/atom/ns#" term="tema"/><category scheme="http://www.blogger.com/atom/ns#" term="template"/><title type='text'>CodeIgniter - Usando CSS e Imagens</title><content type='html'>Hello World!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esse tópico pode parecer &quot;meio&quot; sem sentido, mas aqui explicarei um pouco sobre a utilização de CSS e Imagens com o CodeIgniter e onde colocar as imagens e o CSS.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esse tópico será útil para que pretende trabalhar com Templates no CodeIgniter. E em breve colocarei um tópico sobre o uso de templates com CodeIgniter.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Muitos que estão começando a programar com o CodeIgniter acabam tendo duvidas sobre onde colocar o arquivo CSS e a pasta das imagens do site.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para resolver esse problema, coloque o arquivo CSS diretamente no pasta raiz do site e carregue o arquivo assim:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:html&quot;&gt;
&amp;lt;link href=&quot;style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Pronto! Isso resolve o seu problema.&lt;/div&gt;
&lt;div&gt;
Para as imagens é a mesma coisa, crie a pasta de imagens na raiz do site e irá funcionar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Agora, se você pretende usar templates para o site, a conversa muda de rumo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para fazer algo minimamente organizado, você deve armazenar todos os arquivos do template na mesma pasta das Views, correto?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Exemplo:&lt;/div&gt;
&lt;div&gt;
Template 1: /application/view/template1&lt;/div&gt;
&lt;div&gt;
Template 2: /application/view/template2&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
E dentro dessas pastas de templates as imagens e o CSS.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Por tanto, para carregar por exemplo o CSS, a tag deveria ser assim:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:html&quot;&gt;
&amp;lt;link href=&quot;http://site/application/views/template1/style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&amp;gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Parece simples se o CodeIgniter não bloqueasse esse acesso.&lt;/div&gt;
&lt;div&gt;
Sem mexer na configuração do CodeIgniter, isso não irá funcionar. Pelo menos nas versões 2.x do CI.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para resolver isso você precisa mudar a configuração do arquivo .htaccess que está DENTRO da pasta &quot;application&quot;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
O arquivo .htaccess deve ficar assim:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;code&gt;
RewriteBase /&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;code&gt;RewriteCond %{REQUEST_FILENAME} !-d&lt;/code&gt;&lt;/div&gt;
&lt;code&gt;
&lt;div&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;/div&gt;
&lt;div&gt;
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]&lt;/div&gt;
&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Feito isso, seus arquivos de CSS e imagens que estão na pasta &quot;views&quot; estarão acessíveis.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Duvidas? Deixe um comentário.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3808037723681587406/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-usando-css-e-imagens.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3808037723681587406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3808037723681587406'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-usando-css-e-imagens.html' title='CodeIgniter - Usando CSS e Imagens'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3489000841683243127</id><published>2011-11-25T04:26:00.000-08:00</published><updated>2011-11-25T04:26:58.727-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Record"/><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="select_sum"/><category scheme="http://www.blogger.com/atom/ns#" term="subquery"/><title type='text'>CodeIgniter - Executando Subqueries</title><content type='html'>Hi!&lt;br /&gt;
&lt;br /&gt;
Hoje eu vou mostrar uma biblioteca bem interessante que eu encontrei enquanto procurava uma forma de realizar subqueries com o Active Record do CodeIgniter.&lt;br /&gt;
&lt;br /&gt;
Antes de mais nada, eu vou explicar o motivo dessa subquery:&lt;br /&gt;
&lt;br /&gt;
Quando se usa o SELECT SUM() do Mysql junto com LIMIT, você precisa usar subquery para o SUM() somar apenas aquilo que foi determinado no LIMIT.&lt;br /&gt;
&lt;br /&gt;
Vamos ao exemplo que NÃO funciona:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
SELECT SUM(&#39;campo_numerico&#39;) FROM tabela LIMIT 25&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Isso definitivamente não irá funcionar corretamente e a soma do campo numerico será realizada sobre toda a clausula WHERE (se existir) e não apenas dentro do que foi determinado no LIMIT 25.&lt;br /&gt;
&lt;br /&gt;
Para funcionar, a query deve ser assim:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
SELECT SUM(&#39;campo_numerico&#39;) FROM (SELECT campo_numerico FROM tabela LIMIT 25) AS subquery;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ai sim você terá o resultado da soma do campo numerico apenas daquilo que foi determinado no LIMIT.&lt;br /&gt;
&lt;br /&gt;
Nessa bibliteca, é possível realizar essa subquery usando Active Record do CodeIgniter.&lt;br /&gt;
&lt;a href=&quot;https://github.com/NTICompass/CodeIgniter-Subqueries&quot;&gt;https://github.com/NTICompass/CodeIgniter-Subqueries&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Vejam como essa subquery ficaria com essa biblioteca em uma Model:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
$this-&amp;gt;db-&amp;gt;select_sum(&#39;campo_numerico&#39;);&lt;br /&gt;
&lt;br /&gt;
$sub = $this-&amp;gt;subquery-&amp;gt;start_subquery(&#39;from&#39;);&lt;br /&gt;
$sub-&amp;gt;select(&#39;campo_numerico&#39;);&lt;br /&gt;
$sub-&amp;gt;from(&#39;tabela&#39;);&lt;br /&gt;
$sub-&amp;gt;limit(25);&lt;br /&gt;
$this-&amp;gt;subquery-&amp;gt;end_subquery(&#39;campo_numerico&#39;);&lt;br /&gt;
&lt;br /&gt;
$sql = $this-&amp;gt;db-&amp;gt;get();&lt;br /&gt;
return $sql-&amp;gt;result();&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;
Simples não?&lt;br /&gt;
Isso funcionou perfeitamente bem no meu servidor local, já no meu servidor WEB deixou a desejar e não funcionou... Ainda não descobri o porque mas assim que resolver eu posto a solução.&lt;br /&gt;
&lt;br /&gt;
Mas a biblioteca é muito boa!&lt;br /&gt;
Vale a pena conferir!&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3489000841683243127/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-executando-subqueries.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3489000841683243127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3489000841683243127'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-executando-subqueries.html' title='CodeIgniter - Executando Subqueries'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-771783442755275921</id><published>2011-11-25T04:11:00.000-08:00</published><updated>2012-05-28T10:56:56.855-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="imagem"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="upload de arquivos"/><title type='text'>CodeIgniter - Upload de Imagem</title><content type='html'>Salve, salve!&lt;br /&gt;
&lt;br /&gt;
Agora eu vou mostrar como fazer Upload de imagem usando o CodeIgniter.&lt;br /&gt;
Quanto a View, ela pode ter o mesmo formulário utilizado no exemplo anterior de upload de imagem com PHP.&lt;br /&gt;
&lt;br /&gt;
Para fazer o upload, coloque o seguinte código dentro do Controller que receberá os dados do formulário:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
$config[&#39;upload_path&#39;] = &#39;./upload/imagem/&#39;;//Caminho onde será salvo
$config[&#39;allowed_types&#39;] = &#39;gif|jpg|png&#39;;//Tipos de imagem aceito
$config[&#39;max_size&#39;] = &#39;2048&#39;;//Tamanho - Aqui aceitamos até 2 Mb
$config[&#39;overwrite&#39;]  = FALSE;//Não irá sobre-escrever o arquivo
$config[&#39;encrypt_name&#39;] = TRUE;//Trocará o nome do arquivo para um HASH
&lt;br /&gt;&lt;br /&gt;
$field_name1 = &quot;photo&quot;;// Nome do campo INPUT do formulário
$this-&amp;gt;load-&amp;gt;library(&#39;upload&#39;);
$this-&amp;gt;upload-&amp;gt;initialize($config);&amp;nbsp;
&lt;br /&gt;&lt;br /&gt;
//Faz o upload
if(!$this-&amp;gt;upload-&amp;gt;do_upload($field_name1))
{
&amp;nbsp; &amp;nbsp; $error = array(&#39;erro&#39; =&amp;gt; $this-&amp;gt;upload-&amp;gt;display_errors());
}else{
&amp;nbsp; &amp;nbsp; $upload_data = $this-&amp;gt;upload-&amp;gt;data();
&amp;nbsp; &amp;nbsp; $nome_do_arquivo_gravado = $upload_data[&#39;file_name&#39;];&amp;nbsp;
}
//Fim - Upload da Imagem
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/771783442755275921/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-upload-de-imagem.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/771783442755275921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/771783442755275921'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-upload-de-imagem.html' title='CodeIgniter - Upload de Imagem'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-5691769555009687831</id><published>2011-11-20T10:46:00.000-08:00</published><updated>2011-11-20T10:46:20.331-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="imagem"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="upload de arquivos"/><title type='text'>PHP - Upload de Imagem</title><content type='html'>Salve!&lt;br /&gt;
&lt;br /&gt;
Aqui eu vou mostrar uma forma &quot;simples&quot; de se fazer Upload de imagens com o PHP.&lt;br /&gt;
Neste exemplo, nós vamos gerar um nome aleatório para a imagem.&lt;br /&gt;
&lt;br /&gt;
Vamos ao formulário:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
&amp;lt;form action=&quot;upload.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&amp;gt;&lt;br /&gt;
Selecione a imagem: &amp;lt;input name=&quot;photo&quot; type=&quot;file&quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;input name=&quot;submit&quot; type=&quot;submit&quot; value=&quot;Enviar&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Agora o arquivo &quot;upload.php&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
#Inicio da função de validação e gravação de imagem&lt;br /&gt;
$erro = $config = array();&lt;br /&gt;
&lt;br /&gt;
// Prepara a variável do arquivo&lt;br /&gt;
$arquivo = isset($_FILES[&quot;photo&quot;]) ? $_FILES[&quot;photo&quot;] : FALSE;&lt;br /&gt;
if($arquivo == &quot;&quot;){&lt;br /&gt;
echo &quot;&amp;lt;p&amp;gt;Variavel de arquivo vazio&amp;lt;/p&amp;gt;&quot;;}&lt;br /&gt;
else{echo &quot;&amp;lt;p&amp;gt;Variavel de arquivo OK!&amp;lt;/p&amp;gt;&quot;;}&lt;br /&gt;
// Tamanho máximo do arquivo 50Kb - 110px x 110px(em bytes)&lt;br /&gt;
$config[&quot;tamanho&quot;] = 102400;&lt;br /&gt;
// Largura máxima (pixels)&lt;br /&gt;
$config[&quot;largura&quot;] = 500;&lt;br /&gt;
// Altura máxima (pixels)&lt;br /&gt;
$config[&quot;altura&quot;] &amp;nbsp;= 800;&lt;br /&gt;
&lt;br /&gt;
// Formulário postado... executa as ações&lt;br /&gt;
if($arquivo)&lt;br /&gt;
{ &lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Verifica se o mime-type do arquivo é de imagem&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if(!eregi(&quot;^image\/(pjpeg|jpeg|png|gif|bmp)$&quot;, $arquivo[&quot;type&quot;]))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $erro[] = &quot;Arquivo em formato inválido! A imagem deve ser jpg, jpeg,&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;bmp, gif ou png. Envie outro arquivo&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Verifica tamanho do arquivo&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($arquivo[&quot;size&quot;] &amp;gt; $config[&quot;tamanho&quot;])&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $erro[] = &quot;Arquivo em tamanho muito grande!&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;A imagem deve ser de no máximo &quot; . $config[&quot;tamanho&quot;] . &quot; bytes.&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Envie outro arquivo&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Para verificar as dimensões da imagem&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $tamanhos = getimagesize($arquivo[&quot;tmp_name&quot;]);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Verifica largura&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($tamanhos[0] &amp;gt; $config[&quot;largura&quot;])&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $erro[] = &quot;Largura da imagem não deve&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;ultrapassar &quot; . $config[&quot;largura&quot;] . &quot; pixels&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Verifica altura&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($tamanhos[1] &amp;gt; $config[&quot;altura&quot;])&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $erro[] = &quot;Altura da imagem não deve&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;ultrapassar &quot; . $config[&quot;altura&quot;] . &quot; pixels&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Imprime as mensagens de erro&lt;br /&gt;
&amp;nbsp; &amp;nbsp; if(sizeof($erro))&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach($erro as $err)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot; - &quot; . $err . &quot;&amp;lt;BR&amp;gt;&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &quot;Erro no Upload da imgem - Reveja o tamanho e a largura&quot;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Verificação de dados OK, nenhum erro ocorrido, executa então o upload...&lt;br /&gt;
&amp;nbsp; &amp;nbsp; else&lt;br /&gt;
&amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Pega extensão do arquivo&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; preg_match(&quot;/\.(gif|bmp|png|jpg|jpeg){1}$/i&quot;, $arquivo[&quot;name&quot;], $ext);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Gera um nome único para a imagem&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $imagem_nome = md5(uniqid(time())) . &quot;.&quot; . $ext[1];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caminho de onde a imagem ficará&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $imagem_dir = &quot;upload/&quot; . $imagem_nome;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Faz o upload da imagem&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!move_uploaded_file($arquivo[&quot;tmp_name&quot;], $imagem_dir)){&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
Duvidas? Deixe um comentário.&lt;br /&gt;
Proximo post será sobre Upload de imagem usando o CodeIgniter.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/5691769555009687831/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-upload-de-imagem.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5691769555009687831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/5691769555009687831'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-upload-de-imagem.html' title='PHP - Upload de Imagem'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3951339732624861799</id><published>2011-11-19T06:26:00.000-08:00</published><updated>2011-11-19T06:26:21.458-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IDE"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Editores / IDE para Programação em PHP</title><content type='html'>&lt;br /&gt;Olá!&lt;br /&gt;&lt;br /&gt;Eu vou colocar aqui as minhas opiniões sobre qual o melhor programa para escrever códigos em PHP.&lt;br /&gt;&lt;br /&gt;Muito se fala por ai do &lt;b&gt;Eclipse&lt;/b&gt;. Eu já testei e me pareceu uma excelente IDE para programação. Mas um ponto que não me agradou foi o consumo de memória.&lt;br /&gt;&lt;br /&gt;Na minha maquina (Intel Core i3, 2 Gb RAM) ele consome mais de 300 Mb assim que é inicializado. Desempenho pra mim é fundamental! E todo esse consumo de memória pra mim torna-se algo completamente descartável!&lt;br /&gt;&lt;br /&gt;Existe um editor de texto, que se mostrou excelente além de muito útil é o &lt;b&gt;Notepad++&lt;/b&gt;.&lt;br /&gt;Editor simples, rápido, um Notepad (normal) muito melhorado!&lt;br /&gt;&lt;br /&gt;Mas também é absurdamente simples e não possui nenhuma barra de ferramentas com funções para programação. Apesar de contar com milhares de plug-ins disponíveis para download.&lt;br /&gt;&lt;br /&gt;Pra mim, a principal utilidade fica com a possibilidade de mudar a formatação de um arquivo para por exemplo: UTF-8 (Sem BOM). Isso é muito útil e resolve uma série de problemas com o PHP e CodeIgniter quando a programação é sobre UTF-8.&lt;br /&gt;&lt;br /&gt;Agora o editor que eu gosto (gosto é gosto e não se discute), é o &lt;b&gt;Adobe Macromedia Dreamweaver CS3&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Leve, fácil, tem funções de aut0-complete além da preferencia. E gosto tanto da versão CS3 que não tenho nem vontade de atualizar para alguma versão mais recente.&lt;br /&gt;&lt;br /&gt;E você? Prefere o que? Algum outro software? Ou tem algo a comentar sobre os softwares que foram comentados aqui?</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3951339732624861799/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/editores-ide-para-programacao-em-php.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3951339732624861799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3951339732624861799'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/editores-ide-para-programacao-em-php.html' title='Editores / IDE para Programação em PHP'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-464506626032759235</id><published>2011-11-19T06:24:00.000-08:00</published><updated>2011-11-19T06:24:58.168-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="importar"/><category scheme="http://www.blogger.com/atom/ns#" term="SimpleXML"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>Importar Informações de XML Utilizando o CodeIgniter</title><content type='html'>Salve, salve!&lt;br /&gt;
&lt;br /&gt;
Agora vamos comentar um pouco sobre a importação de XML para aplicações desenvolvidas utilizando o CodeIngiter.&lt;br /&gt;
&lt;br /&gt;
O CodeIgniter por si só, não oferece grandes recursos para XML até por ser uma tarefa extremamente simples! Usando funções do próprio PHP como o “Simple XML” com o CodeIgniter fica muito simples.&lt;br /&gt;
&lt;br /&gt;
Vamos ao XML:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;lista&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;produto&amp;gt;&lt;br /&gt;
&amp;lt;nome&amp;gt;Produto Numero 1&amp;lt;/nome&amp;gt;&lt;br /&gt;
&amp;lt;tipo&amp;gt;Tipo 1&amp;lt;/tipo&amp;gt;&lt;br /&gt;
&amp;lt;valor&amp;gt;100,00&amp;lt;/valor&amp;gt;&lt;br /&gt;
&amp;lt;/produto&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;produto&amp;gt;&lt;br /&gt;
&amp;lt;nome&amp;gt;Produto Numero 2&amp;lt;/nome&amp;gt;&lt;br /&gt;
&amp;lt;tipo&amp;gt;Tipo 2&amp;lt;/tipo&amp;gt;&lt;br /&gt;
&amp;lt;valor&amp;gt;50,00&amp;lt;/valor&amp;gt;&lt;br /&gt;
&amp;lt;/produto&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lista&amp;gt;&lt;/code&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
Agora o Controler, na função que recebe e carrega o arquivo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
$url_xml = $this-&amp;gt;input-&amp;gt;post(&#39;xml&#39;);//http://www.site.com.br/arquivo.xml&lt;br /&gt;
if($xml_content[&#39;xml&#39;] = simplexml_load_file($url_xml)){&lt;br /&gt;
$this-&amp;gt;load-&amp;gt;view(&#39;mostra_xml_view&#39;, $xml_content);&lt;br /&gt;
}else{&lt;br /&gt;
$this-&amp;gt;load-&amp;gt;view(&#39;xml_error_view&#39;);&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
A View, que irá mostrar o conteúdo do arquivo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;
for($i=0; $i &amp;lt; count($xml-&amp;gt;produto); $i++) {&lt;br /&gt;
echo &quot;Nome: &quot;, $xml-&amp;gt;produto-&amp;gt;nome, &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
echo &quot;Tipo: &quot;, $xml-&amp;gt;produto-&amp;gt;tipo, &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
echo &quot;Valor: &quot;, $xml-&amp;gt;produto-&amp;gt;valor, &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
echo &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Isso deve resolver muitos problemas considerando que esse código da View poderia de utilizado no Controler para incluir os dados no banco de dados.&lt;br /&gt;
&lt;br /&gt;
Duvidas? Deixe um comentário…</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/464506626032759235/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/importar-informacoes-de-xml-utilizando.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/464506626032759235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/464506626032759235'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/importar-informacoes-de-xml-utilizando.html' title='Importar Informações de XML Utilizando o CodeIgniter'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-1936449655314575740</id><published>2011-11-19T06:20:00.000-08:00</published><updated>2012-05-28T11:02:42.923-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="formulario"/><category scheme="http://www.blogger.com/atom/ns#" term="validacao"/><title type='text'>CodeIgniter – Traduzindo as Mensagens de Erro na Validação de Formulários</title><content type='html'>Salve!&lt;br /&gt;
&lt;br /&gt;
O CodeIgniter tem uma biblioteca para validação de formulários chamada: form_validation&lt;br /&gt;
&lt;br /&gt;
Para traduzir as mensagens de erro, localize o arquivo chamado “form_validation_lang”. Este arquivo deve ser encontrado em: /system/language/english/.&lt;br /&gt;
&lt;br /&gt;
Veja a estrutura do arquivo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
&amp;lt;?php&lt;br /&gt;
$lang[&#39;required&#39;] = &quot;O campo %s &amp;amp;eacute; requerido.&quot;;
$lang[&#39;isset&#39;] = &quot;The %s field must have a value.&quot;;
$lang[&#39;valid_email&#39;] = &quot;O campo de %s precisa conter um endere&amp;amp;ccedil;o de e-mail v&amp;amp;aacute;lido.&quot;;
$lang[&#39;valid_emails&#39;] = &quot;The %s field must contain all valid email addresses.&quot;;
$lang[&#39;valid_url&#39;] = &quot;O campo %s precisa conter uma URL v&amp;amp;aacute;lida.&quot;;
$lang[&#39;valid_ip&#39;] = &quot;The %s field must contain a valid IP.&quot;;
$lang[&#39;min_length&#39;] = &quot;O Campo %s precisa ter pelo menos %s caracteres.&quot;;
$lang[&#39;max_length&#39;] = &quot;O Campo %s pode ter no maximo %s caracteres.&quot;;
$lang[&#39;exact_length&#39;] = &quot;O Campo %s precisa ter exatamente %s caracteres.&quot;;
$lang[&#39;alpha&#39;] = &quot;The %s field may only contain alphabetical characters.&quot;;
$lang[&#39;alpha_numeric&#39;] = &quot;O Campo %s s&amp;amp;oacute; pode conter caracteres alpha-num&amp;amp;eacute;ricos.&quot;;
$lang[&#39;alpha_dash&#39;] = &quot;The %s field may only contain alpha-numeric characters, underscores, and dashes.&quot;;
$lang[&#39;numeric&#39;] = &quot;O Campo %s s&amp;amp;oacute; pode conter numeros.&quot;;
$lang[&#39;is_numeric&#39;] = &quot;The %s field must contain only numeric characters.&quot;;
$lang[&#39;integer&#39;] = &quot;O campo %s precisa conter um numero inteiro.&quot;;
$lang[&#39;regex_match&#39;] = &quot;The %s field is not in the correct format.&quot;;
$lang[&#39;matches&#39;] = &quot;O Campo %s n&amp;amp;atilde;o confere com o campo %s.&quot;;
$lang[&#39;is_natural&#39;] = &quot;The %s field must contain only positive numbers.&quot;;
$lang[&#39;is_natural_no_zero&#39;] = &quot;The %s field must contain a number greater than zero.&quot;;
$lang[&#39;decimal&#39;] = &quot;The %s field must contain a decimal number.&quot;;
$lang[&#39;less_than&#39;] = &quot;The %s field must contain a number less than %s.&quot;;
$lang[&#39;greater_than&#39;] = &quot;The %s field must contain a number greater than %s.&quot;;
$lang[&#39;valid_cnpj&#39;] = &quot;O campo %s n&amp;amp;atilde;o &amp;amp;eacute; um CNPJ v&amp;amp;aacute;lido. Use o formato 00.000.000/0000-00&quot;;
$lang[&#39;valid_cpf&#39;] = &quot;O campo %s n&amp;amp;atilde;o &amp;amp;eacute; um CPF v&amp;amp;aacute;lido. Use o formato 000.000.000-00&quot;;
$lang[&#39;valid_date&#39;] = &quot;O campo %s n&amp;amp;atilde;o &amp;amp;eacute; uma data (dd/mm/yyyy) v&amp;amp;aacute;lida.&quot;;
$lang[&#39;valid_hour&#39;] = &quot;O campo %s n&amp;amp;atilde;o &amp;amp;eacute; uma hora (hh/mm) v&amp;amp;aacute;lida.&quot;;
&lt;br /&gt;
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */&lt;/pre&gt;
&lt;br /&gt;
Como você pode notar, algumas mensagens já foram traduzidas. E é muito simples!</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/1936449655314575740/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-avancado-css-codeigniter-zend.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/1936449655314575740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/1936449655314575740'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-avancado-css-codeigniter-zend.html' title='CodeIgniter – Traduzindo as Mensagens de Erro na Validação de Formulários'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-4668998708938969278</id><published>2011-11-19T06:18:00.000-08:00</published><updated>2012-05-28T11:22:03.802-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="pagseguro"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="retorno automatico"/><title type='text'>CodeIgniter e PagSeguro – Retorno Automático</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
Salve!&lt;br /&gt;
&lt;br /&gt;
Vamos falar um pouco sobre a integração do UOL PagSeguro com aplicações desenvolvidas utilizando o CodeIgniter como framework.&lt;br /&gt;
&lt;br /&gt;
Após muitos testes, buscas pela internet, perguntas em Fórum de discussão, eu consegui fazer pelos meus próprios meios. E compartilho aqui pois acredito que outras pessoas estejam com o mesmo problema.&lt;br /&gt;
&lt;br /&gt;
Enviar as informações de pagamento para o PagSeguro é muito fácil e eu não preciso comentar nada por aqui. O grande “vilão” dessa conversa é o Retorno Automático.&lt;br /&gt;
&lt;br /&gt;
Vamos começar pelo Controler.&lt;br /&gt;
Obs. Imagine que essa função seria exatamente a informada nas configurações de retorno do PagSeguro (http://www.seusite.com.br/retorno_automatico).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
public function retorno_pagseguro(){

if (count($_POST) &amp;gt; 0) {

// POST recebido, indica que é a requisição do NPI.
//$npi = new PagSeguroNpi();
$this-&amp;gt;load-&amp;gt;library(PagSeguroNpi);//Carrega a library
$result = $this-&amp;gt;PagSeguroNpi-&amp;gt;notificationPost();

$transacaoID = isset($_POST[&#39;TransacaoID&#39;]) ? $_POST[&#39;TransacaoID&#39;] : &#39;&#39;;

if ($result == &quot;VERIFICADO&quot;) {
//O post foi validado pelo PagSeguro.
$source = array(&#39;.&#39;, &#39;,&#39;);
$replace = array(&#39;&#39;, &#39;.&#39;);
$pagamento[&#39;TransacaoID&#39;] = $_POST[&#39;TransacaoID&#39;];
$pagamento[&#39;Referencia&#39;] = $_POST[&#39;Referencia&#39;];
$pagamento[&#39;TipoPagamento&#39;] = $_POST[&#39;TipoPagamento&#39;];
$pagamento[&#39;StatusTransacao&#39;] = $_POST[&#39;StatusTransacao&#39;];
$pagamento[&#39;Anotacao&#39;] = $_POST[&#39;Anotacao&#39;];
$pagamento[&#39;DataTransacao&#39;] = $_POST[&#39;DataTransacao&#39;];
$pagamento[&#39;ProdValor_1&#39;] = str_replace($source, $replace, $_POST[&#39;ProdValor_1&#39;]);
$this-&amp;gt;load-&amp;gt;model(&#39;financeiro_model&#39;);//Carrega a Model
$this-&amp;gt;financeiro_model-&amp;gt;GravaRetorno($pagamento);//Grava os dados recebido
if($_POST[&#39;StatusTransacao&#39;] == &#39;Aprovado&#39;){
$histpagto = $this-&amp;gt;financeiro_model-&amp;gt;GetPagtoByID($_POST[&#39;Referencia&#39;]);
$pag[&#39;valor&#39;] = $histpagto[0]-&amp;gt;nu_valor;
$pag[&#39;idanunciante&#39;] = $histpagto[0]-&amp;gt;id_anunciante;
$this-&amp;gt;financeiro_model-&amp;gt;AtualizaCredito($pag);
$pag[&#39;idtransacao&#39;] = $_POST[&#39;TransacaoID&#39;];
$pag[&#39;idpagto&#39;] = $_POST[&#39;Referencia&#39;];
$this-&amp;gt;financeiro_model-&amp;gt;AtualizaHistPag($pag);
$informacao[&#39;status&#39;] = &#39;1&#39;;
}elseif($_POST[&#39;StatusTransacao&#39;] == &#39;Em Análise&#39;){
$informacao[&#39;status&#39;] = &#39;2&#39;;
}elseif($_POST[&#39;StatusTransacao&#39;] == &#39;Aguardando Pagto&#39;){
$informacao[&#39;status&#39;] = &#39;3&#39;;
}elseif($_POST[&#39;StatusTransacao&#39;] == &#39;Completo&#39;){
$informacao[&#39;status&#39;] = &#39;4&#39;;
}elseif($_POST[&#39;StatusTransacao&#39;] == &#39;Cancelado&#39;){
$informacao[&#39;status&#39;] = &#39;5&#39;;
}
} else if ($result == &quot;FALSO&quot;) {
//O post não foi validado pelo PagSeguro.
$informacao[&#39;status&#39;] = &#39;1000&#39;;
} else {
//Erro na integração com o PagSeguro.
$informacao[&#39;status&#39;] = &#39;3&#39;;
}

} else {
// POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
// No término do checkout o usuário é redirecionado para este bloco.
$informacao[&#39;status&#39;] = &#39;3&#39;;
}

$this-&amp;gt;load-&amp;gt;view(&#39;header_interna_view&#39;, $page_infos);//Carrega o cabeçalho
$this-&amp;gt;load-&amp;gt;view(&#39;empresa/sidebar_view&#39;);//Carrega a Sidebar
$this-&amp;gt;load-&amp;gt;view(&#39;financeiro/retorno_view&#39;, $informacao);//Carrega a view de conteudo

$this-&amp;gt;load-&amp;gt;view(&#39;footer_view&#39;);//carrega do rodapé

}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Agora a library:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
&amp;lt;?php

header(&#39;Content-Type: text/html; charset=ISO-8859-1&#39;);

define(&#39;TOKEN&#39;, &#39;2EEF70CFFCB547DBA7823F19C7D17F24&#39;);

class PagSeguroNpi {

private $timeout = 20; // Timeout em segundo

public function notificationPost() {
$postdata = &#39;Comando=validar&amp;amp;Token=&#39;.TOKEN;
foreach ($_POST as $key =&amp;gt;$value) {
$valued = $this-&amp;gt;clearStr($value);
$postdata .= &quot;&amp;amp;$key=$valued&quot;;
}
return $this-&amp;gt;verify($postdata);
}

private function clearStr($str) {
if (!get_magic_quotes_gpc()) {
$str = addslashes($str);
}
return $str;
}

private function verify($data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, &quot;https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml&quot;);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, $this-&amp;gt;timeout);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = trim(curl_exec($curl));
curl_close($curl);
return $result;
}

}

?&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Testem! Qualquer problema, sugestão ou qualquer outra coisa, deixe um comentário.</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/4668998708938969278/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-e-pagseguro-retorno.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4668998708938969278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4668998708938969278'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-e-pagseguro-retorno.html' title='CodeIgniter e PagSeguro – Retorno Automático'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>1</thr:total><georss:featurename>São Paulo, Brasil</georss:featurename><georss:point>-23.5489433 -46.6388182</georss:point><georss:box>-24.014749300000002 -47.270532200000005 -23.0831373 -46.0071042</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-3683087600422899370</id><published>2011-11-19T06:15:00.000-08:00</published><updated>2012-05-28T11:23:19.943-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Record"/><category scheme="http://www.blogger.com/atom/ns#" term="CI"/><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Codeigniter: Pegando o ID auto-gerado depois de executar um INSERT</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
Olá,&lt;br /&gt;
&lt;br /&gt;
Aqui vai uma dica simples mas que eu quebrei a cabeça quando comecei a utilizar o CodeIgniter.&lt;br /&gt;
&lt;br /&gt;
Como pegar o ID auto-gerado pelo banco de dados depois de executar uma query INSERT?&lt;br /&gt;
Muito simples! Veja o exemplo a baixo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
$var[&#39;nome&#39;] = $this-&amp;gt;input-&amp;gt;post(&#39;nome&#39;);
$var[&#39;email&#39;] = $this-&amp;gt;input-&amp;gt;post(&#39;email&#39;);
//Recebendo os valores do formulário e armazenando em um array

$this-&amp;gt;load-&amp;gt;module(&#39;modulo_db&#39;);//Carrega a Model
if($this-&amp;gt;modulo_db-&amp;gt;grava_form($var)){
$id_auto_gerado = $this-&amp;gt;db-&amp;gt;insert_id();//Pega o ID auto-gerado e armazena na variavel
}&lt;/pre&gt;
&lt;br /&gt;

Simples não?&lt;br /&gt;
&lt;br /&gt;
Este código deve ser utilizado em Controler.</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/3683087600422899370/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-pegando-o-id-auto-gerado.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3683087600422899370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/3683087600422899370'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/codeigniter-pegando-o-id-auto-gerado.html' title='Codeigniter: Pegando o ID auto-gerado depois de executar um INSERT'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-4531101385054701483</id><published>2011-11-19T06:12:00.000-08:00</published><updated>2012-05-28T11:24:56.472-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="funcoes"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="recursivas"/><title type='text'>PHP – Funções Recursivas</title><content type='html'>&lt;br /&gt;
Hello World!&lt;br /&gt;
&lt;br /&gt;
Aqui eu vou apresentar um caso que me deu um certo trabalho. Trata-se de uma classe usada para listar “Filhos” e os “Filhos dos Filhos” até onde forem.&lt;br /&gt;
&lt;br /&gt;
Eu tive essa demanda em um sistema no qual usuários indicavam novos usuários e deveria ser apresentado uma lista com a “rede de indicados” de um determinado usuário indicante.&lt;br /&gt;
&lt;br /&gt;
Segue a classe em PHP com consulta a um banco de dados MySql.&lt;br /&gt;
&lt;br /&gt;
Obs: Eu não vou postar o código de conexão com o banco de dados, isso pode ser facilmente encontrado no internet.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:php&quot;&gt;
&amp;lt;?php
class Rede
{
private $nivel; //Esta variavel é usada para enumerar todos os listados
private $subnivel = 0; //Esta variavel server para referenciar o pai dos listados em qualquer nível
&lt;br /&gt;
public function verifica_filho($idpai, $nivel, $subnivel){//Função que verifica se o usuário que esta sendo listado possui filho(s)
$sql = &quot;SELECT id_usuario FROM tb_usuarios WHERE id_pai = $idpai&quot;;
$res = mysql_query($sql) or die (&quot;Erro na Query: $sql&quot;);
if(mysql_num_rows($res) != &quot;&quot;){
$subnivel = $this-&amp;gt;$nivel;
$this-&amp;gt;lista_filhos($nivel, $subnivel,$idpai); //Chama a função que lista os filhos caso o usuário tenha filhos
}
}//Se o usuário não tiver filhos, retorna ao loop anterior

public function lista_filhos($nivel, $subnivel, $id2){
$sql1 = &quot;SELECT id_usuario, nm_nome FROM tb_usuarios WHERE id_pai = $id2&quot;;//Lista os filhos do usuário
$res1 = mysql_query($sql1) or die (&quot;Erro na Query: $sql1&quot;);
while($row1 = mysql_fetch_array($res1)) {
$this-&amp;gt;$nivel++;
echo &quot;d.add(&quot;, $this-&amp;gt;$nivel, &quot;,&quot;, $subnivel, &quot;,&#39;&quot;, $row1[&quot;nm_nome&quot;], &quot;&#39;);\n&quot;;//Escreve o ID (nivel) + nome do usuário&lt;br /&gt;
$this-&amp;gt;verifica_filho($row1[&quot;id_distribuidor&quot;], $nivel, $subnivel); //Chama a função que verifica se o usuário possui filhos
}
}
}#Fim da classe
&lt;br /&gt;
?&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Esse é um exemplo de funções recursivas, que uma função chama a outra em um loop e é encerrada quando uma das condições não é atendida.&lt;br /&gt;
&lt;br /&gt;
O mais facinante é que o PHP consegue “lembrar” de onde parou e voltar a execução a partir do ID que iniciou um loop.&lt;br /&gt;
&lt;br /&gt;
Comentários e sugestões serão bem vindos!</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/4531101385054701483/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-funcoes-recursivas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4531101385054701483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/4531101385054701483'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/php-funcoes-recursivas.html' title='PHP – Funções Recursivas'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8641587540606110224.post-7522694366495826000</id><published>2011-11-19T06:05:00.000-08:00</published><updated>2011-11-19T06:08:09.663-08:00</updated><title type='text'>Iniciando</title><content type='html'>Olá!&lt;br /&gt;
Eu me chamo Edgard e vou postar muitas coisas relacionadas a Programação com PHP, MySql, Css, Zend Framework entre muitas outras coisas.&lt;br /&gt;
Espero poder ajudar outros programadores a encontrar uma solução para seus problemas com as informações que serão postadas aqui.&lt;br /&gt;
Iniciando…</content><link rel='replies' type='application/atom+xml' href='http://programandotododia.blogspot.com/feeds/7522694366495826000/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://programandotododia.blogspot.com/2011/11/iniciando.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/7522694366495826000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8641587540606110224/posts/default/7522694366495826000'/><link rel='alternate' type='text/html' href='http://programandotododia.blogspot.com/2011/11/iniciando.html' title='Iniciando'/><author><name>Edgard Michel</name><uri>http://www.blogger.com/profile/11474177859726123272</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46xYMEEPF_ANa3Sd_o42iaMvGX8mew_zT3E2HpuIJvFGxV0LOMOLlUREQjkVR79yxxop7bIMXogXSxPjE_mT6anRqgZ2n08QGDIcmht-UxI2IiuXW5wQeVzWk-_sL2Gc/s220/2014-10-01+09.28.56-2.jpg'/></author><thr:total>0</thr:total></entry></feed>