segunda-feira, 20 de fevereiro de 2017

UPDATE DE UM REGISTRO

UPDATE DE UM REGISTRO

Atenção: espaços foram inseridos depois do sinal de abertura das tags e no final < > para não ser interpretado pelo blogger.

Quando precisarmos alterar um registro devemos em primeiro lugar localizá-lo, selecioná-lo e depois alterá-lo utilizando o comando sql update.
Vamos imaginar que queiramos alterar os dados do usuário. Mas, a que registro essa alteração afetará? Como não cometer um erro de alterar todos os usuários?
Vamos seguir a ideia do cadastro anterior, onde mencionei que alguém com permissões determinaria se o usuário seria administrador, e/ou aprovar o cadastro do usuário.
Logo precisamos identificar o usuário. Então nesse modelo, após abrir a tag do form, determinar o arquivo que executará a instrução do update, precisamos chamar nossa tabela do banco para selecionar o registro a ser alterado. Para chegar a ter acesso ao banco, anteriormente, ou pode ser agora chamamos o nosso arquivo de conexão do banco, o conecta_banco.php.

< form name="caduser" method="POST" action="../salva/salva_aprova_usuario.PHP" >
< ?PHP
include ("conecta_banco.PHP");
Através de uma variável, nesse modelo chamado query ou outro nome usaremos a função do PHP mais o sql para selecionar a tabela e os registros. Asterisco para todos ou pela WHERE restringimos a condição do registro:
$query = mysql_query("SELECT * FROM users");
? >
Agora pela tag label digitamos o texto que queremos ver na tela.
[< label for="">Selecione usuario< /label > 
Seguimos com a tag do Select, só que em vez do select abrir uma lista predefinida (options), a seleção vai ocorrer com os dados da tabela. Observe que o atributo “name” que vamos nos referir na próxima página sai do select, nesse exemplo ‘id’.
< select name="id" >
< option name="">Selecione...< /option >
Com o “while” faremos uma análise dos dados e se a condição for verdadeira executa o que vier dentro das chaves. Então, While($a ou $um_nome_qualquer igual função mysql_fetch_array ($query)) ajudando para compreender mysql_fetch(busca) array(conjunto)= Temos um conjunto de dados em $query = mysql_query("SELECT * FROM users");.
< ?php while($a = mysql_fetch_array($query))
Se sim, então vamos mostrar. Mostrar o quê? Pelo comando php echo a busca da variável que chamamos de “$a” e a coluna da tabela que queremos passar adiante, para a página que executará o update. Nesse caso [‘id’] id do usuario.
{ ?  >
< option value="< ?
php echo $a['id'] ? >"  >
E ainda o que estará visível no select. Nesse caso por exemplo, mostrar o “id” não ajudaria pois quem é o usuario do id1, id2… difícil saber, então melhor selecionar o usuário pelo seu e-mail por exemplo [‘email’]. Fecha-se o option e o select e a }
< ?PHP echo $a['email'] ?>< /option >
< ?PHP } ?  >
< /select  >
 
Nessa nossa brincadeira vamos alterar também a situação do usuário de inativo para ativo. Digamos que as situações possíveis também não vem de options html e sim de uma tabela do banco chamada de cdsituacao.

< ?PHP
$query = @mysql_query("SELECT * FROM cdsituacao");
? >
< label for="">Selecione situacao< /label>
< select name="situacao" >
< option name="">Selecione...< /option>
< ?PHP while($setor = mysql_fetch_array($query)) { ? >
< option value="">< /option>
< ?PHP } ?>
< /select>

Para misturar possibilidades agora usamos opções de options.
< label>Administrador:< /label>
< select name="admin" >
< option>Sim< /option>
< option selected>Não< /option>

< input type="submit" value="Liberar" />
< input type="button" name="cancela" value="Cancelar" onclick="window.location.href='admin.PHP'"/>
< /form>
Teremos uma tela mais ou menos assim, obviamente conforme o tratamento dado por css a página:

