Implementando scripts PHP com MySQL
Neste artigo explico como manipular o banco de dados MySQL com PHP, criando páginas para cadastro, edição e listagem dos registros armazenados.
Parte 6: Fazendo o PHP se comunicar com o MySQL
Vamos criar agora os scripts que farão a comunicação com o banco de dados.
7° Script - Neste script vamos criar uma função que fará a conexão com o bando de dados.
7° Script - Neste script vamos criar uma função que fará a conexão com o bando de dados.
<?
// config.php
function conectar() {
$hostdb = 'localhost'; //host em que se dará a transação
$db = 'meubanco'; //banco de dados
$userdb = 'jeffestanislau'; //usuário que tem acesso
$passdb = 'senhaphp'; //senha deste usuário
if ($con = mysql_pconnect($hostdb,$userdb,$passdb)) {
return $con; //se a conexão for bem sucedida, será retornado a variável $con
} else {
return 0; //se a conexão não ocorrer, será retornado 0
}
}
?>
// config.php
function conectar() {
$hostdb = 'localhost'; //host em que se dará a transação
$db = 'meubanco'; //banco de dados
$userdb = 'jeffestanislau'; //usuário que tem acesso
$passdb = 'senhaphp'; //senha deste usuário
if ($con = mysql_pconnect($hostdb,$userdb,$passdb)) {
return $con; //se a conexão for bem sucedida, será retornado a variável $con
} else {
return 0; //se a conexão não ocorrer, será retornado 0
}
}
?>
NOTA: Este script será utilizado pelos demais scripts que necessitaram se comunicar com o bando de dados.
8° Script - Este script envia os dados para nosso banco de dados.
<?
// enviardados.php
include 'config.php';
// conectar ao bando de dados
$con = conectar(); // $con recebe o resultado da função conectar
mysql_select_db('meubanco'); //função nativa do PHP que faz a conexão ao banco de
//dados do MySQL
//cadastrar cliente
$insert = "INSERT INTO funcionarios (nome, cargo, setor)
VALUES ('$nome', '$cargo', '$setor')";
mysql_query($insert,$con); //função nativa do PHP que faz a execução da query no
//no banco de dados
//mensagem informando o cadastro
echo "Seu cadastro foi efetuado com sucesso!";
?>
<p align="center"><a href="inicio.html">Principal</a>
// enviardados.php
include 'config.php';
// conectar ao bando de dados
$con = conectar(); // $con recebe o resultado da função conectar
mysql_select_db('meubanco'); //função nativa do PHP que faz a conexão ao banco de
//dados do MySQL
//cadastrar cliente
$insert = "INSERT INTO funcionarios (nome, cargo, setor)
VALUES ('$nome', '$cargo', '$setor')";
mysql_query($insert,$con); //função nativa do PHP que faz a execução da query no
//no banco de dados
//mensagem informando o cadastro
echo "Seu cadastro foi efetuado com sucesso!";
?>
<p align="center"><a href="inicio.html">Principal</a>
NOTA: O script acima é simples, ele apenas efetua o cadastro. Observe que foi inserido dentro da variável $insert, uma string idêntica a utilizada dentro do MySQL, que será enviada pela função "mysql_query" para o servidor MySQL que executará a linha inserindo os dados.
9° Script - Este script obtém os dados armazenados em nosso banco de dados.
<?
// obterdados.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
$select = "SELECT codigo, nome, cargo, setor
FROM funcionarios
WHERE nome LIKE '%$busca%')";
$res = mysql_query($select,$con);
list($codigo, $nome, $cargo, $setor) = mysql_fetch_array($res);
$cont = mysql_num_rows($res);
if ($cont == 1) {
include 'editar.html';
} else {
echo "<br><br><p align='center'>Registro não Encontrado
<p> <p>
<p align='center'><a href='inicio.html'>Principal</a>";
}
?>
// obterdados.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
$select = "SELECT codigo, nome, cargo, setor
FROM funcionarios
WHERE nome LIKE '%$busca%')";
$res = mysql_query($select,$con);
list($codigo, $nome, $cargo, $setor) = mysql_fetch_array($res);
$cont = mysql_num_rows($res);
if ($cont == 1) {
include 'editar.html';
} else {
echo "<br><br><p align='center'>Registro não Encontrado
<p> <p>
<p align='center'><a href='inicio.html'>Principal</a>";
}
?>
NOTA: O comando "LIKE '%$busca%'" faz uma busca sobre qualquer parte do nome do usuário, sendo que neste caso ele irá retornar o primeiro nome que casar com a string digitada.
A variável "$res" irá receber todos os dados encontrado por esta conexão.
A função "mysql_fetch_array" nativa do PHP, irá destrinchar os registros em cada campo da posição do array referente a busca ocorrida.
O comando "list" receberá os campos do array preenchendo as variáveis indicadas.
A função "mysql_num_rows" informa quantos registros foram encontrados pela pesquisa realizada.
A variável "$cont" recebe a quantidade de registros encontrados e é o fator determinante da condição do comando "if" que retornará a chamada ao HTML de edição, ou a indicação de que não houve registro encontrado.
10° Script - Este script irá fazer a edição dos dados já armazenados em nosso banco de dados.
<?
// editardados.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
$update = "UPDATE funcionarios SET codigo=$codigo, nome='$nome', cargo='$cargo', setor='$setor'
WHERE codigo='$codigo'";
mysql_query($update,$con);
//confirmar alteração de dados
echo "Edição efetuada com sucesso!!!";
echo "<p align='center'><a href='inicio.html'>Principal</a>";
?>
// editardados.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
$update = "UPDATE funcionarios SET codigo=$codigo, nome='$nome', cargo='$cargo', setor='$setor'
WHERE codigo='$codigo'";
mysql_query($update,$con);
//confirmar alteração de dados
echo "Edição efetuada com sucesso!!!";
echo "<p align='center'><a href='inicio.html'>Principal</a>";
?>
NOTA: A condição de edição dos dados foi imposta sobre o código, por esta ser uma informação que não poderá ser alterada.
11° Script - Este script irá listar o conteúdo dos registros armazenados em nosso banco de dados.
<?
// listar.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
//definir quantidade de registros por páginas
$num_por_pagina = 15;
/*descubra o número da página que será exibida se o número da página não for informado, definir 1 */
if (!$pagina) {
$pagina = 1;
}
//definir o número de registro da página
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
//consultar os registros da página atual
$consulta = "SELECT codigo, nome, cargo, setor
FROM funcionarios
ORDER BY codigo LIMIT $primeiro_registro, $num_por_pagina";
$res = mysql_query($consulta,$con);
//exibir o cabeçalho da tabela com os dados
echo "<b>FUNCIONÁRIOS CADASTRADOS</b><br><br>
<center>
<table border=1>
<tr>
<td><b>Código</b></td>
<td><b>Nome</b></td>
<td><b>Cargo</b></td>
<td><b>Setor</b></td>
</tr>";
//exibir registros na tabela
while (list($codigo, $nome, $cargo, $setor) = mysql_fetch_array($res)) {
echo "<tr>
<td>$codigo</td>
<td>$nome</td>
<td>$cargo</td>
<td>$setor</td></tr>";
}
echo "</table></center>";
//construir painel de navegabilidade
$consulta = "SELECT COUNT(*) FROM funcionarios";
list($total_reg) = mysql_fetch_array(mysql_query($consulta,$con));
$total_paginas = $total_reg/$num_por_pagina;
$prev = $pagina - 1;
$next = $pagina + 1;
//se página maior que 1, então temos link para a página anterior
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>";
} else { //senão não há link para a página anterior
$prev_link = "Anterior";
}
/*se numero total de páginas for maior que a página corrente, então temos link para a próxima página */
if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima</a>";
} else {
$next_link = "Próxima";
}
/*vamos arredondar para o alto o numero de páginas que serão necessárias para exibir todos os resultados, com a função ceil() */
$total_paginas = ceil($total_paginas);
$painel = "";
for ($x=1; $x<=$total_paginas; $x++) {
if ($x==$pagina) { //se estivermos na página corrente, não exibir o link para visualização desta página
$painel .= "[$x]";
} else {
$painel .= "<a href=\"$PHP_SELF?pagina=$x\">[$x]</a>";
}
}
//exibir painel na tela
echo "<br><p align='center'>$prev_link | $painel | $next_link";
echo "<br><p align='center'><a href='inicio.html'>Principal</a>";
?>
// listar.php
include 'config.php';
$con = conectar();
mysql_select_db('meubanco');
//definir quantidade de registros por páginas
$num_por_pagina = 15;
/*descubra o número da página que será exibida se o número da página não for informado, definir 1 */
if (!$pagina) {
$pagina = 1;
}
//definir o número de registro da página
$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina;
//consultar os registros da página atual
$consulta = "SELECT codigo, nome, cargo, setor
FROM funcionarios
ORDER BY codigo LIMIT $primeiro_registro, $num_por_pagina";
$res = mysql_query($consulta,$con);
//exibir o cabeçalho da tabela com os dados
echo "<b>FUNCIONÁRIOS CADASTRADOS</b><br><br>
<center>
<table border=1>
<tr>
<td><b>Código</b></td>
<td><b>Nome</b></td>
<td><b>Cargo</b></td>
<td><b>Setor</b></td>
</tr>";
//exibir registros na tabela
while (list($codigo, $nome, $cargo, $setor) = mysql_fetch_array($res)) {
echo "<tr>
<td>$codigo</td>
<td>$nome</td>
<td>$cargo</td>
<td>$setor</td></tr>";
}
echo "</table></center>";
//construir painel de navegabilidade
$consulta = "SELECT COUNT(*) FROM funcionarios";
list($total_reg) = mysql_fetch_array(mysql_query($consulta,$con));
$total_paginas = $total_reg/$num_por_pagina;
$prev = $pagina - 1;
$next = $pagina + 1;
//se página maior que 1, então temos link para a página anterior
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>";
} else { //senão não há link para a página anterior
$prev_link = "Anterior";
}
/*se numero total de páginas for maior que a página corrente, então temos link para a próxima página */
if ($total_paginas > $pagina) {
$next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima</a>";
} else {
$next_link = "Próxima";
}
/*vamos arredondar para o alto o numero de páginas que serão necessárias para exibir todos os resultados, com a função ceil() */
$total_paginas = ceil($total_paginas);
$painel = "";
for ($x=1; $x<=$total_paginas; $x++) {
if ($x==$pagina) { //se estivermos na página corrente, não exibir o link para visualização desta página
$painel .= "[$x]";
} else {
$painel .= "<a href=\"$PHP_SELF?pagina=$x\">[$x]</a>";
}
}
//exibir painel na tela
echo "<br><p align='center'>$prev_link | $painel | $next_link";
echo "<br><p align='center'><a href='inicio.html'>Principal</a>";
?>
NOTA: Neste script aproveitei parte do código do artigo de Fábio (Paginação de resultados em PHP/MySQL) para que nossa tela tenha um painel de navegabilidade.
Este script já é a própria tela de lista de registros, não tendo uma página HTML para interagir com ele.
As vezes comecamos a viajar em assuntos de nivel técnico relativamente alto e nos esquecemos que o pessoal que tá comecando só quer e precisa de exemplos simples.
[]`s
Ragen