Menu TreeView Dinâmico com PHP e MySQL

O JQuery, possui uma classe que se aplicada as listas <ul>....<li>, gerar um menu com a visualização ao lado, porém, eu precisei que este mesmo menu fosse gerado dinamicamente utilizando a consulta no banco de dados.

 Vejam como foi criado a lógica.

Criando a tabela.

CREATE TABLE IF NOT EXISTS `menu` (
  `caminho` varchar(250) DEFAULT NULL,
  `descricao` varchar(250) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

....inclusão dos dados na tabela
 
INSERT INTO `base_de_conhecimentos` (`caminho`, `descricao`, `solucao`) VALUES
	('1', 'Item 1', NULL),
	('2', 'Item 2', NULL),
	('3', 'Item 3', NULL),
	('1/1', 'Item 1/1', NULL),
	('1/2', 'Item 1/2', NULL),
	('2/1', 'Item 2/1', NULL),
	('3/1', 'Item 3/1', NULL),
	('3/2', 'Item 3/2', NULL),
	('3/3', 'Item 3/3', NULL),
	('3/3/1', 'Item 3/3/1', NULL),
	('3/3/2', 'Item 3/3/2', NULL),
	('3/3/3', 'Item 3/3/3', NULL),
	('3/3/3/1', 'Item 3/3/3/1', NULL);

código php

 <?
//conexao
mysql_connect("127.0.0.1","root","****");
//seleciona o banco
mysql_select_db("banco");
//consulta
$consulta = mysql_query("Select caminho, descricao From menu Order by caminho")or die(mysql_error());
$maior_nivel = 0; 
//REALIZA A PESQUISA NO BANCO DE DADOS E ARMAZENA O RESULTADO EM VETORES
while($aux_consulta = mysql_fetch_assoc($consulta)){	
	$root 		= substr($aux_consulta['caminho'],0,(strlen($aux_consulta['caminho'])-1));	
	$root_vetor = explode("/",$root);	
	$count_vetor= count($root_vetor)-1;
	if ( !empty($root) ) {
		$li[ $root ][] 		= $aux_consulta['caminho'];
	} else {
		$li_root[] = $aux_consulta['caminho'];
	}
	$descricao[ $aux_consulta['caminho'] ] = $aux_consulta['descricao'];
	if ($maior_nivel < $count_vetor )
		$maior_nivel = $count_vetor;
}
//FUNCAO PARA REPETIÇÃO DOS <UL> E <LI>
function vetor_li($lis,$li,$descricao){
	echo '<ul>';
	foreach($li[ $lis ] as $key2 => $lis2 ){
		$lis3 = $lis2.'/';
		if ( isset($li[ $lis3 ]) ){
			echo '<li class="closed"><span class="folder">'.$descricao[$lis2].'</span>';		
			vetor_li($lis3,$li,$descricao);
		}else{
			echo '<li><span class="file">'.$descricao[$lis2].'</span>';
		}
		echo '</li>';
	}
	echo '</ul>';
}
echo '<ul id="browser" class="filetree">';
foreach($li_root as $key => $lis){
	echo '<li class="closed"><span class="folder">'.$descricao[$lis].'</span>';
	$lis = $lis.'/';
	if ( isset($li[ $lis ]) ){
		echo '<ul>';
		foreach($li[ $lis ] as $key2 => $lis2 ){
			$lis3 = $lis2.'/';
			if ( isset($li[ $lis3 ]) ){
				echo '<li class="closed"><span class="folder">'.$descricao[$lis2].'</span>';
				vetor_li($lis3,$li,$descricao);
			} else {
				echo '<li><span class="file">'.$descricao[$lis2].'</span>';
			}
			echo '</li>';
		}
		echo '</ul>';
	}
	echo '</li>';	
}

echo '</ul>';
/**/
?>
[ leia mais ]

Sistema Financeiro Pessoal OnLine

Procurando, encontrei o site: http://agerencia.com/. Ele é um sistema financeiro online muito bom. Não é gratuito, mas para quem precisa ter um controle de contas a pagar e contas a receber entre muitas outras coisas, ele é bastante completo. Segundo o site, ao se cadastrar, recebe isenção de 30 dias para pode realizar seus lançamentos, e depois desses 30 dias, tem mais 30 dias para pagar a primeira parcela, total de 60 dias para o primeiro pagamento.

O site cobra R$19,90 ao mes pelo uso do sistema.

Tá ai a dica. Um abraço. [ leia mais ]

Chamar função que está dentro de um iframe

Vejamos a seguinte situação.
Temos a seguinte pagina.
testeiframe.php
<HTML> 
  <HEAD> 
  <TITLE> New Document </TITLE> 
  </HEAD> 
  <BODY> 
  <iframe name="teste" id="teste" src="testeiframe2.php"></iframe> 
  </BODY> 
  </HTML> 
Dai brota a necessidade de chamar nessa página uma função que infelizmente está dentro da página testeiframe2.php que está dentro do nosso iframe.
Pois bem, para isso é muito fácil, basta colocarmos a nossa página que chama o iframe assim:
testeiframe.php
<HTML>
  <SCRIPT LANGUAGE="JavaScript"> 
  function b() { 
  window.frames["nome_do_iframe"].nome_da_funcao(); 
  } 
  </SCRIPT> 
  <HEAD> 
  <TITLE> New Document </TITLE> 
  </HEAD> 
  <BODY> 
  <iframe name="teste" id="teste" src="testeiframe2.php"></iframe> 
  </BODY> 
  </HTML> 
Troque os nomes de acordo com o seu código e pronto.
Este código funciona tanto no IE quanto em outros navegadores com por exemplo FF. Depois basta chamar a função na página principal no onclick de um botão por exemplo
Abraço a todos!
[ leia mais ]

Gerador De Gifs Carregando Ajax

Ai vai uma dica legal. Este site é um gerador de gifs animados para ajax, daqueles utilizados em aplicações para demostrar que ela está carregando. Basta selecionar as cores desejadas e clicar em "Generate It!"

Aprovetem.

Link
http://www.ajaxload.info/#preview
Um abraço a todos.
[ leia mais ]

Como limitar campo textarea

Como sabemos, o campo do form tipo textarea não possui um comando maxlength a exemplo de outros campos com por exemplo o campo tipo text, assim sendo, uma das formas que eu encontrei para limitar o número máximo de caracteres neste tipo de campo foi me servindo do javascript na página.

A função abaixo faz exatamente o que eu preciso, pega o tamanho da string no value do campo e realiza a operação para limitar ao tamanho que eu preciso

<script>
function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}
</script>

