[MySQL] Adicionar Dias a Datas

A 21 de Dezembro de 2009, categoria MySQL, SGBD, por Carlos Gonçalves
1

Hoje tinha um email de um dos meus clientes a pedir-me para incrementar uma data num evento da base de dados em 7 dias, porque esse evento tinha-se atrasado. Eu sabia que a instrução SQL era simples, mas já não me recordava, depois de fazer uma pesquisa rápida, encontrei a instrução SQL:

UPDATE eventos SET data_inicio = DATE_ADD(data_inicio,INTERVAL 7 DAY) WHERE eventos_id = 3;

Isto funciona para campos que sejam do tipo DATE e DATETIME.
De notar que é “7 DAY” e não “7 DAYS


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Backup Base Dados MySQL Com PHP

A 15 de Outubro de 2009, categoria MySQL, PHP, SGBD, por Carlos Gonçalves
4

Uma das tarefas mais importantes de qualquer programador precisa de fazer com frequência é o Backup à sua base de dados MySQL. Em muitos casos, a Base de Dados é o que dirige a maior parte do site.
Embora a maioria dos web hostings fazem backups diários da Base de Dados dos clientes, porém, em alguns casos, depender deles para fazer backups e disponibilizar-nos, sem qualquer custo é no mínimo arriscado. É por isso que criei uma função de backup de dados que possa utilizar sempre que quiser.

backup_bd('localhost','utilizador','password','blog');

