Em nossa segunda aula sobre a criação de um CRUD com PHP e OOP faremos a criação da classe que irá servir como base para toda e qualquer classe necessária para manipular uma tabela do banco de dados.
Iremos ver como criar e manipular os dados dessa classe com exemplos práticos para que todos possam entender o funcionamento como um todo. Nesta aula apenas iremos testar a classe base, para que a partir da próxima aula possamos fazer nossa primeira interação com o banco de dados, a inclusão de um registro.
Depois de assistir, deixe um comentário com sua opinião sobre a aula, aguardamos sua participação.
Este post faz parte de uma série, confira tudo que já foi publicado sobre o mesmo assunto.
Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.
Atualmente temos 40 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.
MySQLi ou PDO
Respondervc pode postar um exemplo de cada do Mysqli e PDO ?
ResponderVocê pode buscar essas informações na documentação do PHP e então implementar no sistema conforme sua necessidade.
ResponderEstou com o seguinte erro e já refiz todo o código:
Fatal error: Can't use method return value in write context in C:\wamp\www\CRUD\classes\base.class.php on line 16
Por favor me ajude!
Bom dia, professor!
Estou na aula 02 do CRUD OOP:
apos o 1º teste para verificarmos o __construct do cliente; e em vosso teste não ocorre tudo ok e não é apresentada mensagem ( ECHO '???'), em teste ( visualizado duas vezes em vossa aula) não identifiquei o pq deste erro:
------------------------------------------
( ! ) Warning: mysql_close() expects parameter 1 to be resource, string given in C:\Program Files\VertrigoServ\www\projetos\crudgenerico\classes\banco.class.php on line 20
Call Stack# time memory Function Location
1 0.0040 363088 banco->__destruct( ) ..\banco.class.php:0
2 0.0040 363120 mysql_close ( ) ..\banco.class.php:20
me ajude!
ResponderDesculpa, mas a função addCampo e setValor no arquivo Cliente_class não estão fazendo a mesma coisa?
ResponderÓtima aula, e como você mesmo diz: Taí o bichinho!
tudo funcionando corretamente, como manda o figurino.
Se puder me responder só pra esclarecimento de raciocínio:
Em html, tenho a condição de estilizar minhas páginas em um arquivo externo ("estilo.css"), neste caso, posso entender que o sentido seria basicamente o mesmo?
Como estou iniciando agora, na área da programação e esse curso já tem um tempo, pergunto:
Há alguma mudança nesses códigos, embora em localhost esteja funcionando corretamente?
De momento agradeço pela seriedade e qualidade dos conteúdos.
até+
ResponderSomente há necessidade de mudança de código se alguma função for descontinuada em versões futuras do PHP.
ResponderObrigado pela atenção RB, dúvida esclarecida.
ResponderCara, primeiramente parabéns e muito obrigado por suas aulas, estão me ajudando muito.
Não pedindo muito, teria como enviar o script desta.. Pois está dando um erro na linha 27 do banco.class e já verifiquei uma centena de vez no meu e está correto aqui!
ResponderCerteza que é um erro? Sugestão de leitura: http://dev.rbtech.info/entendendo-e-interpretando-erros-em-scripts-php/
ResponderOlá Ricardo.
É possivel utilizar a propiedade campopk com chaves compostas ?
Caso não, poderia dar uma dica por onde seguir para que possa ser possível o uso de chaves compostas ?
Obrigado,
André Ventura
ResponderEstes exemplos não foram pensados para trabalhar com multiplas tabelas ou PKs, mas tudo é possível se planejado. Eu apenas quis mostrar possibilidades com estes vídeos, agora fica a critério de cada um queimar alguns neurônios e montar classes mais complexas.
ResponderOlá Ricardo, Parabéns pelo seu trabalho e a excelência didática de suas videoaulas. Já sou inscrito no seu canal e leitor se seu blog.
Agora venho com uma dúvida e uma sugestão.
A dúvida:
Como eu poderia executar o inserir() com múltiplos objetos?
Teria que adaptar a função para aceitar? ou teria que modificar a estrutura do array contido no bloco do IF em cliente.class.php?
Bem, eu fiz uma gambiarra.. mas não sei se é o melhor jeito.
Sugestão:
Nos métodos da classe base.class.php, você poderia acrescentar um return $this para poder encadear os métodos!
Por gentileza Veja o jeito que tentei executar:
Ps: não ocorreu erros, inseri os 2 registros... mas tive que instanciar 2 objetos da classe.. este é o melhor jeito?
Fico no aguardo.
ResponderO método criado no curso permite a inserção de registros únicos, para trabalhar com processamento em lote sugiro que crie um método específico e use arrays de dados para fazer a inserção.
ResponderBoa Tarde Ricardo!
obrigado pelas VA's e parabens pelo seu trabalho...
o meu construtor da classe banco não esta iniciando, na verdade eu recebo um erro fatal informando que o construtor não pode ser chamado já verifiquei a codificação toda e principalmente onde está gerando o erro.
obrigado!
ResponderProfessor muito obrigado pelas video aulas, estou reimplementando alguns scripts no site que eu mantenho, pois o mesmo não tem nenhum tipo de segurança, agora já estou conseguindo reescrever os arquivos que interagem com o banco, muito bom.
Essa semana talvez eu possa ter algumas dúvidas mas por enquanto é só um muito obrigado.
Olá Ricardo. Estou com um problema que surge mais ou menos aos 20min de vídeo, quando você atribui os valores ao array cliente. Cada vez que eu atribuo um valor ao objeto cliente, por exemplo, não aparece nada na tela. Já de eu apenas criar o objeto e dar um print_r, ele mostra os valores do que foi preenchido. Alguém saberia me dizer o que pode estar ocorrendo?
ResponderSugiro uma verificação de seu código, o resultado obtido deve ser o mesmo mostrado no vídeo.
Respondernão estou conseguindo usar o delecampo, quando eu uso ele aprece Undefined property: Cliente::$campo_valores e Warning: array_key_exists() expects parameter 2 to be array, null given já revi o video muitas vezes não sei o que esta errado
ResponderOlá Ricardo, parabéns pelo conteúdo aqui apresentado, cada assunto aqui apresentado é melhor que o outro, estou aprendendo muito com suas Vídeo Aulas, continuem assim, um forte abraço!
ResponderRicardo, eu novamente... já estou virando quase um flooder de comentários. Mas vamos lá. Se eu quiser unir os arquivos banco e base vou estar errando muito? É que sei la... require daqui e require de la, um que puxa o outro que é abstrato do outro (lol) complica demais pra mim que estou começando, e acho q se unir os 2 vai ficar mais fácil pra entender. Vai ficar muito errado se eu colocar todas as propriedades no inicio do arquivo banco e todas as funções logo abaixo?
ResponderÉ que estas duas classes apesar de terem ligação, no meu ponto de vista não devem ser uma só, pois uma delas é a comunicação com o banco e outra é a base para a criação das classes relativas a cada tabela do seu sistema.
ResponderOlá boa tarde Ricardo. Venho lhe parabenizar pelas vídeo aulas, estão excelentes.
Estou com uma dúvida ,coloquei os codigos tudo certo mas na hora que eu vou dá um
$cliente ->addCampo('bairro');
vou ver lá na pagina de internet e aparece:
[nome] =>
[sobrenome] =>
[1] =>
Em vez de aparecer o nome do campo [bairro] aparece [1].
Estou preso nesta parte e queria dá continuidade nas VA.
já vi e revi a 2ªVA , se puder me ajudar serei muito grato !
Não é preciso responder minha pergunta mais, pois achei o erro, simplesmente na parte de validação e vez de eu colocar !=(diferente de) eu coloquei =! .
ResponderDeve haver algo de errado com algum de seus arquivos, pois não ví até hoje acontecer o problema descrito.
Responderops consegui achar o meu erro, tinha usado parentens no logar de []
valeu, estou aprendendo muito aqui...
ResponderBoa noite primeiramente parabéns pelo material, estou aprendendo muito em seu site.
ao testar a classe cliente apresenta um erro "Can't use method return value in write context in C:\wamp\www\crud2\classes\base.class.php on line 13"
na classe base linha 13 tenha o metodo abaixo:
código fonte excluído pois não foi postado conforme as regras
Note que não usei : apos if():, pois no dreamweaver não permitiu. poderia dar uma ajuda?
obrigado
ResponderBoa tarde, Ricardo
estou na segunda aula já olhei todo o código e esta dando este erro:
Catchable fatal error: Object of class clientes could not be converted to string in xxxclassesbanco.class.php on line 54
$sql .="VALUES (";
for($i=0; $i<count($objeto->campos_valores); $i++):
$sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ?
$objeto->campos_valores[key($$objeto->campos_valores)]:
"'".$objeto->campos_valores[key($$objeto->campos_valores)]."'";
o que será?
ResponderApague seu código e cria novamente as funções onde o erro é apresentado que você irá descobrir o que fez de incorreto em sua codificação.
ResponderValew Ricardo analizando aqui em casa com mais calma era problema de BIOS mesmo.
Estava errando nesta linha
if($campo !=NULL $$ $valor !=NULL): -- Errado
if($campo !=NULL && $valor !=NULL): -- Certo
Está ok até aqui, vou pra VA 3. Obrigado pela atenção.
ResponderBoa tarde a todos.
Estou acompanhando as vídeos e na hora de fazer o testa desta 2ª VA não aparece nada no navegador.
A tela abre em branco. Não dá nenhuma mensagem de erro e fica toda branca. O que pode estar acontecendo de errado?
Já revi a VA umas 3 x e não encontrei o problema.
Você deu o comando para mostrar algo na tela? Se você não pedir pra dar um echo nas funções como fiz no exemplo a tela ficará toda vazia mesmo, pois nada é mostrado ao conectar com o banco.
ResponderProfessor, ADOREI suas aulas! Gostaria de saber quando será a aula 3 da CRUD Genérico... Estou ansioso! Ficou ótimas e estou trabalhando em algo semelhante.
ResponderEverlon, na próxima semana teremos mais aulas, serão 5 aulas no total e pretendo postar 2 na próxima semana.
ResponderOpa! Legal!!! Vou aguardar!
Ps. Marquei pra receber um email quando tiver comentário aqui, mas nao foi nenhum avisando q vc respondeu...
ResponderSua inscrição está ok e o email saiu do nosso servidor, por favor, verifique se seu filtro de spam não está bloqueando o recebimento de nossos emails.
ResponderSaudações, professor Ricardo.
Primeiramente deixe-me parabenizá-lo por suas aulas de excelente qualidade.
Pra mim foi um achado neste ano que passou ter conhecido seu site.
Tenho uma dúvida e sugestão para essas agora de CRUD Genérico.
Como trabalhar com duas ou mais tabelas?
Pra seguir o exemplo que está usando da tabela clientes, imaginemos que tivéssemos mais uma tabela grupos (id_gropo, grupo) com os seguintes valores: Física e Jurídica.
Eu faria algo assim:
$sql = "SELECT c.*, g.* FROM clientes c, grupos g WHERE c.id_grupos = g.id_grupos ";
E aí, como ficaria esse caso?
Abraço e meus votos de cada vez mais sucesso!
ResponderOlá Wilson, até que enfim alguém faz um comentário sobre o conteúdo, já estava ficando preocupado pois achei que o conteúdo estava ruim...
Bom vamos à sua dúvida: confesso que já pensei no assunto mas não montei a lógica do mesmo ainda, portanto minha idéia inicial seria criar uma classe genérica para consultas, implementando nesta classe métodos capazes de ler todos os dados vindos de arrays, como um array contendo os nomes das tabelas das quais você precisa recuperar os dados por exemplo.
Outra possibilidade é fazer na classe base uma verificação para saber se os dados são apenas strings ou arrays e tratá-los da melhor forma para montar o select.
Mas somente fazendo alguns testes para chegar à uma conclusão...
Responder© 2008-2023 - RBTech.info | Todos os direitos reservados | Hospedado por Innova Host
É proibida a reprodução total ou parcial de qualquer conteúdo deste site.
Olá ricardo,parabéns pelas aulas. Sei que as aulas são de 2012 mas vc poderia me ajudar, sou iniciante e ao replicar as aulas os comandos mysql_connect está descontinuado, neste caso o que deveria utilizar no lugar ? vlw