DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

  • Alice Andrade
  • Rafael Zamana
Você está aqui: dgmike » Arquivos para wordpress

  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem é dgmike?

PHP+PagSeguro = Loja virtual de downloads

Posted in Programação, Tecnologia, Trabalho, Tutorial, jQuery, javascript, pagseguro, php, sql by DGmike
Apr 20 2009
TrackBack Address.

Voltamos a um assunto que interessa muitas pessoas: ganhar dinheiro. Talvez você não tenha nada físico para vender, mas você provavelmente tem talento (não, chocolate não) e sabe escrever um bom livro ou mesmo fazer ótimas fotografias[bb]. Você pode não saber, mas dá pra ganhar dinheiro com esse seu talento. Por que você não começa a vender arquivos para download? Sim! Por que não?! Comece a explorar o seu lado criativo e faça de seus dons uma forma de fazer lucros.

Crie uma loja virtual. Você pode começar com uma loja poderosa como o Magento ou mesmo uma coisa mais simples como OsCommerce, Joomla o mesmo WordPress. Mas, se você é programador como eu e prefere escrever seu próprio código ou mesmo entender como o sistema de sua loja (ou loja de seus clientes) funcionará, farei uma série de artigos para demonstrar como é simples criar uma loja virtual[bb] cujos produtos não são nada além de links para download.

Loja virtual com PagSeguro? Agora ficou fácil!

Loja virtual com PagSeguro? Agora ficou fácil!

Para você conseguir acompanhar este “curso” você deve entender um pouco dos seguintes assuntos:

  • PagSeguro: Vamos usar esta ferramenta de pagamento online para que nossos clientes se sintam seguros ao comprar em sua loja, então você já pode criar sua conta para podermos fazer a nossa loja virtual
  • PHP: Não precisa ser um expert, mas saber conceitos básicos de banco de dados e orientação a objetos já dão um gás
  • MySQL: Vamos trabalhar com a dobradinha mais conhecida da Web. Não usaremos o MySQL ao extremo mas iremos fazer um join ou outro
  • Ânimo: muitas vezes você irá errar. Podem ser erros básicos como não colocar um ponto-e-virgula/ no seu script, então não desanime e continue em frente

Ok, com os requisitos em mãos vamos por a mão na massa. A começar pela estruturação do nosso banco de dados.

O banco de dados

Vamos precisar basicamente de duas tabelas para organizar os produtos: categorias, produtos. Elas são descritas pelas seguintes queries:

