Como capturar campos de formulários dinâmicos em PHP

Ontem (30/01) eu estava num dilêma: tenho um grande formulário que é gerado dinamicamente, como vou capturá-lo?

Em formulários fixos, a coisa é fácil porque é só especificar em uma variável o nome do campo, por exemplo:

$campo = $_POST['campo'];

Mas, quando a coisa é gerada dinamicamente, os nomes também são gerados dinamicamente, então como capturá-los?

Eis que pedindo a ajuda do pessoal do grupo PHPFORTALEZA, consegui a solução.

Duas pessoas me responderam com duas dicas diferentes que simplesmente: CASARAM com o que eu precisava, então bastou unir o jôio, com o trigo.

Primeira dica:

Se seu formulário for gerado dinâmicamente, crie os nomes dos campos em forma de arrays, exemplo:

<input type="textfield" name="campo[nome]">
<input type="textfield" name="campo[idade]">

Agora crie o arquivo que para onde o seu formulário será submetido:

$dados = $_POST['campo']; // captura todos os campos em um array

Pronto, você já tem todos os dados em apenas um array, quer testar?

echo $dados['nome'];
echo $dados['idade'];

Ou que tal fazer um foreach e ler todos os valores de todos os campos de uma vez?

$keys = array_keys($dados); // retorna as chaves do array $dados no array $keys
foreach($keys as $k) {
echo $dados[$k];
}

Como se pode ver, de uma maneira simples, você resolve um "problemão". Muito obrigado a aos membros do PHPFORTALEZA.

Supostas primeiras telas do Windows 7

Começaram a aparecer as primeiras telas (é o que se pensa ser) da nova versão do sistema operacional das janelinhas (legal o trocadilho).

Aparentemente o sistema ainda está em sua versão Alpha, a data de lançamento ainda não é prevista, embora alguns pensem que o mesmo será lançado já no ano que vem (duvido muito).

Tela "about".

Abaixo segue um vídeo que mostra alguns recursos novos como o redimensionamento dos campos 'endereço' e de busca do Windows Explorer e uma opção de "fixar" ítens no Menu Iniciar.



No mais, é esperar para ver e crer, mas não sou tão "otimista" quanto muitos que esperam o Windows 7 para o ano que vem.

Fonte: Info Online

Wine com suporte a Photoshop CS/CS2.

É isso mesmo Photoshopeiros, agora vocês que não largavam o Windows por conta do Photoshop, não terão mais desculpas, segundo o que informa no site do Wine, o mesmo agora suporta o Photoshop CS/CS2. Eu ainda não testei, mas já tenho relatos de sucesso na tentativa de rodar o Photoshop CS/CS2 com esta nova versão do Wine.

Pra quem não sabe, o Wine é uma camada de abstração, que suporta aplicações Windows em outras plataformas. Simplificando: Você é usuário de Linux, ou qualquer um dos Sistemas Operacionais suportados pelo Wine, mas que usar uma aplicação do Windows, então o Wine roda a aplicação sem emular nem virtualizar.

Fonte: Winehq

Ports, a mão na roda do FreeBSD.


Muito se fala que o mundo UNIX é complicado. E é, para os usuários acostumados ao "conforto" do Windows.

Mas mesmo no "complicado" mundo dos UNICES, existem suas facilidades que meio que contrastam com a realidade da estrutura do sistema e do nível de entendimento que você deve ter sobre o mesmo. No mundo Linux, temos o apt-get (Debian-like), yum (Red-Hat-like), YaST (SuSE), installpkg (Slackware, ok, não é tão fácil assim), entre outros.


No FreeBSD - um sistema conhecido pelo seu alto desempenho, segurança, estabilidade e também por sua "complexidade" - temos o chamado Ports Collection, ou simplesmente, Ports.

Se você já se familiarizou com alguns gerenciadores de pacotes do Linux (eu amo o apt-get), irá "pegar a manha" no FreeBSD também. Os chamados "Ports" do FreeBSD, estão localizados no diretório "/usr/ports".

Se você digitar um "ls" irá ver que os mesmos estão separados por categoria, é muita coisa, MUITA mesmo que ficaria um pouco complicado olhar de uma em uma até achar o que você quer; para isso digite: make search key="palavra-chave".

Opa, make?!

Sim.

Alguém teve a idéia brilhante de criar uma estrutura de pacotes baseada em Makefiles, ah, e diferente de apt-get, yum, etc.. os pacotes que são baixados, são código-fonte e não em formato binário. Mas não se assuste, o Ports irá resolver todas as dependências e irá compilar tudo direitinho pra você.