< ?php
include "../conecta_banco.php";
$id=$_POST['id'];
$admin=$_POST['admin'];
$situacao=$_POST['situacao'];
$sql = @mysql_query("UPDATE users SET admin ='$admin', situacao = '$situacao' WHERE id ='$id'");
echo "Cadastro alterado com sucesso!";
?>

INSERINDO DADOS NO BANCO

INSERINDO DADOS NO BANCO

Atenção: espaços foram colocados depois do < das tags para não serem interpretados pelo blogger. Cuidado ao copiar o código, não tem espaço depois da abertura da tag.

Para exemplificar criaremos um formulário de cadastro de usuários e uma tabela no banco para guardar esses dados:

< form action="salva/salva_usuario.PHP" method="POST" name="caduser"> < /form>
< label>Nome:< /label>
*< input name="nome" size="40" type="text" />
< label>Email ou nome de usuario:< /label>
< input name="email" size="25" type="text" />
< label>Senha:
< input name="senha" size="10" type="password" />
< input type="submit" value="Cadastrar" />
< input type="reset" value="Limpar" />
< input name="cancela" onclick="window.location.href='painel.PHP'" type="button" value="Cancelar" />
*Atributos mínimos. Inclua a seu conhecimento de html outros atributos.
Alguns comentários:
method="POST": temos dois metodos de fazer o envio dos dados do formulários dentro do PHP. GET ou POST. Para mais detalhes sobre um ou outro pesquise sobre o assunto. Por enquanto guarde a ideia que como POST os dados são enviados sem estar visíveis na url de redirecionamento da página.
action="salva/salva_usuario.PHP": para qual pagina os dados do formulário serão enviados. Pode ser para a mesma página ou para outra como no exemplo onde vamos chamar outra página salva_usuario.PHP.

Enviamos então nome, e-mail e senha através do atributo “name” para outra página pelo POST e agora na nova página vamos recepcionar esses dados e criar variáveis que guardarão essas informações.

