# Aplicativos em PHP/Editores e IDEs para PHP, CSS, JavaScript e HTML/Dreamweaver
## Dreamweaver

IDE muito popular entre os designers e com suporte ao PHP, inclusive também gera código. Site oficial
Versão comercial para Windows e MAC.
Dreamweaver 8 is the industry-leading web development tool, enabling users to efficiently design, develop and maintain standards-based websites and web applications.

## Gerando Código PHP com MySQL Através do Dreamweaver

Com o Dreamweaver iremos gerar praticamente todo o código de uma aplicação, a conexão, inclusão, consultas, autenticação de usuários, etc. Criaremos uma aplicação web para cadastro e manutenção de clientes de uma empresa. Para simplificar criaremos apenas as telas referentes aos clientes, supondo que os administradores são mantidos através de um gerenciador do banco.

### 1) CRIAÇÃO DO BANCO cad_clientes NO MYSQL

Observações Importantes:
* Observe que a tabela administrador tem todas as variáveis (nomes de tabela e campos) cercada por delimitadores e que estes delimitadores são sinais de crase e não apóstrofos. Veja que o uso das crases é opcional, pois a tabela clientes não os utiliza e ambas as sintaxes são aceitas.
* Para que tabelas em MySQL tenham suporte a relacionamentos, elas obrigatoriamente devem ser do tipo InnoDB (ENGINE=InnoDB ou TYPE=INNODB)
* Para dar suporte a acentuação usamos "DEFAULT CHARSET=latin1"
Comandos úteis do MySQL:
SHOW TABLES - Exibe tabelas do banco atual
SHOW DATABASES - exibe todos os bancos
DESCRIBE nometabela - mostra estrutura da tabela

### 2) DEFINIR UM SITE NO DW

Ao definir um site sempre prefira que as pastas locais e remotas sejam a mesma, para o caso de estar trabalhando localmente (apache e php na sua máquina). Ao final enviar para o servidor por FTP.

### 3) DEFINIR UM OBJETO CONEXAO

Ao definir uma conexão com o banco MySQL, teremos um objeto conexão com um nome que batizamos e este objeto estará disponível por todo o site.
* Tecle Ctrl+N e Selecione General - Dynamic page - PHP e Create
* Tecle Ctrl+S para salvar (index.php)
* Clique no painel Application - Databases (à direita).
Então clique no sinal de + (mais) e em MySQL Connection
Então preencha assim:
Veja que no arquivo atual estando no modo Design não percebemos nada do objeto conexão criado. Mas o DW cria algumas sub-pastas na pasta do nosso site atual, contendo os códigos que irá utilizar em todo o aplicativo. Na pasta Connection está o arquivo conexao.php, que contém o seguinte código:
Este código é um código simples de uma conexão em PHP com MySQL, mas quando já tiver dado os primeiros passos em PHP e também no PHP voltado ao objeto e quiser ir mais adiante estude o código do arquivo mysql.php da pasta _mmServerScripts.

### 4) DEFINIR O ARQUIVO DE AUTENTICAÇÃO DO USUÁRIO

Este código exige que criemos um formulário de login com os campos login e senha. Ele redireciona o usuário devidamente autenticado para um arquivo (menu.php no nosso caso) e o não autenticado para outro (index.php).
* Agora usaremos o assistente do DW para gerar o código de autenticação:
* Selecione a barra de ferramentas Application (acima)
* Clique na seta ao lado do botão User authentication (último da barra)
* Selecione "Log in user"
Então preencha o assistente como abaixo:
* Validate using connection - Selecione "conexão"
* Table - administrador
* Username column - login
* Password column - senha
* If login suceeds, go to - menu.php
* If login fails, go to - index.php e marque também Go to previous URL
* Restrict access based on - Username and password. A opção abaixo é indicada para quando temos diversos administradores com diversos níveis de acesso: um acessa tudo, outro acessa somente parte, ...
Com isto também não vemos nada no modo Design, mas ao observar o modo Code vemos o código inserido pelo DW:
Um código organizado e com muita coisa para se aprender.

### 5) CRIAÇÃO DO MENU DE ACESSO