Na prática:

Vamos utilizar o Ports na prática, para instalar a versão corrente do GNOME, que atualmente é a 2.20 (data em que este artigo foi escrito).

Primeiro, vamos ir para a pasta /usr/ports:

#cd /usr/ports

Já que existe a categoria 'x11', pressupomos que o GNOME esteja lá:

#cd x11/gnome2

Se algo der errado, digite:

#pkg_add -r gnome2

E vá tomar um chá, conversar com os amigos, namorar, etc.. porque isso demora pacas (pelomenos no caso do gnome).

Se a mudança de diretório para 'x11/gnome2' ocorreu sem problemas, vamos iniciar:

#make && make install

Deverá aparecer uma caixa de diálogo com algumas opções de compilação, etc. Escolha as que mais lhe agradam e de "OK". (Obs.: quantos mais ítens "extras" forem escolhidos, obviamente que a copilação irá durar mais).

E agora: vai demorar... hehe!

Recomendo que você tenha uma boa conexão banda-larga e um bom computador, pois além de baixar todo o GNOME e suas dependências em código fonte, terá de compilar um a um. Mas não se assuste, o Ports fará isso tudo automaticamente pra você.

Desvantagens: Demora muito tempo e corre risco de algo dar errado.

Vantagens: Você personaliza a seu gosto, otimiza para seu processador e conseqüentemente os programas compilados terão maior performace.

KDE4: NO WINDOWS.

Não só no Windows, mas também no Mac OS X.
Agora o mito ou lenda faz-se real, o KDE4 já é multi-plataforma.

Cuidado aventureiros de plantão, o sistema está bastante instável e nem tudo ainda está totalmente portado.

Configurar no Mac: http://techbase.kde.org/index.php?title=Projects/KDE_on_Mac_OS_X#Download%20Torrent%20Files

Configurar no Windows: http://techbase.kde.org/Projects/KDE_on_Windows/Installation

Mais informações em: http://arstechnica.com/news.ars/post/20080123-kde-goes-cross-platform-with-windows-mac-os-x-support.html

Counter-Strike: A PROIBIÇÃO.

Senhoras e senhores, o Counter-Strike está proibido no Brasil. Mas a questão aqui, não é se está proibido ou não, é se a proibição está ajudando nossa sociedade.

Não jogo Counter-Strike (CS para os mais íntimos), mas não concordo com a sua proibição. Os motivos que nosso juís alega, é nobre, que o jogo é violento e reproduz cenas de violência nas favelas brasileiras. OK.

Primeiro de tudo, esse mapa, não é desenvolvido pela empresa que é a detentora dos direitos do CS, mas foi produzido por brasileiros, então teria que proibir o mapa e não o jogo em questão.

Agora vamos a alguns tópicos:

  • Quais os benefícios da proibição deste jogo? NENHUM.
  • A proibição está beneficiando a educação de nossos jovens/adolescentes? NÃO.
  • A proibição irá diminuir a violência no Brasil? NÃO.
Acho que os senhores juíses, antes de sentar a bunda na sua poltrona feita de penas de ganço e danar-se a escrever asneiras, deveria ver o que acontece no nosso país e escrever algo que realmente tenha valia e seja útil.

  • Por que não proíbem a exibição de senas de sexo nas novelas da Globo?
  • Por que não proíbem a exibição de filmes violentos?
  • Por que não proíbem a proibição de asneiras como o BBB? (Não resisti).
Se formos analizar, o Brasil é um dos países que tem mais leis no mundo, leis muito bonitas - no papel.

Quais atitudes fariam o nosso país melhor?

  • Diminuir imposto pra pobre e aumentar pros ricos;
  • Reforma agrária justa;
  • Distribuição de renda;
  • Diminuição geral dos impostos, que são os sanguessugas de nossa sociedade;
  • Melhorar o ensino público;
  • Melhorar a segurança (que está ligada a qualidade de eduação);
  • Aprender a fazer coisas que funcionem ao invés de baixar liminares apenas para aparecer.
É isso.

Crie sua própria distribuição de Linux

Para os intusiastas e aventureiros de plantão, segue o link: http://lwn.net/Articles/266318/,
é interessante embora eu não queira me aventurar nisso, boa sorte para quem for, mas pelo amor de deus, não faça algo igual a o LinuxFx.