Para o uso desta função, atribuiremos em nosso form da seguinte forma:
No campo textarea coloque assim:
<html>
<textarea maxlength="40" onkeyup="return ismaxlength(this)"></textarea>
</html>

Pronto, assim o usuário não conseguirá digitar mais que 40 caracteres em nosso campo textarea. Um abraço e até a próxima.
[ leia mais ]

Erro MSN Video McAFee

No meu note eu tenho  o McAFee instalado, porém quando instalei versão 2009 do Mensseger não conseguia configurar a opção de web cam nele, mostrava sempre o mesmo erro. E procurando (Google) encontrei a solução. Não imaginava que o meu anti-virus (McAfee) estava bloqueando. Veja abaixo a solução do problema direto no anti-virus.

1º. Pelo executar, acesse: C:\Program Files\McAfee\SiteAdvisor\
2º. Selecione o arquivo sasets.ini abrindo-o no bloco de notas.
3º. Com o arquivo aberto, procure a linha [msnmsgr.exe]
4º. Abaixo dessa linha, altere Enabled=1 para Enabled=0.
5º. Salve o arquivo e reinicie o seu Windows.

Eu fiz estas configurações no meu McAFee e funcionou perfeitamente.

Abraço a todos.
[ leia mais ]

Calcular idade em PHP (em anos)

Neste script simples faremos o calculo da idade a partir da data de nascimento do usuário.

É um script simples, procure altera-lo conforme a sua necessidade.


<? 
if(isset($_POST['nascimento'])){?>Sua idade atual é de <?
$nascimento = mktime(0,0,0,substr($_POST['nascimento'],3,2),substr($_POST['nascimento'],0,2),substr($_POST['nascimento'],8,2)); 
$dthj   = mktime(0,0,0,date('m'),date('d'),date('Y')); 
$segundos_diferenca = $dthj - $nascimento; 
$dias_diferenca = ($segundos_diferenca / (60 * 60 * 24)); 
if($dias_diferenca >= 366){
$dias_diferenca = $dias_diferenca/365; 
$dias_diferenca = (int) $dias_diferenca;
echo $dias_diferenca.' anos';
}else{
$meses = $dias_diferenca/30;
$meses = rand($meses,0);
echo $dias_diferenca.' dias ('.$meses.' meses)';
}
?><a href="<?=$_SERVER['PHP_SELF']?>">Recalcular</a><?
}else{ ?>
Calcule sua idade.
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">Data de nascimento: <input type="text" name="nascimento" /> ex formato: 22/03/1986<br><input type="submit" value="calcular" /></form>
<? }?>
[ leia mais ]

Formulário de cadastro e confirmação de e-mail com PHP

Neste post, tentarei passar uma forma simples e rápida de criarmos uma página de cadastro, com envio de e-mail de link para confirmação do mesmo. Nesta página faremos de uma forma bem simles mesmo, mas você pode alterar o código da forma que desejar. Pois a minah intenção não será de elaborar o melhor código possível, mas sim, ajudar a ter uma noção de como fazer.