Este arquivo não terá código do DW, apenas será o menu de acesso às demais seções do site e conterá um form com uma caixa de texto (login) e cinco botões como abaixo:
Consultar Um, Consultar Todos, Cadastrar, Atualizar e Excluir. Os botões darão acesso às demais seções do site.
* O form terá o método POST, action ="" e cada botão terá código JS como abaixo ao final da tag <input ..> respoinsável pelo redirecionamento para a página solicitada:
TESTE DO SITE
Já podemos testar o site criado até o momento.
Abra no DW a página index.php e tecle F12 para abrir no site web.
Entre com login e senha que cadastrou no banco e clique em Acessar ou apenas tecle Enter. Veja que se realmente entrou com dados que estão no banco, tabela administrador, você será redirecionado para menu.php, caso contrário para index.php.

### 6) CRIAÇÃO DA SEÇÃO DE CONSULTA (UM ÚNICO CLIENTE)

- Criar um novo arquivo (consultar1.php, que servirá para consultar um único usuário).
No modo Design, centralizado digite no Format Heading2 "Consultar um Clientes" então tecle Enter.
CRIAÇÃO DE UMOBJETO RECORDSET
* À direita clique no painel Application – Bindings
* Clique no sinal de mais (+) e em Recordset (Query) para inserir um objeto Consulta:
Name: rsConsCli1
Connection: conexao (selecionar ou criar em Define)
Table: cliente (selecionar)
Columns: All
Filter: login e = Form Variable – login (Para o caso de método GET usar URL variable)
Sort: nome Ascending
Ao clicar em em Test não receberá retorno satisfatório, pois a variável vinda do form está vazia. Clique em OK para concluir.
Com isso não aconteceu nada visível no nosso arquivo mas temos agora um objeto contendo o código de uma consulta que poderá ser utilizada somente neste arquivo.
Após definir um Recordset ele fica disponível em Application – Bindings. Mesmo que não estejamos vendo nada de novo no modo Design, no modo Code podemos ver todo o seu código inserido pelo DW. Como também podemos inserir qualquer um dos campos do Recordset no nosso documento, basta clicar em seu sinal de + à direita e ele mostra todos os seus campos. Então clique em qualquer campo e arraste para o documento. Então o DW insere o código PHP correspondente a introdução do campo já referenciado pelo Recordeset.
Veja o código do Recordset inserido no arquivo atual:
INSERIR UMA DYNAMIC TABLE
Agora que temos o nosso recordset vamos inserir o resultado da consulta iniciada quando o usuário clica no botão Consulta Um.
Clique na seta ao lado do botão Dynamic Date e clique em Dynamic Table:
Então preencha os dados do assistente:
Recordset – selecione o nosso REcordset criado rsConCli1
Show - 10 registros por vez
Border – 1 (para que a tabela exiba bordas)
Então teremos algo como:

### 7) CRIAÇÃO DA SEÇÃO DE CONSULTA (TODOS OS CLIENTES)

Vamos agora criar o arquivo consultart.php.
Vamos adicionar um Recordset com nome rsConCliT. Este Recordset receberá todos os registros da tabela sem nenhum filtro, apenas ordenados pelo nome:
Vamos também adicionar uma Dynamic Table tendo como base o rsConCliT:
INSERINDO PAGINAÇÃO DE RESULTADOS
Vamos também inserir uma paginação de resultados, pois agora moderemos ter uma grande quantidade de registros. A paginação controla a exibição dos regitros, onde selecionamos quantos registros queremos exibir de cada vez e ainda oferece links para navegar entre os registros existentes: próximos, primeiros, últimos, anteriores.
Deixe o cursor abaixo da tabela criada e clique na seta ao lado do botão Recordset Paging e clique em Recordset Navigation Bar:
Quando verá:
Apenas selecione Images e clique em OK.
Podemos deixar o resultado maia elegante centralizando a tabela criada pelo Dynamic Table: deixe o cursor do mouse abaixo da tabela até aparecer a seta e clique na tabela. Quando perceber toda a tabela estiver selecionada então aparece nas propriedades abaixo a opção Align (selecione Center e salve).
Outra sugestão é setar a propriedade Alt de todas as quatro imagens da paginação com: Primeiro, Próximo, Anterior e Último. Basta selecionar a imagem e setar abaixo na propriedade.

