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.
<?
// 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>
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%')";
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!!!";
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>";
//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.
[1] Comentário enviado por Ragen em 06/06/2004 - 22:19h
Muito show seu artigo... É simples e vai direto ao ponto.
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.
[2] Comentário enviado por agk em 07/06/2004 - 10:16h
Nossa muito bom esse artigo, eu que estou começando em php achei d+, exemplos simples como esses é que nos permiter começar a aprender esse linguagem maravilhosa e aumentar nosso conhecimento na área.
[5] Comentário enviado por nanci em 01/07/2004 - 21:01h
É o melhor artigo PHP para iniciantes que já li. Sei que é complicado para programadores experientes entender quais são as nossas dificuldades. O Jeferson conseguiu explicar de maneira clara e com exemplos práticos.
[6] Comentário enviado por Hernando em 19/10/2004 - 14:21h
Dae brody... Salve Salve este artigo... caraca eu tava procurando algo do tipo há um tempão, pois me propus dar aula de php para um camarada e tava preparando esta aula hoje tu me salvou umas 2 horinhas de trampo... Valeu brody
[7] Comentário enviado por caduardo em 12/03/2005 - 11:52h
Olás estava fazendo teste com o artigo acima e não consigo editar pois sempre da registro não encontrado, mesmo fazendo as mudanças acima. E também qdo cadastro so cadastro o codigo o resto fica em branco. Olhe os logs do mysql
050312 11:51:40 173 Connect carlos@localhost on
173 Init DB meubanco
173 Query SELECT codigo, nome, cargo, setor
FROM funcionarios
WHERE nome LIKE '%%'
050312 11:53:49 157 Init DB meubanco
157 Query INSERT INTO funcionarios (nome, cargo, setor)
VALUES ('', '', '')
Tenho que fazer alguma mudança no html ou nos scripts??
[9] Comentário enviado por valteirsf em 22/05/2005 - 21:38h
Otimo artigo de PHP.
Começei a pouco tempo estudar PHP.
Com o sistema já pronto consegui enteder algumas coisas q não entedia.
Quando se ver ele funcionando dar pra enterder melhor com PHP funciona.
Aqui funcionou muito bem.
[12] Comentário enviado por lanux em 20/10/2006 - 15:30h
O meu enviardados.php não está funcionando. A entrada é criada na tabela, porém vazia, sem os dados enviados pelo cadastrar.html.
Por outro lado, se eu logar no mysql e enviar os dados "na mão" com INSERT INTO funciona legal.
Não sei mais onde procurar o erro! Alguma dica?
[13] Comentário enviado por jeffestanislau em 20/10/2006 - 20:45h
alega1977 e lanux,
Debuguem o sistema nesta linha do enviar dados.
Usem o comando echo e o exit para ir vendo o que acontece e ir parando a execução do script, como no exemplo abaixo:
[14] Comentário enviado por lavoie em 27/12/2006 - 12:02h
realizei os passos de acordo com o tutorial, so que nao eh adicionado nenhum usuarios, fiz o teste de acordo com o jeffestanislau pediu , e aparece o seguinte INSERT INTO funcionarios (nome, cargo, setor) VALUES ('', '', ''), nao funcionou, se alguem tiver uma dica ae valeu
[15] Comentário enviado por nandoxto em 07/01/2007 - 19:11h
Olá!
Eu trabalho numa ONG e estou fazendo um banco de dados para a mesma, eu fui fazendo os passos desse tutorial e gostei demais dele, porem está aparecendo um erro:
Fatal error: Call to undefined function: mysql_pconnect() in /var/www/config.php on line 9.
Estou precisando de ajuda.
Obrigado desde já.
[17] Comentário enviado por pxdelta em 11/01/2007 - 10:48h
Espero que o Jefferson informe se está ok...
Vamos a minha tese... kkk
Para que seja cadastrado os campos de nome, setor e cargo é precizo informar para o script enviardados.php quais são as variáveis do form no cadastrar.html que ele deve armazenar...
Que pega o que foi postado no form formCadastrarFuncionario e joga para as variáveis $nome, $cargo e $setor...
Assim o cadastro dos funcionários é efetuado com sucesso!!!
Da mesma maneira na busca
No arquivo obterdados.php após a linha
mysql_select_db('meubanco');
deve ser colocado mais uma linha
$busca=$_POST['buscar'];
para tando no arquivo buscar.html ficou assim
input type="text" name="buscar"
Ai a busca encontra o dado cadastrado..
Da mesma maneira no arquivo editardados.php após a linha
$update = "UPDATE funcionarios SET nome='$nome1', cargo='$cargo1', setor='$setor1' WHERE codigo='$codigo1'";
Perfeito é possivel editar os campos e salvar que funciona tudo corretamente...
..
Agora precizo de ajuda se alguem já viu mas se for cadastrado mais que 15 nomes o script não mostra a página 2 e dá erro na linnha
[18] Comentário enviado por nandoxto em 23/01/2007 - 18:36h
Olá Jefferson!
Consegui resolver o problema
Fatal error: Call to undefined function: mysql_pconnect() in /var/www/config.php on line 9.
Porém agora não consigo cadastrar outros funcionários.
As entradas nas tabelas ficam em branco.
Abraços.
[19] Comentário enviado por EnzOo em 19/04/2007 - 17:49h
Fala ae, ótimo artigo, só para complementar
Na parte onde tem:
/*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;
}
vocês devem acrescentar o get para pegar quando clicar.
o código vai ficar assim.
/*descubra o número da página que será exibida se o número da página não for informado, definir 1 */
$pagina = $_GET[pagina];
if (!$pagina) {
$pagina = 1;
}
Muito bom, nem usei todas as partes, só o listar mesmo.
[21] Comentário enviado por gzanatta00 em 26/04/2007 - 19:55h
amigo é o seguinte tenho um servidor debian, e os arquivos do diretorio da minha pagina esta dentro de /var/www, certo...dai eu abro a pagina pelonavegador, por exemplo, ao inves dele abrir a pagina empresa.php, ele pede pra salvar, sei que tem que instalar um componente mas nao sei qual, ja tentei varios e nada
Gustavo
[22] Comentário enviado por leandro_hamid em 13/09/2007 - 15:29h
Boa tarde pessoal!
Antes de mais nada quero agradecer pelo ótimo artigo, eu estou me iniciando em PHP e este artigo para mim esta sendo de fundamental importância.
Eu testes os scripts do capítulo "4.Uso de função" e ao executar o script nova_funcao.php me deparei com o seguinte erro:
"Fatal error: Cannot redeclare soma() (previously declared in C:\xampp\htdocs\Treinamento\funcao.php:6) in C:\xampp\htdocs\Treinamento\funcao.php on line 6
"
O que pode ter acontecido?Eu retornei no scrip funcao.php renommiei a variável $resultado para $resultado_da_soma e mesmo assim não resolveu, aguardo respostas e desde já agradeço.
[23] Comentário enviado por fabiano_shark em 13/09/2007 - 15:47h
Como a própria descrição sugere, você provavelmente deve ter declarado a função duas vezes. Acontece muito quando você declara esta função em uma página e dá "include" noutra que também tem esta função.
[24] Comentário enviado por leandro_hamid em 13/09/2007 - 16:25h
Muito obrigado pela ajuda faviano_shark, me desculpe pela ignorâncaia mas eu ainda não consegui identificar o erro.
Não consegui ver onde eu declarei a função "soma" mais de uma vez, o que eu percebi é que fiz chamadas desta função como especificado no exemplo do respectivo capítulo, peço encarecidamente ajuda, abraço.
[25] Comentário enviado por leandro_hamid em 13/09/2007 - 16:52h
Oi pessoal!!!Pra variar posto mais uma dúvida, iniciante é foda!!!rrsrsr(brincadeira)
Testando as intruções sql a partir do capítulo 5.Criando um banco de dados para uso em nossos scripts, mais precisamente as instruções com relação a criação de usuários para aceso ao servidor eu executei a instrução:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
[26] Comentário enviado por albert86 em 21/07/2008 - 15:47h
leandro_hamid, eu tb estava com esse problema, e consegui resolver da seguinte maneira:
Veja que com o comando show fields from user; aparecia pra mim o seguinte:
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
como vc pode ver há 26 termos do tipo enum('N','Y') , mais alguns outros. O que eu fiz então, foi acabar de preencher a instrução do insert da seginte maneira:
veja que eu coloquei 26 vezes 'Y', mais os ultimos campos preenchidos com seus valores default que vi na tabela acima. Ou seja, eu deixei o comando especificando todos os valores que na tabela teria que ser informada. Veja sua tabela com o comando show fields from user; e então preencha a instrução INSERT de modo a atender todos os seus campos.
[27] Comentário enviado por albert86 em 21/07/2008 - 15:50h
muito bom artigo jefferson. Eu lhe encorajo a dedicar-se na escrita de livros sobre as areas que vc curte. Vc tem uma boa didatica, e isso o levaria a ganhar um bom dinheiro com livros sobre informatica. É só uma dica mesmo. Você que decide. Mas talento pra tal vc tem. Parabéns!!!
[28] Comentário enviado por albert86 em 22/07/2008 - 13:44h
Estou com um probleminha no exemplo do referente artigo. Aparentemente eu estou conseguindo cadastrar os usuarios normalmente, mas quando visualizo os cadastros, o cadastro novo não aparece. Aparece sim um cadastro novo sem dados nenhum... ou seja, ele cria o cadastro só que não insere os dados nele. Aconteceu com alguém isso? e alguém sabe o que poderia ser esse probleminha??
[29] Comentário enviado por jeffestanislau em 22/07/2008 - 14:09h
albert86,
Vamos debugar seu código usando (echo e exit) nesta parte onde ele insere os dados no banco. Coloque assim:
No arquivo enviardados.php, insira um echo antes e um exit no fim da linha indicada.
//cadastrar cliente
echo $insert = "INSERT INTO funcionarios (nome, cargo, setor) VALUES ('$nome', '$cargo', '$setor')"; exit;
Desta forma, antes de inserir os dados ele irá te mostrar como está a query que irá fazer isso.
Verifique se os campos estão preenchidos corretamente. Caso não esteja, você deverá confrontar esta informação com o html que chama este arquivo, verificando os mesmos campos para saber se os nomes estão correlacionados corretamente.
Obs: Depois para o sistema voltar a funcionar, não esqueça de tirar o echo e o exit da linha especificada.
[30] Comentário enviado por albert86 em 22/07/2008 - 14:24h
então né jefferson... eu usei as dicas do pxdelta, e funcionou perfeito para o cadastro... mas ainda não esta funfando na hora de buscar um usuário... vou debugar sim na parte da busca, pra ver se os dados estão chegando como previsto... obrigado
[33] Comentário enviado por jarbasf em 14/07/2009 - 14:24h
jeffestanislau boa tarde, estou em dúvida quanto a consulta dos meus dados cadastrados. Veja bem, no meu banco eu preciso consultar entre datas, exemplo: "2009-06-01 a 2009-06-30" e também o código do funcionario, exemplo: 9999, tudo isso tudo numa página html.
-> Como eu criaria a tela de buscar.html?
-> O que poderia ser alterado no obterdados.php?
-> Devido ao grande volume de dados que seria visualizado, como ficaria a construção do editar.html?
[34] Comentário enviado por eduardosantiago em 24/07/2009 - 04:11h
Fala Rapa!!!
Cara, eu nâo sei nada de php mas como tenho q criar um página pra realizar testes de carga tô seguindo teu artigo. O meu nâo funcionou ainda. Ele nâo consegue adicionar. Tanto que na hora só aparece Principal e não diz se foi cadastrado com sucesso!!! O Que eu fiz de errado?
A unica coisa q eu fiz diferente foi criar o banco, tabela, inserir usuários.... tudo diretamente no phpadmin. Estou no aguardo!!!