Seja sempre curioso, esqueça do Ctrl V e Ctrl C, tente digitar novamente o código para decorar, ou melhor, aprender a lógica criada na página, assim poderemos contruir uma web melhor. Mas enquanto isso não acontece, vamos ao código.

Eu estou utilizando a Classe PHPMAILER, você pode fazer o download do arquivo PHPMAILER cliacando aqui.

Com a classe em sua máquina, vamos criar nosso banco de dados mysql. Execute o script abaixo:

CREATE DATABASE `teste`;
USE `teste`;

CREATE TABLE `cadastro` (
`cadastrocod` INT (5) UNSIGNED ZEROFILL AUTO_INCREMENT, 
`nome_user` VARCHAR (150), 
`email_user` VARCHAR (150), 
`confir_email_user` CHAR (1) DEFAULT 'N', 
PRIMARY KEY(`cadastrocod`)
) TYPE = MyISAM;

Agoa com o banco de dados e nossa tabela criada, faça uma conexao com ela (esta parte não explicarei neste post), feita a conexao, vamos a página que interessa. Segue o código abaixo:
cadastro.php

<?php
include 'conexao.php';
Abre_Conexao();
if($_SERVER["REQUEST_METHOD"] == "POST"){ //IF 1
mysql_query("Insert Into cadastro (`nome_user`,`email_user`) Values ('".$_POST['nome']."','".$_POST['email']."')");
if(mysql_affected_rows()==0){
$erro[] = 'Não foi possível realizar o cadastro';
}else{
/*ENVIANDO COM PHPMAILER*/
/* INCLUI A PÁGINA DA CLASS*/ 
include("phpmailer/class.phpmailer.php"); 
/*CORPO DO E-MAIL*/ 
$html = " 
<html> 
<body> 
Olá ".$_POST['nome'].", seu cadastro foi realizado, mas para ter acesso ao conteúdo, clique no link abaixo para confirmar seu endereço de e-mail.<br><br>
<a href='http://www.seusite.com.br/cadastro.php?email_confirm=".$_POST['email']."' target='_blank'>Ativar/Validar e-mail</a><br><br>
Atenciosamente,<br>
Admin.
</body> 
</html>"; 
/*INSTANCIA A OBJETOS*/ 
$mail = new PHPMailer(); 
/*MANDAR VIA SMTP*/ 
$mail->IsSMTP(); 
/*SERVIDOR SMTP*/ 
$mail->Host = "mail.seusite.com.br"; 
/*HABILITA SMTP AUTENTICADO - NAO ALTERAR */ 
$mail->SMTPAuth = true; 
/*USUARIO DESTE SERVIDOR SMTP*/ 
$mail->Username = "seuemail@seusite.com.br"; 
/*SENHA USUARIO DESTE SERVIDOR SMTP*/ 
$mail->Password = "*****"; 
/*E-MAIL UTILIZADO PARA ENVIO, PODER SER O MESMO DO USERNAME*/ 
$mail->From = 'seuemail@seusite.com.br'; 
$mail->FromName = 'seuemail@seusite.com.br'; //Ex: nome_aqui (email@dominio.com) 
/*WRAP SET O TAMANHO DO TEXTO POR LINHA*/ 
$mail->WordWrap = 50; 
/*ENVIAR EM HTML*/ 
$mail->IsHTML(true); 
/*INFORMANDO O E-MAIL DO REMETENTE*/ 
$mail->AddReplyTo('seuemail@seusite.com.br','seuemail@seusite.com.br'); 
/*LISTA DE ENDEREÇOS QUE DEVE SER MANDADO O E-MAIL*/ 
$mail->AddAddress($_POST['email'],'Sr(a).'.$_POST['nome']); 
$msg = $html; 
/*O ASSUNTO DO E-MAIL*/ 
$mail->Subject = "Confirmacao de Cadastro"; 
/*ADICIONANDO O HTML NO CORPO DO E-MAIL*/ 
$mail->Body = $msg; 
/*DEFININDO A LINGUAGEM*/ 
$mail->SetLanguage("br", "phpmailer/language/"); 
/*ENVIANDO E RETORNANDO STATUS DO ENVIO*/ 
if(!$mail->Send()){ 
/*ERRO NO ENVIO*/ 
echo "Ocorreu um erro no envio do e-mail. Erro: ".$mail->ErrorInfo; //FUNCAO INFORMA O ERRO OCORRIDO // 
exit; 
} 
/*FECHA ENVIO DE PHPMAILER*/
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fixa de Cadastro</title>
<style>
body{font-family:Arial; font-size:12px;}
form{background:#CCCCCC; border:solid 1px; width:500px; padding:10px;}
</style>
</style>
</head>
<body>
<?
if(isset($erro)){//IF 0
foreach($erro as $erros){
echo $erros.'<br><br>';
}
?>
<a href="<?=$_SERVER['PHP_SELF']?>">voltar a ficha de cadastro</a>
<?
}else{//ELSE IF 0
if($_SERVER["REQUEST_METHOD"] != "POST" && !isset($_GET['email_confirm'])){ //IF 1
?>
Ol&aacute;, seja bem vindo. Preencha o formul&aacute;rio abaixo e cadastre-se gratuitamente.<br><br>
<form action="<?=$_SERVER['PHP_SELF']?>?cadastrar" method="post">
<div style="float:left; width:50px;">Nome:</div><div><input type="text" name="nome" value="" maxlength="100" size="40"/></div>
<div style="float:left; width:50px;">E-mail:</div><div><input type="text" name="email" value="" maxlength="100" size="50"/></div>
<div style="width:50px; margin-top:10px;"><input type="submit" value="cadastrar"></div>
</form>
<?
}else{
if(isset($_POST['nome'])||isset($_POST['email'])||$_GET['email_confirm']){
if(isset($_GET['email_confirm'])){//IF 2
$sql_cadastros = mysql_query("Update `cadastro` Set `confir_email_user`='S' Where email_user='".$_GET['email_confirm']."'")or die(mysql_error());
if(mysql_affected_rows()>0){//IF 3
?>
Seu e-mail foi confirmado e seu cadastro foi ativado!
<?
}else{//ELSE IF 3
?>
Este e-mail não consta em nossos registros.
<?
}//FECHA IF 3
}else{ //ELSE IF 2
?>
Seu cadastro foi realizado com sucesso!<br><br> Enviamos uma confirma&ccedil;&atilde;o de cadastro para o e-mail informado.<br><br> Clique no link contido no e-mail para ativar seu cadastro!
<?
} //FECHA IF 2
}else{
?>
Pedido inválido
<?
}
} //FECHA IF 1
}//FECHA IF 0
?>
</body>
</html>

Este código utiliza a mesma página realizar toda operação, mas ode optar utilizar mais de uma. Está ai a dica, qualquer dúvida, comente.
[ leia mais ]

Gerar arquivo PDF com PHP

Estava trabalhando com um Web Site, e precisei criar uma página de contrato para os clientes da empresa don do site, porém, esta suposta página de contrato precisava ser exibida aos clientes no formato PDF para ser imprimida, então, procurando encontrei uma classe para o PHP chamada FPDF que gera o arquivo PDF.

Bem, assim resolvi postar aqui a lógica básica do código. Vejamos abaixo:


Em primeiro lugar, clique aqui faça o download da classe para sua máquina ou acesse o site http://www.fpdf.org e descompacte-a o arquivo ZIP no diretório de seu site.

Crie um documento PHP dê o nome de pdf.php. Este documento deverá ser como no exemplo abaixo:

<?php 
//chamando a classe fpdf php . OBS: aponte para a pasta que está sua classe
include "fpdf/fpdf.php"; 
//define a pasta contendo as fontes usdas no documento
define('FPDF_FONTPATH','font/');
//configurações iniciais
$pdf = new FPDF('P','cm','A4');
$pdf = new FPDF();
$pdf->Open();
$pdf->AddPage();
//define a fonte utilizada para odocumento
$pdf->SetFont("Arial",'', 12);
//titulos de configuração do documento
$pdf->SetAuthor("Titulo do arquivo");
$pdf->SetTitle("Titulo do arquivo");
$pdf->SetSubject("Titulo do arquivo");
$pdf->Header();
//exibe o cabecalho do documento
$pdf->MultiCell(0,5,"Texto cabecalho",0, 'R');
//distancia do titulo da margem superior
$pdf->Ln(6);
//Titulo do documento
$pdf->MultiCell(0,5,"Titulo do documento",0,'C');
//distancia do texto e do titulo do documento
$pdf->Ln(6);
//texto do documento
$texto = "texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto ";
//gerar o texto no documento
$pdf->MultiCell(0,5,"$texto",0, 'J');
//cria o arquivo pdf e exibe no navegador
$pdf->Output();
?>


Tentei deixar o código um pouco comentado para facilitar no entendimento. Se desejar mais informações sobre a classe, acesse o site do desenvolvedor no endereço: http://www.fpdf.org/
[ leia mais ]

Data por extenso em PHP

Está é uma forma simples de exibir na página uma determinada data por extenso. Por exemplo:

dia de 25 e dezembro


Abaixo o script em php.
<?
setlocale(LC_TIME,"portuguese");
$data = "2009-12-01";
$data_dia = (int)substr($data,9,2);
$data_mes = (int)substr($data,5,2);
echo strftime("Dia %d de %B de %Y",mktime(0,0,0,$data_mes,$data_dia,substr($data,0,4)));
?>

Abraços. Até mais!
[ leia mais ]