Criando um banco de dados para uso em nossos scripts
Vamos utilizar agora os mesmos comandos que vocês aprenderam lendo os artigos
anteriores sobre banco de dados. Então, partindo do princípio que seu sistema
já está configurado adequadamente, entre no MySQL e comece a executar os
comandos abaixo:
Criando um banco de dados:
mysql> CREATE DATABASE meubanco;
Criando uma tabela:
mysql> CREATE TABLE funcionarios (
codigo int(5) NOT NULL auto_increment,
nome varchar(40) NOT NULL default '',
cargo varchar(25) NOT NULL default '',
setor varchar(25) NOT NULL default '',
PRIMARY KEY (codigo)
) TYPE=MyISAM;
mysql> INSERT INTO funcionarios (nome, cargo, setor) VALUES ('Jefferson Estanislau da Silva','Administrador','Depto Informática');
Nota: Como o campo "codigo" será automaticamente incrementado, não é necessário especificá-lo.
Bom, agora que já criamos um banco de dados, tabela e inserimos alguns dados, vamos a
uma questão muito importante, que é o usuário que poderá acessar, incluir e excluir dados desta tabela.
Importante: Lembre-se que o MySQL possui um bando de dados padrão e de controle chamado "mysql".
Acessando o banco de dados mysql:
mysql> use mysql;
Listando suas tabelas;
mysql> show tables;
Observe que dentre as tabelas listadas estão a User (responsável por definir o
acesso do usuário ao servidor do mysql) e a Db (responsável por definir o
acesso do usuário a um banco de dados específico).
Desta forma, iremos criar um usuário que terá acesso ao nosso banco de
dados e a tabela funcionário.
Listando a estrutura da tabela user:
mysql> show fields from user;
Observe que foi listado o privilégio de comandos como Select, Insert, Delete
e etc, onde deveremos indicar se nosso usuário poderá ou não se valer destes comandos.
NOTA: Conte quantos campos de tipo "enum('N','Y')" foi listado, pois observei
diferenças entre algumas distros. No Mandrake 9.1 onde escrevi o artigo anterior
existem 21 campos. No Debian onde estou escrevendo este artigo existem 14 campos.
Nota: Nos 3 primeiros campos estou inserindo informações de Host, Usuário e
Senha, para os demais estou dando a permissão para que ele possa usufruir de todos os comandos de manipulação.
Listando a estrutura da tabela db:
mysql> show fields from db;
NOTA: Da mesma forma que em User, conte quantos campos de tipo "enum('N','Y')" foi listado. No Mandrake 9.1 existem 12 campos. No Debian existem 10 campos.
Criando usuário para acesso ao banco de dados:
mysql> INSERT INTO user VALUES('localhost', 'meubanco', 'jeffestanislau', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
NOTA: Os 3 primeiros campos desta vez correspondem há Host, banco de dados e usuário.
Feito isso já estamos prontos para implementar o MySQL com o PHP.
[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!!!