Sie sind auf Seite 1von 7

Disciplina: Tpicos Especiais em TI PHP

Este material foi produzido com base nos livros e documentos citados abaixo, que
possuem direitos autorais sobre o contedo. Favor adquiri-los para dar continuidade ao
curso.
Livro: Desenvolvendo Websites com PHP
Apostila da Diviso de Servios Comunidade Centro de Computao Unicamp

Conectando com um banco de Dados


Em um programa PHP, para fazer a conexo com um banco de dados MySQL
utilizamos a funo mysqp_connect. Sintaxe:
mysql_connect ([string servidor [, string usurio [, string senha [, bool novo_link [, int
flags_cliente]]]]])
Ex: $conexao = mysql_connect(localhost, teste, teste2);
Onde: teste o nome de usurio e teste2 a senha
Logo aps, especificamos atravs do comando mysql_select_db qual ser o banco de
dados utilizado:
mysql_select_db(bdteste);
Feito isto, estar aberta a conexo e podemos manipular os dados, atravs de incluses,
excluses e e alteraes. Para fechar a conexo aberta basta digitar (obs: no final de
cada pgina este comando deve ser utilizado):
mysql_close($conexao);
Para no ter que repetir todos esses comandos em diversas pginas do site, seria
interessante a criao de uma include que faz a conexo com o banco de dados.
Ex:
<?php
$conexao = mysql_connect ("localhost", "teste", "teste2");
mysql_select_db ("bdteste");
?>
Basta colocar uma chamada para esta include em todas as pginas que precisam acessar
o banco de dados:
Include conecta_mysql.inc;
OBS: Na verso 5 do PHP deve-se usar:
Ao invs de mysql_connect, usar a funo mysqli_connect;
Ao invs de mysql_select_db, usar a funo mysqli_select_db.

Executando programas SQL em um programa PHP

Para executar comandos em um banco de dados MySQL iremos utilizar a funo


mysql_query. Sintaxe:
recurso mysql_query (string consulta [, recurso conexo])
Exemplo:
<?php
include "conecta_mysql.inc";
$resultado = mysql_query ("SELECT * FROM produtos");
mysql_close($conexao);
?>
Aps a execuo do commando mysql_query, a varivel $resultado conter um ponteiro
para o conjunto de registros retornados pelo comando SELECT.

Exibindo os resultados de comandos SQL

Para tratar as informaes retornadas pelos comandos SQL, existe uma srie de funes
que podem ser utilizadas. Elas so especificadas na tabela abaixo.
MySQL
Mysql_affected_rows
Mysql_fetch_array
Mysql_fetch_object
Mysql_fetch_row
Mysql_result
Mysql_num_rows
Mysql_num_fields
Mysql_field_name

Descrio
Retorna o nmero de linhas afetadas por
uma operao.
Armazena a linha atual do resultado em
um array associativo.
Retorna uma linha como um objeto.
Armazena a linha atual do resultado em
um array.
Retorna uma coluna do resultado.
Retorna o nmero de linhas de uma
consulta.
Retorna o nmero de colunas de uma
consulta.
Retorna o nome de uma coluna em uma
consulta.

Observao:
A operao mysqli_affected_rows usada nas operaes de insero (INSERT),
atualizao (UPDATE) e excluso (DELETE). J a operao mysqli_num_rows
utilizada em consultas (SELECT) para obtermos o nmero de linhas que foram
retornadas.
Exemplos:
1 Programa que apaga todo o contedo de uma tabela no MySQL
<?php

include "conecta_mysql.inc";
$resultado = mysql_query ("DELETE FROM produtos");

?>

$linhas = mysql_affected_rows ();


mysql_close($conexao);
echo "<p align=\"center\">Foram excludos $linhas produtos!</p>";

2 Descobrindo o nmero de registros retornados pela consulta


<?php

?>

include "conecta_mysql.inc";
$resultado = mysql_query ("SELECT * FROM produtos");
$linhas = mysql_num_rows ($resultado);
mysql_close($conexao);
echo "<p align=\"center\">A consulta retornou $linhas registros!</p>";

Para obter os valores dos campos retornados por uma consulta podemos utilizar a
funo mysql_result que possui a sintaxe:
mysql_result (recurso resultado, int linha [, misto coluna])
Onde:
Resultado o nome da varivel que recebeu o resultado da funo mysqli_query.
Linha o nmero da linha que desejamos recuperar (comeando em zero).
Coluna o nmero da coluna (comeando de zero) ou o nome do campo da tabela.
Exibindo alguns valores da primeira linha retornada de uma consulta:
<?php

