3. Após criar um novo criador de lista de desejos, o usuário alterna para editWishList.php, onde ele criará uma lista de desejos para o usuário.
O documento atual é uma parte do tutorial Criando um aplicativo de banco de dados no NetBeans IDE para PHP.
Código-fonte do aplicativo da lição anterior
Usuários MySQL: Clique aqui para baixar o código-fonte que reflete o estado do projeto depois que a lição anterior estiver concluída.
Usuários do Banco de dados Oracle: Clique aqui para baixar o código-fonte que reflete o estado do projeto depois que a lição anterior estiver concluída.
Adicionando um link para começar a criar um novo criador de lista de desejos
Abra index.php. Adicione uma linha em branco abaixo da marcação de fechamento </form>. Na linha em branco, insira o seguinte bloco de código:
<br>SAinda não tem uma lista de desejos?! <a href="createNewWisher.php">Criar agora</a>
Onde:
Ainda não tem uma lista de desejos?! é o texto exibido na página ao lado do link.
<a href="createNewWisher.php"></a> é o código que implementa um link que abre a página createNewWisher.php.
Criar agora é o texto exibido como um link.
Criando novos arquivos PHP
Crie dois novos arquivos PHP nos arquivos de código-fonte do projeto, como descrito na Lição 2.
createNewWisher.php
editWishList.php
Em editWishList.php, Adicione o texto “Olá!" ao corpo do HTML e, caso contrário, deixe-o com seu conteúdo padrão. Você modificará esse arquivo em lições posteriores, mas você precisa dele agora porque createNewWisher.php faz referência a ele. Para o restante desta lição, você modifica createNewWisher.php.
Adicionando um formulário HTML para indicar os dados de um novo criador de lista de desejos
Digite ou cole o seguinte bloco HTML no createNewWisher.php, abaixo do bloco PHP:
Observação: O tipo password é um tipo especial de um campo de texto onde os caracteres são substituídos por asteriscos. O código apresenta um formulário HTML para um usuário indicar o nome e a senha do novo criador de lista de desejos nos campos de texto. Quando o usuário clica no botão "Registro", os dados indicados são transferidos para validação na mesma página, createNewWisher.php.
Observação: Você pode ignorar os avisos do validador HTML.
Validando dados e adicionando-os ao banco de dados
Nesta seção, você adiciona o código PHP ao createNewWisher.php. Adicione este código ao bloco PHP na parte superior do arquivo. O bloco PHP deve estar acima de todo o código HTML , linhas vazias ou espaço em branco. A posição do bloco de código PHP é importante para permitir o correto funcionamento da instrução de redirecionamento. No bloco PHP, digite ou cole os blocos de código descritos abaixo desta seção, na ordem em que eles são escritos.
Adicione o código seguinte para validar os dados:
Inicialize as variáveis. As primeiras variáveis passam as credenciais do banco de dados e as outras serão usadas nas operações PHP.
Abaixo das variáveis, adicione uma cláusula if . O parâmetro da cláusula if verifica se a página foi solicitada a partir dela mesma através do método POST. Caso contrário, as validações posteriores não são realizadas e a página é mostrada com campos vazios, como descrito acima.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
Dentro das chaves da cláusula if , adicione outra cláusula if que verifica se o usuário preencheu o nome do criador da lista de desejos. Se o campo de texto "user" estiver vazio, o valor de $userIsEmpty será alterado para true.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($_POST["user"]=="")
$userIsEmpty = true;
}
Adicione o código que estabelece uma conexão de banco de dados. Se não for possível estabelecer a conexão, o erro MySQL ou Oracle OCI8 é enviado para a saída.
Para o banco de dados MySQL:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($_POST["user"]=="") {
$userIsEmpty = true;
}
$con = mysqli_connect("localhost", "phpuser", "phpuserpw"); if (!$con) { exit('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } //definir o código de caracteres padrão do cliente mysqli_set_charset($con, 'utf-8');
}
Para o banco de dados Oracle:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if ($_POST['user'] == "")
$userIsEmpty = true;
$con = oci_connect("phpuser", "phpuserpw", "localhost/XE");
if (!$con) {
$m = oci_error();
exit('Connect Error' . $m['message']);
}
}
Adicione o código que verifica se um usuário cujo nome corresponde ao campo "user" já existe. O código faz isso, tentando localizar o número do ID de um criador da lista de desejos para um nome correspondente ao nome no campo "user". Se houver tal número de ID, o valor de $userNameIsUnique é alterado para "false."
Para o banco de dados MySQL:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
Displaying error messages
if ($_POST["user"]=="") {
$userIsEmpty = true;
}
$con = mysqli_connect("localhost", "phpuser", "phpuserpw"); if (!$con) { exit('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } //definir o código de caracteres padrão do cliente mysqli_set_charset($con, 'utf-8'); mysqli_select_db($con, "wishlist");
$user = mysqli_real_escape_string($con, $_POST["user"]); $wisher = mysqli_query($con, "SELECT id FROM wishers WHERE name='".$user."'"); $wisherIDnum=mysqli_num_rows($wisher); if ($wisherIDnum) { $userNameIsUnique = false; }
}
Para o banco de dados Oracle:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if ($_POST['user'] == "")
$userIsEmpty = true;
$con = oci_connect("phpuser", "phpuserpw", "localhost");
if (!$con) {
$m = oci_error();
exit('Connection Error ' . $m['message']);
}
$query = "SELECT id FROM wishers WHERE name = :user_bv";
$stid = oci_parse($con, $query);
$user = $_POST['user'];
$wisherID = null;
oci_bind_by_name($stid, ':user_bv', $user);
oci_execute($stid);
// Cada nome de usuário deve ser único. Verifique se o usuário enviado já existe.
$row = oci_fetch_array($stid, OCI_ASSOC);
if ($row){
$userNameIsUnique = false;
}
}
Depois do código que verifica se o usuário é único, adicione uma série de cláusulasif para verificar se o usuário inseriu e confirmou uma senha corretamente. O código verifica se os campos Senha ("password") e Confirmar senha ('password2) não estão vazios no formulário e não são idênticos. Caso contrário, os valores das variáveis booleanas correspondentes são alterados de acordo.
if ($_POST["password"]=="") $passwordIsEmpty = true; if ($_POST["password2"]=="") $password2IsEmpty = true; if ($_POST["password"]!=$_POST["password2"]) { $passwordIsValid = false;}
Complete a cláusula if ($_SERVER['REQUEST_METHOD'] == "POST") adicionando o código que insere uma nova entrada no banco de dados "wishers". O código verifica se o nome do criador da lista de desejos é especificado exclusivamente e se a senha é indicada e confirmada validamente. Se as condições forem atendidas, o código pegará os valores "user" e "password" do formulário HTML e os inserirá nas colunas Nome e Senha, respectivamente, de uma nova linha no banco de dados wishers. Depois de criar a linha, o código fecha a conexão do banco de dados e redireciona o aplicativo para a página editWishList.php.
Para o banco de dados MySQL:
/** Verifique se a página foi solicitada a partir dela mesma através do método POST. */
if ($_SERVER['REQUEST_METHOD'] == "POST") {
/** Verificar se o usuário preencheu o nome do criador de lista de desejos no campo de texto “usuário” */
if ($_POST['user'] == "") {
$userIsEmpty = true;
}
/** Criar conexão do banco de dados */
$con = mysqli_connect("localhost", "phpuser", "phpuserpw");
if (!$con) {
exit('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
//definir o conjunto de caracteres do cliente padrão
mysqli_set_charset($con, 'utf-8');
/** Verificar se um usuário cujo nome corresponda ao campo “usuário” já existe */
mysqli_select_db($con, "wishlist");
$user = mysqli_real_escape_string($con, $_POST['user']);
$wisher = mysqli_query($con, "SELECT id FROM wishers WHERE name='".$user."'");
$wisherIDnum=mysqli_num_rows($wisher);
if ($wisherIDnum) {
$userNameIsUnique = false;
}
/** Verificar se uma senha foi inserida e confirmada corretamente */
if ($_POST['password'] == "")
$passwordIsEmpty = true;
if ($_POST['password2'] == "")
$password2IsEmpty = true;
if ($_POST['password'] != $_POST['password2']) {
$passwordIsValid = false;
}
/** Verificar se os valores booleanos mostram que os dados inseridos foram validados com sucesso.
* Se os dados foram validados com êxito, adicione como uma nova entrada no banco de dados "wishers".
* Após adicionar a nova entrada, feche a conexão e redirecione o aplicativo para editWishList.php.
*/
if (!$userIsEmpty && $userNameIsUnique && !$passwordIsEmpty && !$password2IsEmpty && $passwordIsValid) {
$password = mysqli_real_escape_string($con, $_POST['password']);
mysqli_select_db($con, "wishlist");
mysqli_query($con, "INSERT wishers (name, password) VALUES ('" . $user . "', '" . $password . "')");
mysqli_free_result($wisher);
mysqli_close($con);
header('Location: editWishList.php');
exit;
}
}
Para o banco de dados Oracle:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if ($_POST['user'] == "")
$userIsEmpty = true;
$con = oci_connect("phpuser", "phpuserpw", "localhost/XE", "AL32UTF8");
if (!$con) {
$m = oci_error();
echo $m['message'], "\n";
exit;
}
$query = "select ID from wishers where name = :user_bv";
$stid = oci_parse($con, $query);
$user = $_POST['user'];
$wisherID = null;
oci_bind_by_name($stid, ':user_bv', $user);
oci_execute($stid);
//Cada nome de usuário deve ser único. Verifique se o usuário enviado já existe.
$row = oci_fetch_array($stid, OCI_ASSOC);
if ($row) {
$wisherID = $row['ID'];
}
if ($wisherID != null) {
$userNameIsUnique = false;
}
//Verificar a existência e validade da senha
if ($_POST['password'] == "")
$passwordIsEmpty = true;
if ($_POST['password2'] == "")
$password2IsEmpty = true;
if ($_POST['password'] != $_POST['password2']) {
$passwordIsValid = false;
}
/** Verificar se os valores booleanos mostram que os dados inseridos foram validados com sucesso.
* Se os dados foram validados com êxito, adicione como uma nova entrada no banco de dados "wishers".
* Após adicionar a nova entrada, feche a conexão e redirecione o aplicativo para editWishList.php.
*/
if (!$userIsEmpty && $userNameIsUnique && !$passwordIsEmpty && !$password2IsEmpty && $passwordIsValid) {
$query = "INSERT INTO wishers (name, password) VALUES (:user_bv, :pwd_bv)";
$stid = oci_parse($con, $query);
$pwd = $_POST['password'];
oci_bind_by_name($stid, ':user_bv', $user);
oci_bind_by_name($stid, ':pwd_bv', $pwd);
oci_execute($stid);
oci_free_statement($stid);
oci_close($con);
header('Location: editWishList.php');
exit;
}
}
Exibindo mensagens de erro no formulário de entrada
Agora você implementa a exibição das mensagens de erro quando os dados indicados são inválidos. A implementação é baseada nas validações e alterações nos valores das variáveis booleanas descritas em Validando dados e adicionando-os ao banco de dados.
Indique o seguinte bloco de código PHP dentro do formulário de entrada HTML, abaixo da entrada do nome do criador da lista de desejos:
Bem-vindo!<br> <form action="createNewWisher.php" method="POST"> Your name: <input type="text" name="user"/><br/>
<?php
if ($userIsEmpty) {
echo ("Enter your name, please!");
echo ("<br/>");
}
if (!$userNameIsUnique) {
echo ("The person already exists. Please check the spelling and try again");
echo ("<br/>");
}
?>
Indique o seguinte bloco de código PHP dentro do formulário de entrada HTML abaixo do código da entrada de senha:
Password: <input type="password" name="password"/><br/>
<?php
if ($passwordIsEmpty) {
echo ("Enter the password, please!");
echo ("<br/>");
}
?>
Indique os seguintes blocos de código PHP dentro do formulário de entrada HTML abaixo do código de confirmação de senha:
Please confirm your password: <input type="password" name="password2"/><br/>
<?php
if ($password2IsEmpty) {
echo ("Confirm your password, please");
echo ("<br/>");
}
if (!$password2IsEmpty && !$passwordIsValid) {
echo ("The passwords do not match!");
echo ("<br/>");
}
?>
Testando a funcionalidade Create New Wisher
Execute o aplicativo. A página de índice se abre.
Na página de índice, clique no link ao lado do texto Ainda não possui uma lista de desejos? O formulário seguinte se abre:
Deixe estes campos em branco e clique em Registrar. Uma mensagem de erro é exibida
Indique o nome de um criador de lista de desejos registrado, por exemplo, Tom no campo Seu nome, preencha os outros campos corretamente e clique em Registrar. Uma mensagem de erro é exibida
Preencha os campos Senha e Confirme sua senha com valores diferentes e clique em Registrar. Uma mensagem de erro é exibida
Indique Bob no campo Seu nome, especifique a mesma senha em ambos os campos de senha e clique em Registrar. A página que se abre está vazia mas o redirecionamento foi passado corretamente já que a URL termina com editWishList.php:
Para verificar se os dados estão armazenados no banco de dados, vá para wishers na janela Serviços abaixo do nó wislist1 e no menu de contexto, escolha Visualizar dados
O código-fonte do aplicativo após a lição atual está concluído
Usuários do MySQL: Clique aqui para baixar o código-fonte que reflete o estado do projeto depois que a lição estiver concluída.
Usuários do Banco de dados Oracle: Clique aqui para baixar o código-fonte que reflete o estado do projeto depois que a lição estiver concluída.
Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes dos recursos de desenvolvimento em PHP no NetBeans IDE, junte-se à lista de usuários .