Post com a tag Programação
Cakephp – Inserindo mais de um registro no banco de dados
10Hoje me deparei com um probleminha ao precisar inserir mais de um registro no banco de uma vez.
A solução que eu procurava era para ter o seguinte efeito:
[sourcecode language='sql']INSERT INTO tabela (titulo,created) VALUES (’11111′, ’2009-09-28 17:05:03′);
INSERT INTO tabela (titulo,created) VALUES (’22222′, ’2009-09-28 17:05:03′);
INSERT INTO tabela (titulo,created) VALUES (’33333′, ’2009-09-28 17:05:03′);
INSERT INTO tabela (titulo,created) VALUES (’44444′, ’2009-09-28 17:05:03′);
INSERT INTO tabela (titulo,created) VALUES (’55555′, ’2009-09-28 17:05:03′);
[/sourcecode]
Ou seja, eu precisava inserir uma série de registros de uma vez, sendo que no cakephp, se você escrever $this->Model->save($this->data) para um array com todos os campos, ele salva somente o ultimo registro, resultando em uma única inserção.
Para se ter sucesso nesta situação, seu array deve estar configurado conforme abaixo:
Não precisa estar configurado necessariamente assim, mas a meu ver, é a mais adequada.
[sourcecode language='HTML']array(
[Model] => array(
[0] => array(
[titulo] => ’111111′
[texto] => ‘xxxxxxx’
)
[2] => array(
[titulo] => ’222222′
[texto] => ‘xxxxxxx’
)
[3] => array(
[titulo] => ’333333′
[texto] => ‘xxxxxxx’
)
)
)[/sourcecode]
Em seu controller, você vai seguir a seguinte lógica:
[sourcecode language='php']foreach($this->data['Model'] as $item){
$this->Model->save($item);
$this->Model->id = null;
}[/sourcecode]
Explicando:
Linha 1: Passamos um foreach no array $this->data['Model']. Usamos este array para cair direto no array útil para este recurso que é o array Model.
Linha 2: Executamos o SAVE no model, normalmente. A diferença é que estaremos pegando o resultado do foreach, ou seja, estaremos pegando um bloco por vez do array e salvando.
Linha 3: É aqui que resolvemos o problema. Ao fim de cada inserção, devemos anular o ID. Se você não anular este ID, o Cakephp irá salvar somente o último insert, isso porque ele vai atribuindo o ID constantemente e no final, ele pega somente o id que está na variavel que é o último.
Essa dica não é daquelas que se acha facilmente na documentação do Cakephp, tão pouco no google, então, está aí a dica. Qualquer dúvida ou outras soluções, pode postar aqui.
Atualização: 29/09/09
Segue a dica do Richard, que é usar o mesmo array mostrado nest post e no save, colocar $this->Model->saveAll($data). Isso já resolve o problema e dispensa o uso do foreach.
Consulte o manual: http://book.cakephp.org/pt/view/75/Saving-Your-Data
Divs com cantos aredondados
2Descobri uma maneira simples de tornar os cantos das divs arredondados. Com este plugin para o Jquery você consegue isso facilmente, veja no link abaixo.
http://www.atblabs.com/jquery.corners.html
Abra o codigo fonte, pegue o JS incluido e siga as instruções do site. Muito simples.
Programador ninja. Ninja?
1A filosofia de vida dos ninjas era chamada de Ninpō (Ninjutsu), envolvendo a adaptação, a liberdade e a perseverança férrea como princípios basilares.(Wikipédia)
E então um amigo recebeu o seguinte email:
“Procuramos um desenvolvedor ninja (experiente e versátil) voltado para o desenvolvimento de aplicativos desktop para a plataforma windows. A aplicação é desenvolvida em Powerbuilder 10 e 11, mas encorajamos o contato de ninjas que dominem outras tecnologias de desenvolvimento de aplicações desktop. Acreditamos que um verdadeiro ninja poderá estudar a plataforma Powerbuilder e dominá-la com velocidade e maestria “
Legal, powerbuilder… hã?
Um programador ninja não é conhecido como um programador php, nem programador Java, é simplesmente um programador ninja, ou um cara que codifica, maneja códigos.
Um programador ninja se adapta ao seu ambiente, portanto se um ninja trabalha com php e depois vai para uma empresa que requer Java ee, o ninja, versátil e experiente, aprende com seu novo ambiente e se torna brilhante naquilo.
É uma tendência se formando, onde o programador quebra barreiras, cria liberdade profissional e expande sua experiência técnica.
Então percebemos que mão precisamos ficar presos à uma ferramenta ou linguagem de programação. Hoje, empresas como Google não procuram programadores php e sim programadores ninjas brilhantes.
Algoritmo de um gerador de CPF
6Para exemplificar o processo vamos gerar um CPF válido, calculando os dígitos verificadores de um número hipotético, 111.444.777-XX.
Calculando o Primeiro Dígito Verificador
O primeiro dígito verificador do CPF é calculado utilizando-se o seguinte algoritmo.
1) Distribua os 9 primeiros dígitos em um quadro colocando os pesos 10, 9, 8, 7, 6, 5, 4, 3, 2 abaixo da esquerda para a direita, conforme representação abaixo:
|
1 |
1 |
1 |
4 |
4 |
4 |
7 |
7 |
7 |
|
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
2) Multiplique os valores de cada coluna:
|
1 |
1 |
1 |
4 |
4 |
4 |
7 |
7 |
7 |
|
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
|
10 |
9 |
8 |
28 |
24 |
20 |
28 |
21 |
14 |
3) Calcule o somatório dos resultados (10+9+…+21+14) = 162
4) O resultado obtido (162) será divido por 11. Considere como quociente apenas o valor inteiro, o resto da divisão será responsável pelo cálculo do primeiro dígito verificador.
Vamos acompanhar: 162 dividido por 11 obtemos 14 como quociente e 8 como resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro dígito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido de 11, que é nosso caso. Sendo assim nosso dígito verificador é 11-8, ou seja, 3 (três). Já temos portanto parte do CPF, confira: 111.444.777-3X.
Calculando o Segundo Dígito Verificador
1) Para o cálculo do segundo dígito será usado o primeiro dígito verificador já calculado. Montaremos uma tabela semelhante a anterior só que desta vez usaremos na segunda linha os valores 11,10,9,8,7,6,5,4,3,2 já que estamos incorporando mais um algarismo para esse cálculo. Veja:
|
1 |
1 |
1 |
4 |
4 |
4 |
7 |
7 |
7 |
3 |
|
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
2) Na próxima etapa faremos como na situação do cálculo do primeiro dígito verificador, multiplicaremos os valores de cada coluna e efetuaremos o somatório dos resultados obtidos: (11+10+…+21+6) = 204.
|
1 |
1 |
1 |
4 |
4 |
4 |
7 |
7 |
7 |
3 |
|
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
|
11 |
10 |
9 |
32 |
28 |
24 |
35 |
28 |
21 |
6 |
3) Realizamos novamente o cálculo do módulo 11. Dividimos o total do somatório por 11 e consideramos o resto da divisão.
Vamos acompanhar: 204 dividido por 11 obtemos 18 como quociente e 6 como resto da divisão.
4) Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, caso contrário (como no nosso caso) é necessário subtrair o valor obtido de 11 para se obter o dígito verificador. Logo, 11-6= 5, que é o nosso segundo dígito verificador.
Neste caso chegamos ao final dos cálculos e descobrimos que os dígitos verificadores do nosso CPF hipotético são os números 3 e 5, portanto o CPF ficaria assim: 111.444.777-35.
O gerador de CPF apresentado neste site funciona com base neste algoritmo. A rotina de gerar CPF ‘s válidos, inicialmente sorteia 9 números. Calcula-se o 1o dígito verificador e integra-se o mesmo aos 9 números iniciais. Prossegue-se com o cálculo do segundo dígito verificador como ensinado. Ao final, o criador de CPF emite um número de CPF válido.
Esta explicação pertence ao site Gerador de CPF, onde por ele mesmo você pode gerar CPF para estudo.
Eu vou passar esse algoritmo para a linguagem PHP e posto em seguida aqui no blog. Acredito ser útil para muita gente.
Até a próxima.
Livro completo de SHELL
0Caro amigos programadores Shell, tenho em meus favoritos já a um bom tempo este link disponibilizando um livro completo de Shell.
Achei uma iniciativa magnífica e quero passar para quem ainda não viu.
Ah! O livro é livre!
Divirtam-se: http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo001
Curso de Web 001 – Arrumando a mesa do escritório
7Hoje está começando um curso onde vou mostrar a vocês como se tornar um desenvolvedor web.
O curso é gratuito, mas aceito doações.
Você pode deve comentar cada post (Aula), dando sugestões e até mesmo críticas.Vou começar do zero, indo do básico para o avançado.
Pretendo posteriormente fazer VideoAulas para facilitar o entendimento.
Para tudo ficar mais claro, vamos começar do inicio. Sim! Do inicio.
Só para você ir se preparando, as coisas não entram na sua cabeça do nada, é preciso estudar, e se quiser ser muito bom tem que estudar muito.
Mas é fácil, desde que você se dedique e principalmente goste de web. Pra falar a verdade é indispensável que você ame web.
Você não a ama?
Tudo bem, ela vai te seduzir logo.
Vamos começar a falar como gente grande, nada de bloco de notas. Neste post vamos falar dos softwares usado por profissionais e que são necessários para trabalhar com web.
Necessário na verdade não é, mas eles lhe dão uma assistência que facilita muito e te dá maior performance no desenvolvimento de um projeto.
Na web podemos trabalhar com programação, design, banco de dados, diagramação de informação, Modelação 3D, multimídia e outras coisas mais.
Vou falar sobre os melhores softwares para se utilizar na programação e no desenvolvimento visual para web.
Programação
Mundialmente usado este software da Adobe, te possibilita trabalhar com diversas linguagens de programação, te dá auxílio na produção de um projeto e lhe fornece ferramentas úteis para o desenvolvimento.
Zend Development Environment
Muito conhecido por profissionais de Internet. Usado por programadores avançados e permite uma ótima produtividade para programadores em PHP.
Design
Photoshop
O melhor editor de imagens do mundo, da Adobe, usado por profissionais de altíssima qualidade e por crianças de 10 anos para fazer montagens simples – É verdade!
Fireworks
Um software simples, também da Adobe, que supri a grande maioria das necessidades quando se está desenvolvendo para web.
Em meu trabalho, eu uso o Fireworks e quando preciso fazer algo mais complexo uso o Photoshop.
Todos os softwares acima são pagos, mas pode os encontrar no www.superdownloads.com.br em versão Trial, onde você poderá usar o software gratuitamente por um mês.
Na próxima aula já vamos começar programando bem leve com XHTML, vamos estudar Semântica, conhecer o CSS e bater um papo com o Javascript.
Saindo na frente!!
Para você que está com sede de aprender e quer se adiantar, leia os textos dos links abaixo. Siga esta ordem.
Aprendendo JAVA com o BOPE
1Encontrei isso na web, muito bom!
/**
* O Bope foi criado para atuar quando a policia perde o controle
* E no rio de janeiro isso acontece com bastante frequencia
*/
class Bope{
private String nome;
private int qtdeVitimas = 1; // ja começa bem!
public Bope(String nome){
this.nome = nome;
}
// sobrecarga do método ondeTaOBaiano
public void ondeTaOBaiano(Estudante e){
e.sabeVoarEstudante();
}
public void ondeTaOBaiano(Traficante t){
t.levaSacoNaCabeca();
}
// exemplo de método final!
public final Doze encontreiOBaiano(Baiano b){
return b.naCaraNaoQueEhPraNaoEstragarVelorio();
}
}
public class Treinamento{
public void missao(CapitaoNascimento cn){
cn.sentaOdedoNessaPorra();
} // Sugestão do leitor Luciano Silva
public static void main(String [] xxx){
//Apresento o capitão nascimento
Bope capitao = new Bope(”01″); //Capitao Nascimento
try{
//de cada 100 policiais que fazem o curso do Bope,
//so se formam 5, e eu, quando me formei parceiro,
//eramos apenas 3.
Turma.tentaFazerCursoBopeCom(capitao);
while(aluno.count >= 3){
aluno.pedePraSair();
if(aluno istanceof Cafetao){
capitao.say(”Pede pra sair!”);
capitao.say(”Seu Lugar Eh Com Puta!”);
}
if(aluno istanceof PorraLoka){
capitao.say(”Tira essa farda preta!”);
capitao.say(”Voce nao eh cavera. voce eh MULEQUE!”);
}
if( aluno.isXerife() ) aluno.desiste();
}
} catch (PolicialCorruptoEncontrado pce){
} catch (PolicialFracoEncontrado pfe){
} catch (PolicialSemABandoleiraNessaAlturadoCampeonato e) {
}
}
}
SEUS FANFARRÕES!
VCS TEM 10 SEGUNDOS PARA COMPLETAR ESSE CÓDIGO!
- O zero-dois NÃO está escrevendo!
- SEU zero-dois, porque o senhor não escreveu nenhuma linha?
- A-a minha IDE não terminou de carregar, senhor…
- Agora a sua IDE ja carregou, seu zero-dois?
- S-sim senhor…
- Então, seu zero-dois, termine o seu programa, senão todos os seus colegas terão que usar o EDIT do MS-DOS até o fim do curso E A CULPA EH DO ZERO-DOIS!
HOMEM DE PRETO QUAL É A SUA MISSÃO?
É APRENDER JAVA SEM PRECISAR DE CERTIFICAÇÃO!
HOMEM DE PRETO O QUE É QUE VC FAZ?
FAÇO CODIGO FONTE QUE ASSUSTA O SATANÁS!
Estratégia, do inglês, Strategy…
- Senhor, o zero-cinco está dormindo…
Texto do site: http://jf.eti.br/aprendendo-java-com-o-bope/
Comentários recentes