MacBook Air: Tenho medo disso.

Me desculpem MacManíacos, mas eu não compraria um trosso desses, nem a pau juvenal.
O aparelho é tão fino, que dar medo até de pegar, imagina se ele sofrer um pequeno tombo, sabe como é, tem pessoas que são um pouco desastradas (eu). E o preço também não compensa, caparam o bixo todo em nome do design, pra ficar "cool" como todos os produtos de grife da Apple. Se tudo isso, fosse um notebook comum, aí sim seria "o bixo".

Ah, outra coisa, e a bateria? Como troca a bateria de um trosso desses aí? Quando ela não estiver mais durando, terei de comprar outro? Não não.. definitivamente não quero um desses. Mas que é bonito é, e dá medo também, veja o vídeo com seus próprios olhos.




Terminanda a sessão delícia, é hora de terminar este artigo, bye.

O cúmulo de frescurite agúda.

Eu estava foleando, ou melhor, navegando nas páginas do G1 quando me deparei com esse artigo aqui.

Ok, não olhe o link, olhe apenas a imagem, a explicação vem depois (você não irá precisar lê-la, mas caso seu Q.I. seja abaixo de 2, talvez sim).

Agora me diga, isso é ou não é frescurite? Ter um iPhone é para poucos que tem dinheiro para tal ou para lisos frescos que querem estar "cool", ou até mesmos os geeks mais riquinhos, mas ter um iPhone e comprar umas luvinhas de dedo para usá-lo sem deixar marcas, já é demais. (Essa explicação foi para pessoas com Q.I. abaixo de 2).

Fonte: G1

Abstração de Banco de Dados em PHP com ADODB

Abstração de banco de dados é mais útil do que se possa imaginar. Imagine você, fez um programa em PHP usando o banco MySQL, mas aí derrepente chega seu patrão e diz: "olha, compramos uma licença do Oracle e queremos migrar a base do nosso programa para esse banco".


Pronto, isso provavelmente irá acabar com seus próximos dias de sono.


O PHP apesar de ser uma linguagem maravilhosa, ela não tem uma boa escalabilidade na questão de banco de dados, para cada tipo de banco de dados, as funções, parametros, tudo muda! Então eis que surge o ADODB.


Mas o que é ADODB? É uma classe PHP, liberada sob licença livre que permite que você se "despreocupe" com o banco de dados que você está usando.


Vamos ao exemplo prático:


Para iniciar uma conexão ao banco de dados usando o ADODB vamos fazer o seguinte:


require("adodb/adodb.inc.php"); // lógicamente precisamos desse include para funcionar..
$db = ADONewConnection($mysql_oracle_oque_voce_quiser); // aqui instanciamos a classe para o objeto $db.
$result = $dbConnect($host_do_banco, $usuario, $senha, $nomedobanco);
// ok, agora ja temos uma conexão iniciada ;-)

$mysql_oracle_oque_voce_quiser = Variável que irá especificar para o ADODB, que tipo de banco de dados você pretende usar.


Essa classe tem suporte a vários bancos você pode conferir aqui a lista dos bancos suportados.
Ok, mas como fazer a consulta? Vamos lá:

Já que instanciamos no objeto $db, deveremos usá-lo:

$result = $obj->Execute("SELECT * FROM tabela WHERE campo = 'ALGUMACOISA'");

Certo, mas como eu recupero os resultados do SELECT?

Simples, tá vendo esse tal de $result aí? Ele irá capturar tudo o que for retornado pela consulta:


echo $result->fields['nome_do_campo']; // você poderá retornar tanto pelo nome do campo, quanto pela posição numérica que ele representa no banco ex: 0, 1, 2...


E se eu quiser fazer um loop? Simples:


while (!$result->EOF) {
echo $result->fields['nome_do_campo'];
$result->MoveNext(); // isso moverá o cursor para o próximo registro
}


Viu como é simples? É, leva um tempo pra aprender, mas esse tempo irá ser recompensado quando você precisar migrar de um banco para o outro. Por quê? Basta alterar a variável que especifica o tipo de banco.


Por exemplo, quero usar 'Oracle': $db = ADONewConnection("oci8");

Quero usar MySQL: $db = ADONewConnection("mysql");

E assim vai ;-)

Site do ADODB:
http://adodb.sf.net

Feliz Ano Novo (err...)

Mesmo que atrasado, pois são 10/1 :P
Eu estava sem postar aqui por falta de tempo, mas agora retornarei com novos posts.