#manda ler o arquivo de conexão do banco
include "conecta_banco.php";
#Recolhe através da variável superglobal $_POST os dados do formulário do atributo “name” “nome”, e-mail” e “senha”.
$nome=$_POST['nome'];
$email=$_POST['email'];
$senha=$_POST['senha'];
# uma variavel com nome qualquer (nesse caso $sql) e através do mysql_query inserimos o SQL para gravar os dados.
$sql = @mysql_query("INSERT INTO users(nome, admin, email, senha, situacao)
VALUES('$nome', 'Não', '$email', MD5('$senha'), 0)");
echo "Cadastro efetuado com sucesso!";
?>
Inserir em tabela de nome users nos campos: nome, admin, e-mail, senha e situação os VALUES(valores) das variáveis que armazenaram os dados do formulário.
Obs1: Note que nem todos os dados precisam vir de variáveis. Quando inicialmente queremos passar um valor padrão podemos declarar direto nos valores do INSERT. Nesse exemplo, em vez de perguntar no formulário se o novo usuário seria administrador, inserimos um valor padrão ‘Não’ e um administrador no futuro decide se esse usuário será administrador ou não.
Obs2: poderia ser declarada uma variável acima, mesmo que os dados não proviessem de um formulário, nesse caso, por exemplo: $admin=‘não’, $situação=0. O desenvolvedor pode escolher sua forma de trabalhar. (se valor da variável for texto escreva dentro de aspas simples e se for numérico sem aspas).
Obs3: O que faz esse @? Na verdade o PHP evoluiu para mysqli, a arroba é um truque que contorna esse problema em algumas funções nas atuais versões do PHP. Porém, se você for iniciante recomenda-se se habituar ao mysqli.
Obs4: Para tranquilizar o usuário devolvemos uma mensagem de que tudo foi realizado com sucesso através do “echo”. Cadastro efetuado com sucesso!". De fato, se tudo ocorreu bem no sql e o sistema não retornar outro erro, a execução chegou ao “echo” há de se supor que tudo ocorreu bem. Não é de todo confiável, mas por hora vamos acreditar que se a mensagem vier à tela, tudo foi bem.
Obs5: A certeza que os dados foram gravados se dará consultando a base de dados. A partir do momento, que executado vários testes sempre se repete a gravação no banco, podemos ter confiança que a instrução está correta.
Obs6.: MD5('$senha'). MD5 é uma forma de criptografar senhas. Dessa forma, ao ler a tabela ninguém sabe qual a senha real do usuário. Comentaremos mais adiante sobre isso.

Agora chegou a hora de criar a tabela no nosso banco. Para demonstrar usaremos o banco criado de nome loja. Veja que ao clicar no sinal de + do banco temos uma opção new para chamar a tela de criação de uma tabela. Oferecemos um nome para a tabela, e opcionalmente quantas colunas terá essa tabela. Não se preocupe, pois inserir novas colunas podem ser feitas depois.


Após executar, insira pelo menos o nome da coluna, tipo de dados, tamanho, colação se for tipo texto, e para um deles, geralmente o primeiro que seja de índice primário e marque A.I. (autoincremento).

Para nosso formulário e para nosso sql funcionar e os dados ficarem gravados em uma tabela de um banco precisamos criar uma coluna com identificador nesse caso id, tipo INT, tamanho 4 (comportará até 9999 usuários), índice primário e autoincremento para não precisarmos inserir dados nesta coluna, o banco cria sequencialmente o próximo ID. Nomes que usamos no INSERTO TO nome, admin, e-mail, senha.


Obs.: após clicar em guardar os dados a tabela será criada e listada na barra esquerda.
Na barra superior, quando clicamos sobre o nome da tabela, o ícone procurar listará alguns campos já lançados. O caminho estrutura usa-se para incluir/alterar as colunas da tabela. Mais adiante iremos ver outras funções.


Após isso, rode o arquivo no navegador e verifique no phpmydmin se os dados estão sendo gravados na tabela. Importante, clique em Procurar para dar uma recarregada na tela.


Se tudo estiver dado certo, terás a primeira inserção no banco. Parabéns. Caso contrário reveja os códigos, se os nomes das variáveis estão certo, os nomes no sql e nas colunas da tabela.

segunda-feira, 6 de fevereiro de 2017

Conexão do banco de dados com as páginas html+php

Criado o banco nosso desejo é a ligação entre os dados de nosso formulário com o banco ou base de dados. É desejável criar o script de ligação ao banco num arquivo e depois chamá-lo quando necessário do programar em toda página que acessar o banco essa ligação. Se por algum motivo mudarmos o nome do banco, do usuário, a senha, etc será trabalhoso mudar em todos arquivos. Faremos a requisição da leitura do arquivo de conexão ao banco através do include "nome_do_arquivo.PHP";. Então se nomearmos o arquivo de conexão como conecta_banco.PHP a chamada será .
Um jeito de criar um arquivo de conexão é esse:
# Uma variável onde informa a localização do computador que armazena o banco. Pode ser indicado simplesmente localhost ou IP da máquina que guarda o banco. A segunda opção seria utilizada caso os arquivos PHP estão em outra máquina e não na mesma onde se encontra o banco. 
$host = "localhost";
# Uma variável onde informa o usuário do banco. Na verdade do gerenciador do banco.
$user = "root";
# Uma variável onde informa a senha do banco. Na verdade do gerenciador do banco.
$pass = "usbw";
# Uma variável onde informa o nome do banco.
$banco = "loja";
#Agora numa variável usaremos a função PHP que permite a conexão e referenciamos as variáveis que mysql_connetct deve ler. E ainda or die caso não encontre dados válidos para uma das variáveis.
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
#Agora numa variável usaremos a função PHP que seleciona o banco.
mysql_select_db($banco) or die(mysql_error());
# Esse conjunto de linhas informa qual o conjunto de caracteres será usado (opcional. Importante em situações onde mesmo usando colation no banco, como por exemplo utf-8 os dados são gravados sem respeitar os acentos, cedilha, etc).
header('Content-Type: text/html; charset=utf-8');
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
?>
Lembrando que a tag do PHP é dada dentro do
< ?php código ? >