### 8) CRIAÇÃO DA SEÇÃO DE CADASTRO

Para a seção de cadastro (insert) não requer criação de Recordset nem de Formulário.
* Clique na seta ao lado do botão Insert Record
E clique em Record Insertion Form Wizard preenchendo como sugerido abaixo:
Veja que removi o campo código, que é preenchido pelo próprio MySQL.

### 9) CRIAÇÃO DA SEÇÃO DE ATUALIZAÇÃO

Este assistente exige que criemos apenas um recordset e depois ele criará o formulário de atualização.
* Crie um novo arquivo atualizar.php
* Em Heading 2 e centralizado digite “Atualização de Clientes” e tecle Enter
* Clique na seta ao lado do botão Update Record e clique em Record Update Form Wizard
Então aparece um diálogo exibindo as exigências do assistente, no caso ainda resta criar um Recordset:
Clique no link Recordset para criar um agora e crie de acordo com os dados abaixo:
Para testar será exigido um login de cliente cadastrado.
Clique em OK para criar e confirme OK no diálogo Setup Instructions.
Então será aberto o assistente de criação do form de atualização.
Record Update Form
Observe que removemos o campo código, já que este sempre será mantido pelo próprio MySQL (auto increment).
Outro detalhe é a página para onde será redirecionado após a atualização. Caso no site se faça muitas atualizações de cada vez o ideal seria voltar para a própria página atualizar.php.
Em casos de grande sigilo podemos alterar o tipo de exibição da senha para Password em Display as.
Altere o botão para "Atualizar Registro".

### 10) CRIAÇÃO DA SEÇÃO DE EXCLUSÃO

Esta também exige a criação de um Recordset e também cria automaticamente o form.
Como este assistente é somente código não requer que digitemos nenhum título. Após a exclusão ele voltará para a página menu.php.
* Clique no botão Delete Record
Então entre com as devidas informações nno assistente:

### 11) CRIAÇÃO DE UMA SEÇÃO MASTER/DETAILS

Este assistente cria uma página onde podemos ter uma página exibindo uma grande relação de registros e com apenas poucos campos. Um destes campos contém um link que abre uma segunda página contendo mais detalhes sobre o registro selecionado.
* Crie um arquivo novo chamado marterdet.php.
* Com o arquivo aberto crie um novo Recordset para exibir todos os campos da tabela cliente.
* Clique no botão Master Detail Page Set
Agora complete de acordo com a captura abaixo:
Observe que deixei apenas dois campos para a página master e na detail todos os campos. O DW criará automaticamente a página detail.php indicada e ainda adiciona paginação ao resultado.
Antes de testar abra a página detail.php e salve.

### 12) ADICIONANDO O TOTAL DE REGISTROS A UMA PÁGINA

* Após ter criado uma página que exibe diversos registros, então jogue o foco onde deseja exibir o total de registros e digite algo como “Total de Clientes Cadastrados: “
* Clique na seta do botão Display Records Count e clique em Total Records
Agora selecione o Recordset
E clique em OK
Ficando assim: Total de Clientes Cadastrados: {rsConCliT.TotalRecords}
Se verificar vai constatar que existem diversos outros recursos de geração de código do DW.

### 13) ADICIONAR SELECT DINÂMICO A CAMPO DE FORMULÁRIO

Podemos adicionar um select que vai a outra tabela e é preenchido com valores da mesma e armazena na tabela atual.
* Selecione o campo onde deseja adicionar o select dinâmico e remova o campo texto (login_adm) do cadastrar.php
* Em seu lugar insira um elemento do formulário List/Menu.
* Mude seu nome para login_adm.
* Crie um Recordset contendo toda a tabela administrador.
* Selecione o select e abaixo clique no botão Dynamic deixando assim:
Então clique no botão Select value equal to e selecione nome e OK:
Prontinho, temos agora um select dinâmico.