Archive for the Category PHP

 
 

Apresentação Upload de Imagem com PHP

Limpar aquivo .txt com php

Limpar um arquivo txt é algo realmente simples, para isso só devemos ficar atentos para qual modo de abertura utilizaremos para acessar o arquivo por meio da função fopen() do php. Se o utilizarmos o modo “w” ou “w+”, logo após abrirmos o arquivo o mesmo terá seu tamanho reduzido a 0 (zero) sendo portanto, completamente limpo. Vale lembrar que se antes de fechar o arquivo se você escrever algo nele, esse passará a ser o novo conteúdo do arquivo. Vamos ao exemplo:

function gravarDado($arquivo, $mensagem, $sobrescrever='w+'){
	$fp = fopen($arquivo, $sobrescrever);
	$escreve = fwrite($fp, $mensagem);
	fclose($fp);
}

A função acima irá sobrescrever os dados presentes em determinado arquivo, caso você não informe outro método de acesso como terceiro parâmetro da função.

Recuperando dados de um checkbox como array

O checkbox é o tipo de campo utilizado quando o usuário poderá escolher mais de uma opção, casos onde ele poderá marcar que se interessa pelas áreas de robótica, aplicativos móbile e dispositivos de armazenamento. Vez por outra ainda me confundo quando estou recuperando os dados de checkbox, pra quem está com essa dúvida vai à dica: Para pegar os dados enviados por checkbox como array em php basta inserimos os colchetes no name do input no HTML:

Áreas de interesse:

Para capturar as áreas marcadas pelo usuário basta fazer o seguinte:

$areas = isset($_POST['id_area']) ? $_POST['id_area'] : NULL;
echo $areas; //Array
foreach($areas as $id_area){
	echo $id_area;//imprimir id de áreas
}

Simples assim!

Chat free do Geração Beta, utilizando AJAX

Apesar de existirem inúmeros chats free por aí quando necessitei implementar um, me deparei com uma tarefa extremamente difícil: compreender o código alheio ao ponto de conseguir adequar o chat para meus propósitos. Outro porém, foi que muitas implementações vinham que funcionalidades que nunca usaria e portanto só ocupariam espaço no meu servidor.

Diante disso tomei vergonha e parei um tempo pra estudar AJAX (o que já vinha adiando fazia tempo!) e pensar como faria o chat, em praticamente uma semana o chat já estava relativamente pronto! Ainda estou mexendo nele e modificando algumas coisas por isso que ele está em fase beta. Sei que ainda dá pra otimizar o código, por isso sugestões e críticas serão bem vindas. Quem quiser dá uma olhada como ficou é só baixar, tá liberado!!

Download Chat Geração Beta Versão 1.0 – Beta

Caracaterísticas do Geração Beta Chat Versão 1.0 Beta:

  • O gbChat não utiliza banco de dados, todas as mensagens são armazenas no arquivo chat.txt que se encontra no diretório chat.
  • Os usuário que estão online se são armazenados no arquivo online.txt.
  • Em caso de mensagem privada, a conversa é armazena em arquivo no diretório chat/PM, o nome deste arquivo é composto pelo Nick da pessoa que iniciou a conversa + o separador _com_ + o Nick da pessoa com a qual deseja conversar.
  • Se alguém acessar o chat e a última mensagem estiver sido escrita a mais de 1h atrás, a conversa é automaticamente limpa. E as mensagens são armazenadas no diretório chat/ backup tendo como nome do arquivo a data da última mensagem. Tal mecanismo também funciona para as mensagens privadas, a diferença é que elas são armazenadas no diretório chat/backup/pm e junto com a data o Nick das duas pessoas envolvidas na conversa também.
  • O tempo de atualização do chat (TEMPO), e do tempo decorrido desde a última conversa para que o chat seja limpo e o backup efetuado (TEMPO_CHAT) estão como constantes definidas no início do arquivo funções.php.
  • O Nick do usuário é armazenado na sessão “nome_chat”, que se encontra referenciada pela constante USUARIO, para alterar o nome da sessão que armazena o Nick do usuário basta alterar o valor da constante USUARIO.
  • O chat encontra-se com codificação ISSO-8859-1, em breve o postarei na versão UTF-8.
  • Todas as funções encontram-se no arquivo funcoes.php, devidamente comentadas de forma a descrever seu propósito.
  • A página users_online.php mostra apenas os usuários que estão online no momento, sem carregar a parte do chat em si. Ela também permite enviar e receber mensagens privadas de qualquer usuário online.
  • O chat pode ser utilizado chamando pelo arquivo chat.php, tanto pode ser o que está dentro do diretório chat ou mesmo pelo que se encontra fora do diretório. Quando escolher qual utilizar poderá deletar o outro sem problema.
  • Existem dois arquivos para mostrar os usuários online (user_online.php) um dentro do diretório chat e um fora, caso precise apenas de um você poderá deletar o outro e caso não precise de nenhum dos dois também pode deletá-los que isso não irá influenciar no chat em si.