/* Fazer Backup da BD ou só de uma Tabela */
function backup_bd($host,$utilizador,$password,$nome,$tabelas = '*')
{

	$link = mysql_connect($host,$utilizador,$password);
	mysql_select_db($nome,$link);

	//obter todas as tabelas
	if($tabelas == '*')
	{
		$tabelas = array();
		$resultado = mysql_query('SHOW TABLES');
		while($coluna = mysql_fetch_row($resultado))
		{
			$tabelas[] = $coluna[0];
		}
	}
	else
	{
		$tabelas = is_array($tabelas) ? $tabelas: explode(',',$tabelas);
	}

	foreach($tabelas as $tabelas)
	{
		$resultado = mysql_query('SELECT * FROM '.$tabelas);
		$num_campos = mysql_num_fields($resultado);

		$return.= 'DROP TABLE '.$tabelas.';';
		$coluna2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$tabelas));
		$return.= "\n\n".$coluna2[1].";\n\n";

		for ($i = 0; $i < $num_campos; $i++)
		{
			while($coluna = mysql_fetch_row($resultado))
			{
				$return.= 'INSERT INTO '.$tabelas.' VALUES(';
				for($j=0; $j<$num_campos; $j++)
				{
					$coluna[$j] = addslashes($row[$j]);
					$coluna[$j] = ereg_replace("\n","\\n",$coluna[$j]);
					if (isset($coluna[$j])) { $return.= '"'.$coluna[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_campos-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}

	//guarda ficheiro
	$ficheiro = fopen('bd-backup-'.time().'-'.(md5(implode(',',$tabelas))).'.sql','w+');
	fwrite($ficheiro,$return);
	fclose($ficheiro);
}

Claro que vais precisar de fornecer as credenciais de login da Base de Dados, bem como o conjunto de tabelas que queres fazer o backup. Se colocares “*” ou nenhuma tabela, será feito um full backup da Base de Dados. O script faz o resto!

Mais vale não arriscar quando o site é de estrema importância. Faz backups frequentes ou podes ter que pagar o preço mais tarde!


Muito FracoFracoRazoávelBomMuito Bom (4 votos, média: 4,75 num total de 5)
Loading ... Loading ...
Tags:
 

Editar Conteúdo com MooTools, PHP e MySQL

A 27 de Setembro de 2009, categoria JavaScript, MySQL, PHP, SGBD, por Carlos Gonçalves
6

Hoje em dia, todos os clientes querem ser capazes de editar o próprio conteúdos dos seus sites.
E por que não? Quer dizer, eles têm um orçamento de 500€, e até têm algum conhecimento em HTML / CSS. Ter um site que permita editar blocos de conteúdo, é o sonho de muitos clientes. Despendi algumas horas para desenvolver um sistema in-page para editar blocos de conteúdo.

botao demonstracao   Editar Conteúdo com MooTools, PHP e MySQL

O XHTML

<h1 class="editar" rel="32" title="Article Title">Titulo Editável</h1>
<p class="editar textarea" title="Conteúdo" rel="33">
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
	Isto é um parágrafo que podes editar.  Isto é um parágrafo que podes editar. Isto é um parágrafo que podes editar.
</p>

De notar que qualquer área editável terá que ser da classe editar. O atributo “rel” reflecte a identificação do registo que será actualizado na base de dados. Além disso, se quisermos que o formulário passe a ser uma área de texto em vez de uma entrada de texto, vamos dar o elemento editar à classe textarea.

O CSS

.editar:hover	{ background:#eee; }
.textarea textarea{ height:200px; padding:3px; }
.editar-empty	{ background:#fffea1; padding:20px; border:1px dashed #fc0; }
.box		{ border:1px solid #ccc; padding:5px; display:block; width:95%; }

A “classe” box é aplicada tanto para inputs e textareas.

O MooTools

window.addEvent('domready', function() {
	//encontrar as áreas editáveis
	$$('.editable').each(function(el) {
		//adicionar duplo-clique
		el.addEvent('dblclick',function() {
			var before = el.get('html').trim();
			el.set('html','');
			//substituir o texto actual pelo conteúdo introduzido no input ou na textarea
			if(el.hasClass('textarea'))
			{
				var input = new Element('textarea', { 'class':'box', 'text':before });
			}
			else
			{
				var input = new Element('input', { 'class':'box', 'value':before });
				input.addEvent('keydown', function(e) { if(e.key == 'enter') { this.fireEvent('blur'); } });
			}
			input.inject(el).select();
			input.addEvent('blur', function() {
				val = input.get('value').trim();
				el.set('text',val).addClass(val != '' ? '' : 'editable-empty');

				var url = 'moo-editable-content.php?id=' + el.get('rel') + '&amp;content=' + el.get('text');
				var request = new Request({
					url:url,
					method:'post',
					onRequest: function() {
						alert('making ajax call :: ' + url);
					}
				}).send();
			});
		});
	});
});

Uma vez que o DOM estiver pronto, encontramos todos os elementos com a classe editar. Adicionamos um duplo clique para cada item que insere um elemento de entrada.

O PHP & MySQL

if($_SESSION['is_admin'] &amp;&amp; is_numeric($_POST['id']) &amp;&amp; isset($_POST['content']))
{
	$query = "UPDATE content_table SET content = '".mysql_real_escape_string(stripslashes($_POST['content']))."' WHERE content_id = ".(int)$_POST['id'];
	$result = mysql_query($query,$db_link);
}

Quando o PHP recebe a solicitação de $_POST, valida as credenciais e actualiza a Base de Dados com o novo conteúdo. Simples! Clica aqui para veres em acção.

botao demonstracao   Editar Conteúdo com MooTools, PHP e MySQL

Algumas notas sobre o código.
Em primeiro lugar, este sistema não foi criado para ser utilizado num site grande, pois exige que o conteúdo editável seja colocado dentro de uma base de dados com um ID único.
Segundo, a textarea não possui um editor WYSIWYG ligada a ela de modo que o cliente precisa ter algum conhecimento de HTML, se eles queriam adicionar links e tal.

Opinem! Digam de vossa justiça.


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Procuras alguma coisa?

Utiliza o formulário abaixo para pesquisares no meu site:


Ainda não encontraste o que procuravas? Deixa um comentário num post ou contacta-me para que te possa ajudar!

Links de Interesse!

Links por mim recomendados...

Arquivos

Ordenado de forma cronológica...