Curso PHP MySql. Conexión a BBDD utilizando Clases POO. Vídeo 57
Вставка
- Опубліковано 19 вер 2024
- Comenzamos a ver en este vídeo cómo conectar con BBDD utilizando Programación Orientada a Objetos creando clases.
Para más cursos. ejercicios y manuales visita: www.pildorasinf...
Que haría yo sin los comentarios de todos los que están aprendiendo cuando me salen errores, que maravilla! Y que excelente curso!
me habia aparecido un error pero lo pude solucionar cambiando el nombre del constructor
uso php version 8.0.3
este es el codigo de conexion por si lo necesitan
y muchas gracias por los videos, me han servido mucho para aprender mejor este lenguaje
Buenas!
Lo primero agradecer el gran aporte que das!
CÓDIGO OBSOLETO:
1- Los constructores se llaman __construct() también admite __constructLOQUEQUIERAS()
2- El método get le pasa casi lo mismo, se debe llamar __get() o __getLOQUEQUIERAS() [de momento no está obsoleto]
3- En el método get no me hace bien la consulta y tuve que llamar a la funcion mysqli_query($link) Pongo código:
$consulta = "SELECT * FROM ARTICULO";
$resultado = mysqli_query($this->mysqli, $consulta);
$datos = mysqli_fetch_all($resultado,MYSQLI_ASSOC); --> MYSQLI_ASSOC [Sirve para guardar el nombre de las columnas]
4- Importante poner MYSQLI_ASSOC en el paso anterior sino deseas tratar el array con índices en vez de con nombres (para el caso foreach)
Dejo esto por aquí porque he estado un rato buscando y no quiero que les pasen a otros igual que a mi
PD: Sigue asi! Eres un crack! para cuando un curso de ¿criptomomedas? Sería de los primeros en verlo!
saludos y gracias por la intencion, pero en mi caso el codigo del profesor funciona perfectamente lo unico a tener en cuenta es cuando llamamos al constructor de la clase padre debemos poner dos guiones bajo osea (_ _) claro sin espacio. SIGUE ADELANTE JUAN, SALUDOS DESDE REP. DOMINICANA
buenas amigo, use el codigo que pones pero me pone un error de que se esta llamando al metodo nulo, sabes a que podria ser; adjunto codigo
$consulta="SELECT * FROM hoja1";
$resultado=mysqli_query($this->mysqli,$consulta);
$skaters=mysqli_fetch_all($resultado,MYSQLI_ASSOC);
return $skaters;
@@fabiancordoba435 Hola Fabian!
Pues lo primero que tienes que comprobar si la tabla a la que haces referencia se llama exactamente hoja1
Lo segundo a comprobar es el resultado de la función de 'mysqli_query':
$consulta="SELECT * FROM hoja1";
$resultado=mysqli_query($this->mysqli,$consulta);
if ( !is_countable($resultado) || count($resultado) mysqli->error() );
$skaters = null;
else
$skaters=mysqli_fetch_all($resultado,MYSQLI_ASSOC);
return $skaters;
Si te devuelve bien la consulta ( con mas de una fila ). El error estaría en el 'mysqli_fetch_all()' puedes probar a poner "mysqli_fetch_array()" para que te lo devuelva en array.
Un saludo y que vaya bien la programación!
Sergio Sanz Arroyo el error me lo lanza en la línea del query, $resultado=mysqli_query($this->mysqli,$consulta); , y la tabla se llama hoja1, de todas maneras muchas gracias por la explicación, buscare un poco más de información para resolverlo
@@fabiancordoba435 Pues entonces está clarísimo! ahí hay un error en el parámetro $this->mysqli tiene que estar en null o algo así, revisa que la conexión esté correcta (nombre , contraseña del usuario de la bbdd y nombre de la bbdd ) También tienes que comprobar si ese usuario tiene permisos en esa bbdd.
Te dejo un ejemplo de donde debe de estar fallando:
$this->mysqli = mysqli_connect("localhost", "user", "password", "dbname");
Debido a que ha habido ciertos cambios en PHP, dejaré aquí el código que funciona en 2020:
Para el archivo de config.php:
Archivo de conexion.php:
Archivo de devuelve productos.php:
Y finalmente el archivo index que yo decidí llamar muestraProductos.php:
Document
Yo llevo todo el curso muy bien hasta este punto no pude conectarme
Yo no terminé el código solo me queda ennla ejecuccion de la primer clase no pude conectar y deje el tema
Porque si hago fallos en name y password y la funcion constructor no responde no tiene sentido seguir el codigo
Gracias, me ahorraste horas de cabeza contra la pared
Gracias.
Vídeo de categoría, cuidado que es caviar del bueno.
Y comentarios de nivel.
Saludos.
Holas, esta clase tambien no me funcionó, y pasé varias horas en la noche intentandolo, recien al dia siguiente lo resolví viendo los comentarios; es por los constructores que ahora se escriben diferente, sigan la recomendacion de Miguel Reyes; por otro lado saludo al profesor, muy bueno sus cursos, de los tantos tutoriales que veo este es de los mejores, su dedicación y paciencia son de los que se desea en un profesor.
Fue una buena combinacion aprender español y estudiar php en tu canal.
Después de barrer UA-cam en busca de cursos dedicados a PHP y mySQL, tengo que decir que este es uno de los cursos más claros y bien explicados que hay, ¡enhorabuena!
Más adelante, ¿tienes la intención de explicar el tema de sesiones, usuarios, roles, perfiles, etc...que tanta faena da?
¡Un saludo y sigue así!
+Thierry Henry Hola !! Gracias por el comentario. Sí, es mi intención tratar todos estos asuntos ya que me preguntáis mucho por ellos. Más adelante los veremos. Un saludo
Se agradece como siempre don Píldoras , comento todos los días a esta hora , porque llego del trabajo tarde y siempre me doy animo para aprender algo nuevo y en parte es que sus vídeos son fáciles de digerir , usted explica todo con mucho detalle no quedando nada a la imaginación.
Saludos como siempre señor.
Pues muchas gracias como siempre por ver mis vídeos. Yo por desgracia no puedo leer todos los días vuestros comentarios porque son muchísimos. Pero a veces os leo. Un saludo!
MAESTRO, le agradezco hace 4 años deje de programar, y se olvido un poco, y con este video he vuelto a la luz, jejeje gracias.
Excelente cada ves mas contento con los conocimientos adquiridos profesor, para los que no lo sepan los marcadores solo funcionan en la libreria PDO, intente en MySQLI con POO ya tenia un buen dolor de cabeza, las compare y en efecto los marcadores no estan en la librería MySQLI, Saludos!
Excelente, espero con ansisas termine este curso para entrar al campo laboral, muchas gracias juan
Gracias por la dedicacion al hacer los videos, estoy aprendiendo estos conceptos en el 2019 y con 31 años encima. Un Saludo desde perú
Excelente 🤗 usted es un maestro. Lenguaje sencillo y fácil de entender. Felicidades. Me gustan tus cursos.
Juan e tomado muchos cursos como este, pero como lo explicas se ve muy facil creo que solo tenia conocimientos de sql server pero ahora con este corso ya puedo decir que ya se un 30% de programacion de php y mysql no lo tengo dominado pero si se como un 60% ahora quiero hacer un proyecto de punto de venta y quiero regalar el codigo para las pequeñas empresas ya que como yo que soy empresario checas un software primero son muy caros y despues todos estan plagados de muchos errores, procedimientos incompletos o procedimientos insertados especialistas para cada empresa sin analizar como muchos procedimientos pueden estar en las mismas empresas solo con habilitar o deshabilitar las opciones pero bueno ya no te distraigo a ver si puedes crear un curso para generar un punto de venta en la que podamos intervenir para generar un punto de venta para pequeños empresarios, no que contemple todo solo operacion de venta, bueno te felicito por el canal espero en poco tiempo meterme a uno de tus cursos para aprender aun mas cosas
Excelente curso. Años después me ha servido mucho aunque he consultado el manual de PHP para actualizar algunas cosas que han cambiado en las nuevas versiones. Pero sigue siendo excelente. Saludos y Gracias.
Hola Juan, me he sumado a finales de diciembre a este curso y ya me he puesto al día con el último vídeo. Permìteme felicitarte por tu excelente forma de enseñar. Te deseo mucho éxito profesional. Quedo pendiente por supuesto de tu próxima entrega. Saludos.
+Harrinson Riascos Torres Muchas gracias por el comentario y por seguir mis vídeos. Me alegro de que te gusten. Un saludo!!
gracias, llevo ya 21 días recibiendo sus clases, muchas gracias !!!!
Hola Juan y a todos los compañeros, no acostumbro a escribir pero creo que debo dar de lo que he recibido. Primero que todo; muchas gracias Juan por todos los conocimientos compartidos otra vez, en el vido siguiente ya comente por primera vez y este es el Segundo comentario, gracias Juan y Dios Te Bendiga.
Bien, para los que han tenido problemas con la connexion (fetchAll(PDO::FETCH_ASSOC);) y (foreach{}) aqui les voy a dejar todo mi codigo para que lo analizen y puedan copiar, probado en todas las versiones de PHP (en el siguiente video en mi comentario el codigo esta mucho mas mejorado):
_____________________________________
_________________________________________________
____________________________________________
Muchas gracias por el comentario y por el aporte. Un saludo!
muchas gracias
muchas gracias por su tiempo aprendi mucho con estos videos... siga se lo agradecemos
+Clan DA'XE Gracias !! Un saludo
Un saludo desde Costa Rica !! excelente todos tus cursos en especial este de PHP.
+michael jimenez Gracias !! Un saludo
Profe excelente curso, es completamente distinto a todos los demas y la forma de explicar estupenda.. queria comentar algo y es que las consultas PDO son mas lentas que las Mysqli. PDO el que mucho abarca poco aprieta, al ser generico para distintos tipos de base de datos hace que pierda un poco de velocidad. saludos.
Excelente curso , eres buen instructor gracias por tu aporte me han ayudo mucho.......
+carlos rodrgiguez Gracias !! Me alegro de que te guste. Un saludo
Hola Juan he seguido tu curso desde el inicio hasta vídeo actual y puedo decir que eres muy buen profesor, quiero comentarte que tuve problemas donde me marcaba esta linea $users = $result->fetch_all(MYSQLI_ASSOC); de la clase usuarioModelo, investigue y aplique varias posibles soluciones sin lograr nada, tu ve que modificar esa linea de esta manera ya vista $result=$this->_db->query($sql); y cambiar algunas cosas incluyendo el foreach por un while y creeme si que funciono, me di cuenta que he aprendido y comprendido cada uno de tus lecciones. Muchas gracias por tu voluntad de enseñar hasta la proxima
+luis miguel lopez Gracias por el comentario. Me alegro de que te guste el curso. Esa es la verdadera forma de aprender, investigando uno mismo. La verdad ahora no tengo idea de por qué no te funcionó la instrucción. Pueden ser muchos los motivos como por ejemplo que estés utilizando una versión diferente de PHP a la que utilizo yo... pero habría que mirarlo. Un saludo!!
En mi caso me daba un error "Fatal error: Call to a member function fetch_all() on boolean in" porque la instruccion SQL tenia el ateristo (*) despues de la palabra FROM.
Saludos
Excelente curso Juan, sencillo y muy bien explicado… Te felicito…!!
Me encanto la parte de POO, espero continúes más adelante y puedas explicar los temas de CRUD con POO, sesiones, usuarios, etc.. Saludos
+Ing. Carlos Becerra Hola !! Gracias por el comentario. Es mi intención hacerlo. Un saludo!!
como siempre excelente Juan !!
Hay que re-rescribir en la version mas moderna de PHP:
$this->conexion_db = new mysqli(DB_HOST, DB_USUARIO, DB_CONTRA, DB_NOMBRE);
Gran curso.
Gracias Juan, muy bien explicado, como siempre,. Gracias.
+Quique Roca Gracias !! Un saludo
si alguien ve este excelente video, tantas lineas de codigo se prestan facilmente para errores de digitacion,,,, yo tuve uno muy tonto en el config.php y al haber error alli , empieza a mostrar erores por montones en los demas archivos php, asi que revise el config.php y habia puesto: define('DB_CONTRA',' '); ..... si miras bien habia dejado un espacio entre las comillas simples donde debe ir la contraseña; es muy poco notorio pero creanme, el tiempo que quita notarlo es muy grande.
Gracias por el vídeo , gran aporte.
Gracias !! Un saludo
Ya te extrañaba, que bueno que estás de vuelta Juan
+Ga Komix Gracias !! A ver si me dejan un poco en paz con temas de trabajo y le puedo dar un impulso al canal. Un saludo
+pildorasinformaticas Imagínate Juan, ¿que tan feo será eso del trabajo?....¡QUE HASTA PAGAN POR HACERLO!...jejejeje....Saludos mi amigo
Tuve una duda en la clase Conexion con respecto a $this->conexion_db... tenía la duda de porque no se usaba la variable conexion_db con el símbolo de $ antes, y comparto lo que pude encontrar al respecto.
Cuando uno usa $this en POO:
Uno usa $this para hacer referencia al objeto (instancia) actual, y se utiliza self:: para referenciar a la clase actual. Se utiliza $this->nombre para nombres no estáticos y se utiliza self::nombres para nombres estáticos.
programacion.jias.es/2012/11/poo-en-php-this-parent/
Espero les sirva...
Y Gracias profe por sus clases. Saludos desde Perú!
muchas gracias, espero sigas haciendo tutorial por un largo tiempo, saludos
+Jose canevaro vargas Esa es la idea !! Gracias por seguir mis vídeos. Un saludo
muchas gracias por tus videos juan estan muy bien estructurados
PODRIAS DAR UN CURSO DE PATRON MVC CON PHP POR FAVOR, ERES UN GRAN PROFESOR HE ESTADO APRENDIENDO DEMASIADO EN TODO ESTE TIEMPO MUCHAS GRACIAS, SALUDOS DESDE PERÚ, REALMENTE VALE LA PENA INVERTIR TIEMPO MIRANDO TUS VIDEOS, GRACIAS POR TU ENSEÑANZA Y TU TIEMPO EN HACER ESTOS VIDEOS :)
Hola !! Gracias por el comentario. Sí, es algo que abordaré en el futuro en este curso. Un saludo!!
+pildorasinformaticas Eres un gran profesor :)
Gran clase! muchas gracias!
Eres un buenazo :-), mil gracias, tenia error en el __construct (es _ _ ) jejeje como 1 hora para entenderlo y eso porque leí los comentarios, caramba no poner atención en una sola linea, como se complica uno la existencia
Excelente curso nivel premium!
Hey muchas gracias por todos los videos que hiciste de este curso! Creeme que a mi corta edad esto me es de mucha utilidad ahora en día, felicidades en serio y espero que Dios colme tu vida de bendiciones masivas!
Solo quiero pasar a preguntar tu opinión acerca de esta forma de escritura de código php, que para mi ver es más fácil que estar imprimiendo tablas, y da el mismo resultado:
Conexion con clases POO
Un amigo me aconsejó que escribiera así, y quisiera saber si para ti es más beneficioso o es peor. Espero tu respuesta, ¡Bendiciones en tu día!, te saludo desde El Salvador
Sus vídeos son muy buenos profesor, muchas gracias por compartir los cursos y su conocimiento :) , seria genial que abordara el tema de maquetado para wordpress o otros en photoshop cs6
Muchas gracias por compartir tus conocimientos, explicas muy bien.
Hola Juan doy fe que tus cursos son muy buenos, no había tenido error hasta este capitulo (57), verifique config.php las Variables define las coloque con comillas dobles y fue un error menos, por que lo verifique cambiando el nombre de la DB y me arrojo el numero del error. Todo lo demás te puedo asegurar que esta igual y no pasa nada. en index.php en la primera zona PHP lance un echo para saber por donde voy y cuando lo coloque después de llamar al metodo get_productos no me escribe el echo. Verifique la función y esta tal cual como en el Tuto, Lo deje así y seguí viendo el CAP (58) a ver que pasaba ¿ Porque en el CAP (58) cuando entras a devuelveproducto.php en la funcion get_producto tienes en una linea $resultado.... en la otra $productos...... y en la ultima $resultado ..... y en CAP 57 esta diferente? Gracias
me pasa lo mismo..llevo una hora revisando y nada.
Muchas gracias por los videos, para mi esta el video 45 termino el curso ya que esto es de preferencia l, además no es muy amigable esta sintaxis
Excelentisimo video. Pelos como escarpias!
Buenas!!, siempre he tomado sus cursos como consulta con temas que no se, en este caso me gustaria recomendar que integre crear API Restful con PHP. Tengo que hacer algo similar para un proyecto y no tengo idea de como hacerlo, lo busque en este tema de php porque usted es el profesor que mas entiendo pero creo que no esta.
Gracias!
Muy bueno excelente , espero ahora con en PDO
+Jhon Jonny Giron Urbano Gracias. En breve lo veremos. Un saludo
Hola, antes que nada gracias por los tutoriales, estan muy bien explicados.
Espero me ayude en lo siguiente.
estoy usando this->conexcion_db->error; para obtener el mensaje de error de mi consulta (he forzado yo el error )
sin embargo no logro obtener dicho mensaje, ya que se me retorna un string vacio, mismo caso para this->conexcion_db->errno; siempre me regresa 0. el objetivo es tener un log de errores.
gracias.
pd: $this->conexcion_db->connect_errno y $this->conexcion_db->connect_errno funcionan correctamente
Buenas tardes, un saludo desde Venezuela, excelente curso, muchas gracias por compartir tus conocimientos a quienes comenzamos en este mundo, tengo un inquietud. Al final de este video utilizas un ciclo foreach para poder mostrar el contenido del array asociativo que tiene almacenado los datos de la consulta SQL, cual es la diferencia entre si lo colocas de esta forma:
foreach (expresión_array as $valor)
sentencias
o asi:
foreach (expresión_array as $clave => $valor)
sentencias
Ademas tambien me comenta que esta depreciado (deprecated) usar el mismo nombre para la class y la function.
Gracias por el video :) Y el curso.
hay un problema con la definición del constructor hay que ponerlo __construct (ojo doble _ _ ) en conexion.php y devuelvep...php para que funcione
A mi me funciona perfectamente con el nombre de la clase como constructor
oh bro. muchas gracias estaba reventandome la cabeza.
Gracias, llevaba horas buscando el "error", no sé porqué sucede eso, pero gracias.
eres un crack! (3 hrs buscando pq me salia error 500)
Hoy si tengo material para practicar duro duro
Excelente curso profesor!! Tengo una pregunta: al final, ¿Qué es mejor usar: PDO, POO o como inicialmente nos enseñó a conectar a bases de datos?
Hola profe, mi más sincera enhorabuena por tu canal. Tengo una duda, ¿el this dentro de una clase no hacía referencia al objeto? Es que en el vídeo dices que hace referencia a la clase, en este caso el que haría referencia a la propia clase sería el self, ¿es así? o estoy mal informado. Es que creo que fue eso lo que explicaste en vídeos anteriores de POO. Un abrazo y decirte que me encanta como explicas las cosas.
Hola Juan Buenos días... Juan como siempre agradecido con tus cursos, me sirven mucho. Mi pregunta es, que funcion cumple la palabra return en el constructor de la clase Conexion... Nos saca del programa o que valor esta retornando. Muchas gracias
Buen video a seguir estudiando
Eres un genio
He creado, revisado y contrarevisado el codigo y me da sistematicamente este error:
Fatal error: Uncaught Error: Call to a member function query() on null in C:\apache24\htdocs\poohcendo\DevuelveUsuarios.php:14 Stack trace: #0 C:\apache24\htdocs\poohcendo\index.php(4): DevuelveUsers->get_users() #1 {main} thrown in C:\apache24\htdocs\poohcendo\DevuelveUsuarios.php on line 14
ME PASA LO MISMO
Según yo (soy principiante en esto de programar) tiene varias cosas que ya declararon obsoletas en PHP, por ejemplo lo de llamar igual la clase y el constructor, eso marca error. y yo estoy igual, no me funciona el código.
Es por la forma de declarar el constructor. Adjunto el código para que prueben:
Código de conexión:
Código para devolver productos:
Saludos Profe, al final del video metes los elementos dentro del ciclo foreach y así durante todo el curso, esto estaría creando una tabla por cada registro, no una única tabla para todos los registros no ?
Ya no recuerdo el código de este vídeo pero si es como tú dices, efectivamente crearía una tabla a cada vuelta de bucle. La solución sería fácil: sacar las etiquetas table del for-each dejando en este únicamente las tr y td. Un saludo!!
Estimado Maestro, esta es una petición especial para cuando llegue el momento de hacer el crud si es posible que nos permita modificar por ejemplo el país de un producto y que este este enlazado a una tabla de países con sus respectivos indices y así poder utilizar el select de html, yo lo estoy haciendo con todo lo que tu nos has explicado con una tabla clientes y cuidades pero no me resulta cuando intento modificar un campo de un select. saludos
+sergio pizarro ¿Con un Select? Será con un Update ¿no?
ayer retome el tema y pude corregir el problema, no me actualizaba ya que la relación de las tablas estaba invertida, muchas gracias por tu preocupación en responder.
Para los que les genere el código error en la consulta , buscando en páginas encontré esta solución $this->cnx_db=new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PASS);
Buenas profesor: Estuve probando el codigo del video pero adaptándolo a otra tabla de personas mas no de productos, obviamente teniendo cuidado con los nombres de los campos. Sin embargo al momento de usar los echo que muestran los registros, coloque los nombres de los campos en mayúsculas y marca error, no muestra los resultados. La solución fué escribir correctamente los nombres de los campos tal cual están en la base de datos. Quiero decir que es sensible a las mayúsculas y minúsculas.
Sí, es un buen apunte el que haces. Hay que tener cuidado con los campos case sensitive. Un saludo!!
comentarios que salvan vidas y no permiten perder la cordura jeje, gracias por el aporte
En vez del if dentro del constructor en el archivo conexión puedo usar un try and catch para comprobar la conexión cierto?
Tuve un maestro en la universidad que quería que programáramos como el quería, pero jamas nos decía como el lo quería. Tambien recuerdo que llegamos a crear hasta 4 veces el mismo programa de maneras diferentes y jamas era la manera en que el quería... pero el jamas nos decía como lo quería XD jaja solo decía que así no era
:))) Yo siempre que digo que en programación hay varios caminos para llegar a Roma. Hay caminos cortos, sencillos y directos y caminos más largos y difíciles. Pero mientras lleguemos a Roma cualquier camino será válido. Si tu programa funciona correctamente, tal vez no tenga el código más optimizado, pero el código será correcto igualmente. Un saludo!!
Antes usaste objetos con con la forma procedimental ¿a eso se le puede llamar POO? o para que sea POO se tienen que usar Clases. ¡Gracias por el Curso Sensei y un saludo desde Venezuela!
Sabe profe Juan he leido la documentacion... y dice que en PHP 7 se considera codigo OBSOLETO escribir el nombre de la clase para constructor de la clase... dice que se usa __construct para definir el constructor de la clase
Efectivamente así es. Y lo digo más adelante en el curso. Tener en cuenta que este vídeo hace ya mucho tiempo que se grabó. Un saludo!!
Iba a responder lo mismo jeje pero ya me ha aclarado las dudas...
Buenos días profesor!! espero pueda aclararme esta duda, lo que estabamos haciendo en los videos anteriores con la conexion con PDO, y mysqli usando las clases con el operador -> no era Programación Orientada a Objetos ya? es que como dices en este video que la vamos a comenzar a ver¿? que diferencia tiene además de que en este creamos nuestras propias clases?
Sí, efectivamente cuando utilizamos el operador -> estamos utilizando programación orientada a objetos. El tema es que no la estamos viendo en toda su extensión ya que la POO conlleva también utilizar características como la herencia, la encapsulación etc. Y eso es lo que se ve en la parte dedicada a la POO dee este curso. Un saludo!!
Vale todo claro!! graciaaas!!!
Profesor tengo varias dudas, una de ellas es al momento de colocar require ("config.php"); ahi lo colocas con paréntesis y en los otros dos require los dejas con solo las comillas dobles como es el caso de require "Conexion.php"; y de require "DevuelveProductos.php"; ¿Afecta en algo que sea con los paréntesis o sin ellos?
Es muy raro pero el salto de linea hace que no se me imprima nada en la pagina. Me he vuelto loco buscando el fallo y era eso.
Para el problema de (fetch_all(MYSQLI_ASSOC)) que les salga pueden simplemente actualizar el PHP a la version 7 , a mi me funciono ya que en la version php 5 .4 me salia error
una ayuda, me sale : "aviso: índice no definido", pero cuando uso var_dump($elementos), si funciona pero con la tabla no. Gracias
Buen video, tengo una duda respecto a las clases que creaste. Es necesario abrir y/o cerrar las conexiones a la base de datos en los ejemplos de tu video?
Saludos!.
+Miguel Angel López Necesario no. Recomendable sí. Un saludo!!
Gracias, saludos.
Profesor cual es la diferencia entre definir las constantes asi define('name','value') o Const name = 'value'
una consulta ¿si en vez de heredar de la clase conexión se crea un objeto o una instancia estaríamos ejecutando de la misma forma el constructor de la clase conexión?, siempre me da problemas el saber cuando usar la herencia, porque de igual forma si se crea una instancia de la clase se tiene acceso a sus métodos y atributos son pequeñas las cosas que cambian como el hecho de las variables protected y la sobre escritura de métodos.
si justamente ese no es el problema, el problema esta en esta linea
$resultado=$this->conectar_bd()->query($sql); me arroja error Call to a member function query() on null
el metodo conectar_bd debe ser y lo hice private ,para que cuando llame funciones del controlador no me aparesca este metodo
Pues no caigo ahora mismo en qué puede estar causando el error...
Si lo hiciste private no puedes usarlo en la clase Devuelveproductos ya que queda encapsulado en la clase conexion por eso el profe lo ah hecho protected paraque pueda usarse conectar_db en ambas clases
me parece mucho mas dificil el metodo poo que el otro no se. si este metodo es casi igual que copiar y pegar pero con un monton de flechis -> -> => ->esto por aqui ->>> me vueve loco ::
Igual a mi, pero creo como todo en la programacion con la practica va teniendo mas sentido.
es necesario poner Public Function ?? si ignoras el Public y solo pones Function y el nombre , no seria lo mismo??
No, no sería lo mismo. Tal vez funcione pero todo dependerá desde donde quieras acceder a la función. Expliqué en el curso los modificadores de acceso (public, private, protected) con ejemplos. Si tienes dudas echa un vistazo a vídeos anteriores. Un saludo!
Saludos Juan.
Una pregunta curiosa:
Al aprender PHP y MySQL usando PDO, ¿ya no vale la pena aprender a trabajar con los métodos de mysqli?
Cuando usamos require "Conexion.php", por qué a veces utilizas los paréntesis y otras no? Cuál sería la forma correcta para el require?? muchas gracias
Creo que te falto cerrar la conexión echa a la BBdd de la tabla, supongo que debería de estar colocada al dentro de la función get_productos
$this->conexion_db->close();
Saludos
tengo un problema en los cursos POO desde el principio no se ven las herencias solo me marca un error en este caso coloque un error en el nombre de la tabla y no me manda error solo me manda el error en el index
que podria ser
y para reutilizar codigo en otros proyectos, por ejemplo lo de las consultas sql, tendría que en el archivo nuevo, hacer un require a devuelveProductos.php y hacer un extend a dicha clase y sobreescribir el metodo con otra consulta? y después instanciar en la vista la nueva clase y con el nuevo metodo? no se me ocurre otra forma de reutilizar... corrijanme porfavor.
Tú mismo te has respondido correctamente a todas tus preguntas. Un saludo!!
Gracias profesor, ya se está complicando el curso!! me gusta!! ya quiero terminarmelo para pasar al de JS :D, se le quiere desde Venezuela.
Hola espero y me puedas ayudar a mi me da el siguiente error " Fatal error: call to undefine method mysqli_result::fecth_all() in C:\AppServ\www\EjerciciosPhp\POO\DevuelveProductos.php on line 20
Sin ver el resto del código del programa es complicado que te pueda ayudar. Parece ser que hay un error de sintaxis anterior que impide que se reconozca la función. Puedes enviar si quieres todo tu código a cursos@pildorasinformaticas.es Recibo muchos mails y tardo en contestar, pero al final siempre contesto. Un saludo!!
Cuál es el vídeo de constructor
Hola! En dado caso que se requiera una conexión a un motor de base de datos diferente (Oracle, SQL Server, Postgres, etc.) que archivos serían lo que habría que modificar? Agradezco de antemano su respuesta. Slds.
Mira el siguiente video donde habla de PDO, la otra forma para hacer conexiones con otros gestores BD
hola , me gustaría saber porque me sale este error al poner en carpetas diferentes los archivos por ejemplo yo creo la carpeta conexion y dentro de ella pongo el archivo conexion pero en el minuto que lo pongo en la pagina index con require me aparece en el navegador-------> require(../conexion/Conexion.php): failed to open stream: No such file or directory in C:\xampp\htdocs\ProgramacionOrientadaObjetos(POO)\MostrarTodo\Query.php on line 2, pero si pongo todos los archivos en la misma carpeta no me pasa eso
hola me da este error
Parse error: syntax error, unexpected '$this' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in C:\xampp\htdocs\poo\conexion.php on line 10
en la linea 10 del archivo conexion.php tengo esto :
$this->conexion_db=new mysqli(DB_HOST, DE_USUARIO, DB_CONTRA, DB_NOMBRE);
AYUDAAA
buen dia profesor, tengo una duda cuando aparece esto Fatal error: Call to undefined method mysqli_result::fetch_all() in /var/www/Poo-conexion/DevuelveProducto.php on line 15.
y mi linea 14 y 15 son esta:
14) $resultado=$this->conexion_db->query("SELECT * FROM productos");
15) $productos=$resultado->fetch_all(MYSQLI_ASSOC);
16) return $productos;
no era un error de codigo sino que me faltaba instalar esto:
sudo apt-get install php5-mysqlnd
y luego agregue esto:
entrar a el archivo phpini() y agrgar esto : ;extension=mysqlnd.so
y listosi a alguien le pasa lo mismo y es un usuario linux
Hola profe, tengo una duda, ya veo que es mucho mas fácil heredar Productos de Conexion, pero no seria igual recomendable utilizar las clases por separado, y en la clase Productos declarar la variable private $db = new Conexion(); y ahí utilizar esa conexion dentro de Productos? Que es mas optimo y eficiente? a la hora de reutilizacion de codigo, eficiencia etc. También vi que faltaría el $result->free_result(); antes del return de getProductos.
jejeje intente hacerlo con return $db->fetch_assoc() directamente y no funcionaba, si o si hay que retornar desde las clases los vectores que contienen las columnas de la BD, en un FETCH_ALL????
van a pensar que estoy loco, jajaja. creo que me respondi a mi mismo, al heredar de Conexion, seria como en el lenguaje smalltalk la clase Object de la cual todos heredan de dicha clase no? asi como una analogia. Por ende si tengo Conexion -> modeloProductos->modeloRemeras y modeloRemeras extends de modeloProductos, tambien va a poder utilizar la variable $db de Conexion?
Si la cadena de herencia es la que tú dices, sí. Podrás utilizar la variable. Un saludo!!
Buenas Profesor :) quiero saber como puedo hacer una consulta preparada de busqueda con los caracteres comodines... busque y busque pero no encuentro referencias
A quienes les de error en la parte de los constructores coloque
public function __construct()
{
$this->conexion_db=new mysqli(DB_HOST, DB_USUARIO, DB_CONTRA , DB_NOMBRE);
if ($this->conexion_db->connect_errno)
{
echo "Fallo al conectar a MYSQLI " . $this->conexion_db->connect_error;
return;
}
$this->conexion_db->set_charset(DB_CHARSET);
}
}
Hola el metodo fetch_all no me funciona prob con fetch_array y si funciona pero me repeti demasiadas veces la misma fila de la tabla cuando ejecuta el codigo,y en ningin momento los datos de la tabla estan repetidos
Profesor, es un gran maestro, he aprendito todo lo que se gracias a usted, tengo un problema, he probado todo lo que esta en mis capacidades, pero la linea.
$resultado=$this->conexion_db->query("SELECT * FROM PRODUCTOS");
me saca el error Fatal error: Uncaught Error: Call to a member function query() on null
gracias.
Hola. Probable que el problema esté en la línea (parent::__construct();) lleva doble guion bajo. Espero te funcione.
Gracias Federico Lozano, pero no he logrado resolver este problema.
Para poder ayudarte pon aquí todo tú código. Saludos
Estimado tengo un problema al momento de que mi clase devuelvedatosproductos hereda de la clase conexion ya que cuando creo el metodo get_productos no me trae el constructor de la clase conexion y cuando utilizo el operador parent tampoco me muestra los constructores de la clase padre. Necesito de tu ayuda a ver que pudiera tener mal
a mi me da un error al final me devuelve por pantalla los datos del archivo index.php
Document
si alguien me puede decir a que se me puede deber?
SOLUCIONADO....VERÉIS ESTE CÓDIGO..parent::__construct(); VA CON DOBLE UNDERLINE Y SOLO LE PUSE UNA TAL QUE ASÍ parent::_construct();
EL DREAMWAVER AYUDA PERO YO ESTABA REALIZÁNDOLO CON SUBLIME TEXT QUE NO TIENE UN ASISTENTE TAN POTENTE PARA PHP
Perfecto!
Buen día profesor, el ejercicio no me quiere funcionar reviso una y otra vez y no encuentro el error; Voy a dejar el código aquí para ver si por favor profe me ayudas :( o algún compañero.
Esta página no funciona
localhost no puede procesar esta solicitud en este momento.
HTTP ERROR 500
config.php
========================================
Conexion.php
====================================================
DevuelveProductos.php
=============================================================
index.php
Documento sin titulo
Buenas noches, el codigo me da error, no se si será por la versión de php que tengo, que es la 5.3.1. El error me lo da en la funcion fetch_all que no la reconoce, ¿como se resuelve esto?
Saludos.
+Jose Bedmar Copia y pega por aquí todo tu código para comprobar que efectivamente es un error de tu PHP, ordenador o lo que sea y no un error de sintaxis. Un saludo
Oye quisiera preguntarte una cosa
Estoy en 2do año de la Lic. en desarrollo de software
Estoy en la utp que quedo en la posición 70 de mejores universidades
Pero a mi la verdad me ha llamado mas la atención estudiar en la universad de granada España
Quisiera tu consejo para prepararme desde ya para obtener mi postgrado en esa universidad
Es muy duro entrar los extranjeros hay?
Has escuchado si es demaciado dificil?yo hasta ahora soy disque el mas pro en el salon
Pero es porque no solo me quedo con lo que me enseña la u sino que busco tutoriales y cursos en UA-cam como los tuyos sin contar que busco en foros y paginas
Soy estudiante de B trabajo deves en cuando y habeces falto mucho o llego tarde etc
y me preguntaba si sabras si esa u solo acepta estudiandes de pueras AMuchas gracias desde ahora
+jonathan dias Hola !! Pues siento no poder ayudarte con esto porque desconozco cómo trabaja la Universidad de Granada. Tampoco conozco a nadie que haya cursado allí. ¿De dónde eres? Un saludo
+pildorasinformaticas bueno soy de panama pero tranquilo en foros alomejor comentan algo al respecto
porcierto sabes algo de progracion en android o ios
talvez si es asi deberias hacer un curso del mismo; yo ya toy investigando en otros canales y eso pero jamas explican igual que tu
solo dicen has esto luego esto ydespues esto pero jo te explican mucho el porque?
Es mi intención comenzar un curso de Android en breve. Un saludo
Hola como estas ahora en 2020 es que estoy aca en este video me gustan mucho tus videos excelente....
me gustaria que me ayudaras a resolver un error que me lanza php con el catch $e->getCode()
el error se genera cada vez que quiero resetear el ID en sql server, con esto se puede resetear el ID autoincrementable "DBCC CHECKIDENT (PRODUCTOS, RESEED,1)"
en mi codigo yo coloque que al eliminar una fila con DELETE ejecute tambien el RESET del ID pero me genera error-> 23000 cuando quiero insertar un nuevo registro y tengo que recargar la pagina como 4 veces para que logre insertar el nuevo registro, me puedes dar una idea de como puedo resolver este problema que tengo. Solo me gustaría saber si alguna solución a esto..
hola buen dia gracias. tengo una pregunta si usamos los metodos costructores: function __construct() {}
el codigo funcionaria igual o es cuestion de preferencias.
El código funcionaría igual. Es más, se debe usar function __construct() para crear los métodos constructores. Desde la reciente aparición de PHP 7, ha quedado oficialmente obsoleto crear un constructor con el mismo nombre de la clase. Un saludo!!
gracias por la respuesta muy agradecido.