?>

include "conecta_mysql.inc";
$resultado = mysql_query ("SELECT * FROM produtos");
$codigo = mysql_result($resultado, 0, 0);
$nome = mysql_result($resultado, 0, nome_produto);
$preco = mysql_result($resultado, 0, preco);
mysql_close($conexao);
echo "Cdigo do produto: $codigo <br>";
echo "Nome do produto: $nome <br>";
echo "Preo do produto: $preco";

Se quisermos mostrar o nome e o preo de todos os produtos devemos construir um lao


e, dentro dele imprimir os valores:
<?php

include "conecta_mysql.inc";
$resultado = mysql_query ("SELECT * FROM produtos");
$linhas = mysql_num_rows ($resultado);
for ($i=0 ; $i<$linhas ; $i++)
{
$nome = mysql_result($resultado, $i, nome_produto);
$preco = mysql_result($resultado, $i, preco);

echo "Nome do produto: $nome <br>";


echo "Preo: $preco <br>";

?>

}
mysql_close($conexao);

Outra forma de obter os valores retornados de uma consulta por meio das funes
mysql_fetch_row e mysql_fetch_array. Essas funes colocam as linhas retornadas
(uma por vez) em um array. A diferena entre as duas que a segunda permite o acesso
aos ndices do array por chave associativa (nome dos campos) e a segunda funo
utiliza somente ndices numricos. Sintaxe:
mysql_fetch_row( recurso resultado)
mysql_fetch_array( recurso resultado)
O prximo exemplo imprimi os valores de alguns campos da tabela produtos vista
anteriormente.
<?php

?>

include "conecta_mysql.inc";
$resultado = mysql_query ("SELECT * FROM produtos");
$linhas = mysql_num_rows ($resultado);
for ($i=0 ; $i<$linhas ; $i++)
{
$registro = mysql_fetch_row($resultado);
echo "Cdigo do produto: $registro[0] <br>";
echo "Nome do produto: $registro[1] <br>";
echo "Descrio: $registro[2] <br>";
echo "Preo: $registro[3] <br>";
echo "Peso: $registro[4] <br>";
echo "Informaes adicionais: $registro[7] <br><br>";
}
mysql_close($conexao);

A varivel $linhas recebe o nmero de produtos existentes na tabela, e usada como


limite para o fim do lao determinado pelo comando for. Quando executamos a funo
mysql_fetch_row, criado o array chamado de registro. Por meio dos ndices desse
array obtemos os valores dos campos retornados pela consulta. A funo
mysql_fetch_row executada diversas vezes, e a cada execuo o array registro
armazena os valores da linha seguinte do resultado.
A funo mysql_fetch_object retorna um objeto que referencia uma linha do resultado.
Sintaxe:
mysql_fetch_object (recurso resultado)
Ex:
<?php

include "conecta_mysql.inc";

?>

$resultado = mysql_query ("SELECT * FROM produtos");


$objeto = mysql_fetch_object ($resultado);
echo "Nome do produto: " . $objeto->nome_produto . "<br>";
echo "Preo: " . $objeto->preco;
mysql_close($conexao);

Gerenciando um banco de dados com PHP

Nos exemplos de banco de dados vistos anteriormente, utilizamos as tabelas produtos,


categorias e subcategorias. Para fazer incluses, alteraes e excluses seria interessante
que existisse uma ferramenta de gerenciamento desse banco de dados. Essa ferramenta
poderia utilizar formulrios HTML e um programa PHP para receber os dados desses
formulrios e efetuar as operaes solicitadas.
Para criar a tela de administrao que permite ao administrador incluir, excluir ou
consultar os produtos cadastrados podemos utilizar o seguinte formulrio:
<html>
<title>Administrao da Loja</title>
<body>
<div align="center"> <center>
<table border="1" cellpadding="0" cellspacing="0" width="85%"
bordercolor="#008000" height="348">
<tr>
<td width="33%" bgcolor="#000080" height="19">
<p align="center"><font color="#FFFFFF" face="Arial" size="3"><b>Incluir
Produto</b></font></td>
<td width="33%" bgcolor="#000080" height="19">
<p align="center"><font color="#FFFFFF" face="Arial" size="3"><b>Excluir
Produto</b></font></td>
</tr>
<tr>
<td width="33%" rowspan="3" valign="top" height="325">
<form method="POST" action="administra.php">
<input type="hidden" name="operacao" value="incluir">
<p align="center">&nbsp;&nbsp; <br>
Cdigo: <input type="text" name="codigo" size="5"></p>
<p align="center">Nome do produto: <input type="text" name="nome"
size="20"></p>
<p align="center">Descrio do produto:<br>
<textarea rows="2" name="descricao" cols="20"></textarea></p>
<p align="center">Preo: <input type="text" name="preco"
size="10">&nbsp;&nbsp;
Peso: <input type="text" name="peso" size="10"></p>
<p align="center">Cd. Categoria: <input type="text" name="cc" size="4"><br>
Cd. Subcategoria: <input type="text" name="cs" size="4"></p>
<p align="center">Inf. Adicionais: <input type="text" name="ad"
size="20"></p>