Faça o download do chat clicando no link ao lado: Download Chat Geração Beta Versão 1.0 – Beta

Limpar aquivo .txt com php

Limpar um arquivo txt é algo realmente simples, para isso só devemos ficar atentos para qual modo de abertura utilizaremos para acessar o arquivo por meio da função fopen() do php. Se o utilizarmos o modo “w” ou “w+”, logo após abrirmos o arquivo o mesmo terá seu tamanho reduzido a 0 (zero) sendo portanto, completamente limpo. Vale lembrar que se antes de fechar o arquivo você escrever algo nele esse passará a ser o novo conteúdo do arquivo. Vamos aos exemplos:

Primeiro vamos dar uma olhada no códio que simplesmente apaga todo conteúdo do arquivo:

//abrimos o arquivo em modo w+ o que fará com que o mesmo seja limpo
$f = fopen("arquivo.txt", "w+");
//fechamos o arquivo
fclose($f);

Depois desse passo vamos agora atualizar o arquivo retirando o antigo conteúdo e gravando um novo:

$f = fopen("arquivo.txt", "w+"); //abrimos o arquivo e o limpamos
fwrite($f, "Uma frase\r\n"); //gravamos uma frase
fclose($f); //fechamos o arquivo

Pra finalizar vamos agora fazer uma função onde você passa como parâmentro o arquivo e uma frase pra ser removida do mesmo:

function retiraLinha($arquivo, $linha){
	$fc = file($arquivo);
        //abre o arquivo e o limpamos
	$f = fopen($arquivo, "w+");
        //percorre o array com o conteudo do arquivo
	foreach ($fc as $line){
                //escreve no arquivo todas as linhas que foram diferente daquela passada como parâmetro
		if($line!=$linha)
			fwrite($arquivo, $line);
	}
        //fecha o arquivo
	fclose($f);
}

Pronto! Simples assim!

Obs1:Vale lembrar que a quebra de linha em arquivo no windows é representada por “/r/n”.

Obs2: Para mais informações, consultar o manual em fopen, fwrite, fclose, file.

Entendo a função mysql_fetch_array();

Para manipular os dados que estão no banco com auxilio do php, além do conhecimento sobre a linguagem necessitaremos seguir alguns passos, antes de executar nossos comandos. Como o SGBD (Sistema Gerenciador de Banco de Dados) utilizado será o MySql, utilizaremos funções especificas para este SGBD, caso esteja utilizando outro recomendo que consulte o manual e verifique quais as funções desenvolvidas para seu SGBD que possuem resultado semelhantes aquelas empregadas aqui.

Para manipulação de dados que estiverem no banco com php: primeiro nos conectamos com o nosso servidor MySql através da função mysql_connect(), passando como parâmetro o nome do host, usuário do banco e senha. Depois disso selecionamos o banco de dados que desejamos atingir passando seu nome como parâmetro para a função mysql_select_db(). Com a conexão aberta e o banco selecionado todas as queries executadas dentro da função mysql_query(), que estejam em nosso script se utilizarão desta conexão para chegar ao banco.

Quando queremos inserir, editar e excluir linhas; basta apenas que coloquemos o comando SQL como parâmetro de nossa função mysql_query() ele será executado e retornará o valor TRUE em caso de sucesso e FALSE em caso de erro, Pronto! Porém quando queremos recuperar dados do banco e mostrá-los em nosso site, necessitaremos utilizar o comando SELECT junto com a função mysql_query(). Nesse caso tal função não retornará apenas TRUE ou FALSE por isso precisaremos fazer um tratamento mais elaborado utilizando a função mysql_fetch_array() para mostrar nossos dados. Então, vamos entender como recuperar nossos dados com o auxílio da função mysql_fetch_array(), nossos exemplos terão como base a tabela abaixo:

Selecionando toda a tabela

Tabela base

Quando executamos a query “SELECT * FROM empregado WHERE setor=’administrativo’” em um banco que possua nossa tabela base teremos como resultado a mini-tabela abaixo:

SELECT nome,setor,salario FROM empregado WHERE (setor=’administrativo’ OR setor=’financeiro’) AND salario>1000 AND nome like ‘M%’;