CREATE TABLE `categoria` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `slug` VARCHAR(45) NOT NULL,
  `titulo` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`)
);
 
CREATE TABLE `produto` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `categoria_id` INTEGER UNSIGNED NOT NULL,
  `slug` VARCHAR(45) NOT NULL,
  `titulo` VARCHAR(100) NOT NULL,
  `descricao` TEXT NOT NULL,
  `valor` FLOAT NOT NULL,
  `url` VARCHAR(32) NOT NULL,
  `imagem` CHAR(32) NOT NULL,
  PRIMARY KEY (`id`)
);

Usaremos os campos “slug” tanto de categoria quanto de produto para a url na loja virtual ficar mais fácil de enteder, é o que chamamos de URLs amigáveis. Repare também que temos “categoria_id” na tabela de produto, é nela que vamos basear a nossa organização, um produto deve ter uma categoria e uma categoria pode ter diversos produtos. Os campos de url e imagem da tabela de produtos conterá o endereço do arquivo físico (o arquivo que o usuário fará o download) e a imagem que aparecerá na loja virtual respectivamente. Eles receberão uma criptografia para a segurança de sua loja, usarei md5 como criptografia.

Muito bem, não vamos nos prender a criação de usuários no nosso sistema. Por quê?! Porque você realmete não precisa disso na sua loja. Se um usuário compra de sua loja ele terá os seus dados no PagSeguro, afinal, ele vai pagar por lá não é mesmo? Então para quê ter dados repetidos no seu sistema? Não vamos fazer também um sistema de login, tenho em mente que você é um programador experto e já sabe fazer isso de olhos fechados. Vamos colocar um sistema de login no nosso sistema sim, claro, mas com um usuário único e uma senha única. Isso para não perdermos o foco da loja virtual.

A outra tabela que iremos precisar é a tabela de compra, nela teremos a compra de cada usuário, assim poderemos reenviar um e-mail ao usuário com os links para onde ele pode efetuar o download dos produtos que ele comprou. Esta tabela também serve para sabermos que o produto foi enviado ao cliente, digo, a data de envio do e-mail. Essa tabela é regida pelo seguinte SQL.

CREATE TABLE `compra` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(100),
  `produtos` TEXT NOT NULL,
  `transacao_id` VARCHAR(45),
  `status` VARCHAR(45) NOT NULL,
  `data_confirmacao` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
);

Veja que produtos é um campo do tipo do tipo TEXT, nele vamos gravar os ids contidos na tabela produto, separados por virgula. Os campos transacao_id, status e data_confirmacao serão completados ao receber o retorno do PagSeguro.

Com isso já temos as tabelas básicas necessárias para a criação de nossa loja virtual. Fique ligado para a próxima parte dessa série onde vamos montar uma loja virtual voltada para downloads.

  • Campo DataTransacao no retorno do PagSeguro
  • Palestra PagSeguro na Impacta
  • Verifique o retorno automático, sempre!
  • [PagSeguro] O campo status
  • O PagSeguro mudou a URL de retorno automático, e agora?

7 Comments »
Tagged as: criatividade, dinheiro, ecommerce, joomla, loja virtual, magento, mysql, oscommerce, pagamento, pagseguro, php, talento, visie, wordpress

WordPress fora da pasta raíz

Posted in Programação, Tecnologia, Tutorial, php, video, video-tutorial, wordpress by DGmike
Apr 14 2009
TrackBack Address.

Já teve vontade de xingar o WordPress[bb] por criar aquele monte de arquivos na home do seu site, dificultando assim a organização dos seus arquivos dentro do servidor. Bom, neste vídeo eu explico como fazer para colocar o WordPress do seu blog[bb] para rodar dentro de uma pasta e não na raíz do projeto[bb]. Assim você ter uma organização melhor dos seus arquivos.

No Comments yet »
Tagged as: blog, instalação, sistema, site, wordpress

Transformando o WordPress em um portal com multiplos usuários

Posted in Amigos, Cotidiano, Programação, Tecnologia, Trabalho, extensions, php, plugin, wordpress by DGmike
Jul 01 2008
TrackBack Address.

Agora sim!!! Seus problemas acabaram! Sempre quis ter um plugin para monitorar quais usuários podem escrever em uma determinada categoria fazendo do meu blog um blog comunitário com regras de usuários. Sempre procurei mas nunca achei realmente um cliente que precisava.

Não achava. A @s1mone do pixeladas aleatórias me pediu para fazer um plugin que irá acabar com essa deficiência que o wordpress tem de niveis de acesso de multi-usuários que podem postar em qualquer categoria. Qualquer categoria? Meu blog não é bagunça!

Agora, com o user-cats-manager (plus exterminator tabajara) posso convidar pessoas para postar em meu blog, mas elas só podem postar na categoria que eu quiser que postem, muito útil para
conteúdos jornalisticos onde um repórter irá fazer parte do grupo de tecnologia e só poderá postar em informática, mac, windows e linux. Ele também não pode criar uma nova categoia, afinal: Meu blog não é bagunça!

Só tem uma coisa: administradores podem postar em qualquer categoria já que eles tem acesso à administração do plugin. O lance é, administrador deve ter todas as responsabilidades do blog, então deixe apenas um admnistrador no comando, gerando novos usuários e definindo as regras. Para os outros, você pode usar um editor, que pode escrever e postar no blog, mas não tem funções administrativas. Ou mesmo um contribuidor, que pode escrever, mas sua matéria deve passar pela mão do editor para poder ser publicada.

Eu recomendo o roler manager para gerar novos usuários com diferentes permissões de acesso, lembrando que apenas o administrador tem acesso à administração do user-cats-manager.

O plugin encontra-se na versão ingles para agradar os gringos (a maior parte de quem usa a internet no mundo é gringo), mas está com todas as tags de tradução que o wordpress sugere __(). Logo será facil criar a tradução para brazuca, mas estou meio sem tempo para fazer isso agora, então se tiver alguém que saiba como e se habilitar a fazer a tradução, ficarei muito grato e coloco como contribuidor do plugin. :D

Se você quiser colaborar também mas não sabe programar ou não tem vontade ou tempo de aprender como funcionam os plugins do wordpress, teste o plugin e coloque sua sugestão nos comentários deste post. Todas as sugestões serão avaliadas com carinho e quem sabe implementadas. :)

11 Comments »
Tagged as: administração, administradores, blog, blog comunitário, brazuca, categoria, cliente, comunitário, contribuitor, deficiência, editor, escrever, informática, jornalístico, linux, múltiplos, múltiplos usuários, niveis, nivéis de acesso, permissões, permissões de acesso, plugin, portal, postar, problemas, regras, repórter, roler manager, tabajara, Tecnologia, tradução, user-cats-manager, usuário, usuários, wordpress

Get Image, meu plugin wordpress

Posted in Tecnologia, Tutorial, extensions, php by DGmike
Jun 18 2008
TrackBack Address.

Sabe aquele ótimo sistema de gerenciamento de conteúdos onde você pode gerenciar vários textos de forma simples e eficaz. Pois é, estou falando dele mesmo, o WordPress.

Quem já usa o wordpress e atualizou para a nova versão, viu que pode escrever um simples arquivo, denominado home.php na sua pasta de templates e isso será sua home page, onde você pode colocar vários the_loops com vários filtros, como apenas pertencentes à uma determinada categoria.

Recentemente, a @s1mone me pediu para escrever um plugin para trabalhar exatamente nesta área. O nome do plugin é get image e pode ser encontrado no repositório de plugins do wordpress.

Ele pega as imagens a primeira imagen que você fizer upload referente àquele post e te retorna a mesma num dos três formatos gerados pelo wordpress: thumbnail, médio e tamanho real.

Estes tamanhos são definidos na área de configuração do próprio wordpress, assim você pode usar até três tamanhos de arquivos diferentes para um post. Como um thumbnail do post. E este post não precisa ter a imagem escrita no próprio post, basta ser a primeira imagem da biblioteca do post.

Bem, para usar o plugin basta instalá-lo como qualquer outro e no seu template, use um dos seguintes comandos.

gi_fullsize ();
gi_medium ();
gi_thumbnail ();

7 Comments »
Tagged as: conteúdo, gerenciamento, gerenciar, home page, image, Imagem, medium, sistema, sull_size, templates, the_loop, thumbnail, wordpress

Validando datas em JavaScript

Posted in Programação, javascript by DGmike
Jan 18 2008
TrackBack Address.

Se você é como eu e gosta de ficar testando as validações até achar uma solução sem falhas, este post é para você! Há alguns dias eu escrevi como validar datas em JavaScript, sendo minha primeira versão conveniente e atraente. Mas no mesmo dia, vi que ela tinha um erro: tente entrar com o dia 30 de fevereiro. Sim, ele aceita, afinal o texto passa pela expressão regular. Se você analisar, não está sendo avaliada a data em si, mas o texto (string) conforme a formatação da data.

Logo, resolvi o problema (naquele mesmo dia, mas deixei para publicar depois) usando o objeto Date. O interessante é que quando criamos um objeto Date com uma data estranha como 32 (31+1) de Dezembro de 2008, e usamos os seus métodos (getYear() por exemplo), retornará a data corrigida, ou seja 1 de janeiro de 2009 em nosso exemplo.

Pensando nisso, resolvi reescrever a data que passou pelo teste e compará-la com a data reescrita corrigida pelo objeto, desta forma avaliamos a data em si e não só a string.

Este é o código novo, para ser usado após o código anterior.

// Ok, ok... passou pelo primeiro teste, vamos ver o teste forte...

if (dataAtual != '') {
  // Dividimos a data novamente...
  // assim podemos pegar cada elemento sem dor de cabeça
  x = dataAtual.split (divisor)
  // Criando um objeto data para validação
  confere = new Date (x[2],x[1]-1,x[0])
  // Reescrevendo a data em confere2 a partir da data passada
  confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
  confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
  confere2 += divisor + confere.getFullYear()
  // Conferindo... O interessante é que,
  // usando um objeto Date, o dia 31/11 é
  // reescrito para 01/12, invalidando a data
  if (confere2 != dataAtual) dataAtual = ''
}

E este é o código final, sem comentários:

function validaData (e) {
  var divisor = '/'
  var data = e.value
  var dataAtual = ''

  if (data.match (/^(0[1-9]|[12][0-9]|3[01]).?(0[1-9]|1[012]).?([12][0-9]{3}|[0-9]{2})$/)) {
    data = data.replace (/[^0-9]/g, '')
    dataAtual = data.substr(0,2)+divisor+data.substr(2,2)+divisor
    if ( data.substr (4).length == 4 ) dataAtual += data.substr (4)
    else dataAtual += (data.substr (4) > 30 ? '19' : '20') + data.substr (4)
  }
  if (dataAtual != '') {
    x = dataAtual.split (divisor)
    confere = new Date (x[2],x[1]-1,x[0])
    confere2 = (confere.getDate () < 10 ? '0' : '') + confere.getDate ()
    confere2 += divisor + ((confere.getMonth()+1) < 10 ? '0' : '') + (confere.getMonth()+1)
    confere2 += divisor + confere.getFullYear()
    if (confere2 != dataAtual) dataAtual = ''
  }
  e.value = dataAtual
}

O resultado funcionando está disponível para estudos no meu outro servidor, já que o wordpress não me permite mexer nos arquivos ou inserir JavaScript. (risos)

No Comments yet »
Tagged as: corrigida, data, Date Object, estudos, expressão regular, formatação, formatação da data, getDate, getFullYear, getMonth, getYear, javascript, new Date, objeto Date, problema, resultado funcionando, sem falhas, servidor, solução, string, validações, validar, validar datas, wordpress

Categorias

  • Amigos  (16)
  • cases  (4)
  • Cotidiano  (73)
  • CSS  (20)
  • Design  (2)
  • Dia-a-dia  (33)
  • Diversão  (18)
  • eventos  (10)
  • extensions  (11)
  • flash  (4)
  • Games  (1)
  • html  (7)
  • icephp  (4)
  • Ilustração  (6)
  • Imagem  (8)
  • Inspiração  (5)
  • javascript  (36)
    • jQuery  (7)
    • yui  (2)
  • Não categorizado  (26)
  • Navegadores  (19)
    • Chrome  (6)
    • Firefox  (18)
    • Internet Explorer  (6)
  • pagseguro  (12)
  • php  (43)
    • PHP Conference  (3)
  • plugin  (3)
  • Programação  (46)
  • python  (5)
  • Semântica  (16)
  • sql  (9)
  • tableless  (18)
  • Tecnologia  (48)
  • Trabalho  (28)
  • Tutorial  (25)
  • Vetorial  (5)
  • video  (8)
  • video-tutorial  (5)
  • Windows  (4)
  • wordpress  (2)
  • xHTML  (23)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!
  • Até mais e obrigado pela salada
  • Api de teste do meadiciona.com

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql online opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Tutorial twitter visie web wordpress

Conteúdo

  • Artigos
    • JavaScript (parte 1)
  • Códigos prontos
    • Bancos, bancos e mais bancos…
    • Classe sqlsimples e sql – PHP
    • PHP: Função __auloload()
  • Guia Rápido jQuery
  • PagSeguro
  • Quem é dgmike?
PagSeguro Powered by WordPress | “Blend” from Spectacu.la WP Themes Club