<p align="center"><input type="submit" value="Incluir Produto"


name="enviar"></p>
</form>
</td>
<td width="33%" height="175">
<p align="center">&nbsp;&nbsp; <br>
Cdigo do produto a ser excludo:</p>
<form method="POST" action="administra.php">
<input type="hidden" name="operacao" value="excluir">
<p align="center"><input type="text" name="codigo" size="5"></p>
<p align="center"><input type="submit" value="Excluir Produto"
name="enviar"></p>
</form>
<p align="center"><br>
&nbsp;&nbsp; </td>
</tr>
<tr>
<td width="33%" bgcolor="#000080" height="22">
<p align="center"><font color="#FFFFFF" face="Arial" size="3"><b>Mostrar
Produtos</b></font></td>
</tr>
<tr>
<td width="33%" height="124">
<p align="center">&nbsp;&nbsp; <br>
Clique no boto abaixo para exibir todos os produtos da loja:</p>
<form method="POST" action="administra.php">
<input type="hidden" name="operacao" value="mostrar">
<p align="center"><input type="submit" value="Mostrar Produtos"
name="enviar"></p>
</form>
<p align="center">&nbsp;</p>
<p>&nbsp;</td>
</tr>
</table> </center> </div> </body> </html>
Depois da pgina criada, devemos construir o programa administra.php que
responsvel por realizar todas as operaes solicitas por meio dos formulrios descritos
acima.
administra.php:
<?php

$operacao = $_POST["operacao"];
include "conecta_mysql.inc";
if ($operacao=="incluir")
{
$codigo = $_POST["codigo"];

$nome = $_POST["nome"];
$descricao = $_POST["descricao"];
$preco = $_POST["preco"];
$peso = $_POST["peso"];
$cc = $_POST["cc"];
$cs = $_POST["cs"];
$ad = $_POST["ad"];
$sql = "INSERT INTO produtos VALUES ";
$sql .= "('$codigo','$nome','$descricao',$preco,$peso,$cc,$cs,'$ad')";
$resultado = mysql_query ($sql);
echo "Produto includo com sucesso!";

?>

}
elseif ($operacao=="excluir")
{
$codigo = $_POST["codigo"];
$sql = "DELETE FROM produtos WHERE codigo_produto=$codigo";
$resultado = mysql_query ($sql);
$linhas = mysql_affected_rows();
if($linhas==1)
{ echo "Produto excludo com sucesso!"; }
else
{ echo "Produto no encontrado!"; }
}
elseif ($operacao=="mostrar")
{
$resultado = mysql_query ("SELECT * FROM produtos");
$linhas = mysql_num_rows ($resultado);
echo "<p><b>Lista de produtos da loja</b></p>";
for ($i=0 ; $i<$linhas ; $i++)
{
$reg = mysql_fetch_row($resultado);
echo "$reg[0] <br>$reg[1] <br>$reg[2] <br>$reg[3] <br>";
echo "$reg[4] <br>$reg[5] <br>$reg[6] <br>$reg[7] <br><br>";
}
}
mysql_close($conexao);

Este script est dividido em trs partes: incluso, excluso e visualizao de registros.
Os trs formulrios ativam o mesmo programa, assim o campo hidden dos mesmos
indica ao programa qual a operao que deve ser realizada. Em cada formulrio existe
um campo escondido chamado operacao, que possui os valores incluir, excluir ou
mostrar, conforme o formulrio ativado.

Das könnte Ihnen auch gefallen