Empregados do setor administrativo

Se depois de conectados com o banco,  executarmos a query a partir de nosso servidor com o auxílio da função mysql_query(), teremos selecionado a mini-tabela acima e a copiado para a memória retornando apenas seu endereço. Por isso ao tentarmos escrever o retorno de tal função não veremos os dados selecionados, mas apenas o identificador da posição de memória que eles ocupam. Devido a isto necessitaremos de uma função auxiliar que vá até a memória e consiga trazer as linhas de nossa mini-tabela, esta função será a mysql_fetch_array().

Quando executarmos pela primeira vez a função mysql_fetch_array() passando como parâmetro o endereço de nossa mini-tabela, como a função ainda não tem nenhum endereço associado, ela irá fazer uma cópia para si do endereço da primeira linha de nossa mini-tabela em uma variável de endereço e então começará a transformar essa linha em um array, após a transformação ela incrementará a variável de endereço em uma unidade fazendo com que ela passe a armazenar o endereço da segunda linha, depois disso a função retorna a nossa linha na forma de um array, fazendo com os dados possam ser acessados colocando o nome de cada coluna como índice do array ou a posição que a coluna ocupa.

Na segunda execução como a função já tem sua variável de endereço preenchida ela não precisa mais copiá-la, apenas segue para transformar a linha associada ao endereço em um array, após a transformação incrementará a variável de endereço em uma unidade fazendo com que ela passe a armazenar o endereço da próxima linha, e retorna o array gerado com os dados da segunda linha. Tal processo se repetirá até que na recuperação da última linha de nossa mini-tabela o incremento da variável de endereço fará com que ela armazene um endereço que não corresponda a uma linha da nossa mini-tabela, e então quando a função for chamada novamente não conseguirá fazer a conversão da linha em um array e retornará FALSO.

Entendo o funcionamento da função poderemos exibir no nome dos empregados do setor financeiro da seguinte forma:

//conexão com o banco
$conecta = mysql_connect("localhost","root","");
$db = mysql_select_db("geracaobeta");//nome do banco geracaobeta

$sql = mysql_query("select * from empregado where setor='administrativo'");

//transforma a 1° linha em um array incrementa o endereço
$linha1 = mysql_fetch_array($sql);
echo $linha1['nome']."<br/>";//mostrará Maria dos Santos e quebrará a linha

//pega o endereço, transforma a 2° linha em um array e incrementa o endereço
$linha2 = mysql_fetch_array($sql);
echo $linha2['nome']."<br/>";//mostrará Maria Alice e quebrará a linha

//pega o endereço, transforma a 3° linha em um array e incrementa o endereço
$linha3 = mysql_fetch_array($sql);
echo $linha3['nome']."<br/>";//mostrará Mario Ferreira e quebrará a linha

Mas isto só funcionará porque sabemos que nossa consulta resultará em três linhas, mas caso não soubéssemos, como poderíamos fazer? Existe uma função que conta quantas linhas nosso resultado possui a mysql_num_rows(), de posse do número de linhas poderemos otimizar nosso código fazendo uso de um loop

//conexão com o banco
$conecta = mysql_connect("localhost","root","");
$db = mysql_select_db("geracaobeta");//nome do banco geracaobeta

$sql = mysql_query("select * from empregado where setor='administrativo'");

//contagem de linhas $num = 3;
$num = mysql_num_rows($sql);
//exibição das linhas
for($i=0; $i<$num; $i++){
    $linha = mysql_fetch_array($sql);
    echo $linha['nome']."<br/>";
}

Com este código teremos a execução da função mysql_fetch_array() três vezes, quando $i for 0,1 e 2; passando assim pelas três linhas de nossa tabela e retornado um array com o conteúdo da linha em questão. Já tivemos um ganho com relação a forma anterior, mas ainda podemos melhorar nosso algoritmo explorando o retorno da função mysql_fetch_array(), pois quando ela não conseguir recuperar a linha ela retornará FALSE. Então vamos ao código e depois a explicação:

//conexão com o banco
$conecta = mysql_connect("localhost","root","");
$db = mysql_select_db("geracaobeta");//nome do banco geracaobeta

$sql = mysql_query("select * from empregado where setor='administrativo'");

//exibição das linhas
while($linha = mysql_fetch_array($sql)){
 echo $linha['nome']."<br/>";
}

A cada execução o array retornado será armazenado na variável $linha que por conter um valor diferente de 0 e de FALSE será avaliada como TRUE, o que fará com que o loop continue até que não hajam mais linhas a serem recuperadas e a função retorne FALSE, interrompendo o ciclo de repetições.