Vemos en este vídeo cómo conectar con BBDD Mysql utilizando Programación orientada a objetos. Para más cursos, ejercicios y manuales visita: www.pildorasinf...
Linea 40 te falta una "s" a resultado min 13:27 hace un corte y se soluciona minuto 13.30. Ten cuidado, porque hay gente que no sabe hacer debuging, y es bueno que todos aprendamos de nuestros errores, no que los encondamos ;D felicidades por tus cursos
la función fetch_array() crea los dos tipos de array a partir del resultado, uno indexado y el otro asociativo, independientemente de si quieras utilizar indices numericos o strings para referirite a tus campos del array, siempre funcionará, el fetch_row() crea un array indexado, y el fetch_assoc() de tipo asociativo, utilizar el que mejor convenga queda a nuestro juicio.
Esta instrucción reemplaza a tener que armar toda la tabla y ordena todo de manera automática: while ($fila=$resultados->fetch_assoc()) { var_dump($fila); //var_dump mostrará los datos de una manera más interesante echo ""; }
de esa forma lo he venido haciendo desde el metodo procedimental, pero tengo una duda, si coloco el ->fetch_array(), imprime dos veces los resultados de una fila, en cambio con el ->fetch_assoc() todo resulta bien, podrias explicarme a que se debe?
@@jesssie9138 Hola no sé si ya encontraste respuesta. Pero en PHP hay dos tipos de arrays: 1. Indexados, cada elemento es identificado por un indice que empieza en 0, por lo que el primer elemento corresponde al indice 0 y el segundo al 1. 2.Asociativos, en lugar de identificar los elementos por indices los identificas por llaves o claves y están compuestos por pares clave-valor como podría ser "nombre" => "sebastian", "apellido" => "rodelo." Cuando usas fetch_array por cada elemento de la fila te trae una representación de forma indexada y asociativa. Si sólo necesitas la indexada puedes usar mysqli_fetch_row y si necesitas la asociativa puedes usar mysqli_fetch_assoc.
Gracias por su tiempo y dedicacion, como siempre sus videos son muy entendibles, ojala mas adelante siga ampliando el tema de PHP y POO, espero que en los proximos videos pueda tocar el tema de organizacion de archivos en distintos niveles y directorios. Por ejemplo crear una clase de Conexion de la BD y separar del HTML para un mejor entendimiento de la POO, agradezco de nuevo su esfuerzo para instruir en mundo de la Programacion, Saludos...
+Jesus Gonzalez Gracias por el comentario. Las tecnologías y lenguajes de programación web son muy extensos, pero espero poder abarcar la mayoría de cosas que pedís. Un saludo
te soy soy sincero? e tenido los peores profesores de mierda en mi vida, demuestras calidad eficiencia y sobre todo eres muy didáctico en tus videos pff no dejo de halagarte eres la onda, muchísimas gracias.
Les hago un comentario que me ha sucedido. En los anteriores videos y en este, siempre se generaba un error al tratar de consultar los campos que tenían acentos. Entre a la base de datos por PHPMyAdmin y en cada campo que tenía acento se lo quite y listo, problema solucionado y todo funciona excelente, por ejemplo NOMBREARTÍCULO lo cambié por NOMBREARTICULO. Aunque haya solucionado el problema quisiera saber a que se debe? La codificación la puse con el mismo código que usa Juan en el video. Muchas gracias a todos! EXCELENTES VIDEOS POR CIERTO !
Felicidades eres un maestro, de verdad explicas muy bien estoy videos , quisiera pedirte un gran favor si esq puedes : podrías hacer una factura utilizando POO y con PDO y PHP ?
Si tengo tiempo y lo veo viable lo haré. De todas formas más adelante en el curso se ve algún ejemplo mezclando POO con PDO. Seguro que lo puedes adaptar a tu caso concreto. Un saludo!!
Gracias maestro, en realidad soy nuevo en lo de programación web y tengo muchas ganas de aprender a programar, estoy siguiendo tus videos al pie de la letra y de verdad que he aprendido mucho..El problema creo q no solo es mio sino de muchos, es que queremos aplicar los conocimientos en algo práctico como en una factura y en internet no hay videos sobre ese tema por eso mi petición si en algún momento tienes un tiempito para en este curso puedas hacer una factura con la conexion PDO y con POO, de verdad que te agradecería mucho MAESTRO Felicidades de verdad por ese tiempo que te tomas en enseñar tus conocimientos DTB..
Hola estmiado José, me podías ayudar con eso, bueno el problema es que lo de maestro detalle no entiendo bien eso de factura y detalle de factura, gracias por tu ayuda
hola ! No parece muy complicado desarrollar una factura, basta con hacer los procedimientos ( suma, restas , impuesto) .
8 лет назад
Antes de empezar con esta parte he repasado toda la parte de POO e incluso estado viendo otros videos para entender mejor la programación orientada a objetos, ya que era algo que no terminaba de comprender bien, pero creo que ya voy entendiendo e incluso lo que antes me parecía difícil ahora me parece incluso más sencillo que el método procedimental. Igual me equivoco en cosas, pero si entendí bien, en POO todo son objetos, $conexion es un objeto, solo que no hemos declarado una clase para definir sus atributos y métodos en este caso, pero finalmente es un objeto y como objeto con el carácter -> le añadimos funciones prefabricadas como close (). ¿Se puede mezclar código del método procedimental, POO y PDO en un solo archivo de alguna forma? Es simple curiosidad, lo digo porque así tal cual has dejado el código, por probar he reemplazado $fila = $resultados -> fetch_array() por $fila = mysqli_fetch_array( $resultados ) y da un error de sintaxis. Aunque sea simple curiosidad es bueno saber esto, porque si no hay forma de mezclar métodos ya uno sabiendo esto empieza hacer todo con el método correspondiente. Saludos!
+Javier Ocampos Hola !! Poder sí que se puede. Pero hacerlo se vuelve confuso. No es tan sencillo utilizar la programación procedimental una vez que ya hemos creado objetos y métodos. Además es algo que no se recomienda por estar considerado una mala práctica de programación. La POO surgió por la necesidad de hacer más claro el código sobre todo en programas complejos. Si mezclamos POO con programación procedimental, lo que hacemos es justo lo contrario de lo que se pretende (simplificar el código). Un saludo!!
Hola Juan una consulta. En este año 2022 vale la pena seguir este video para aprender a como conectar una base de datos MYSQLI, para mostrar los registros en un formulario HTML5????. Un saludo. Gracias.
Buenas Juan, Resulta que para tener un ejemplo tanto del array asociativo como del numérico, decidí hacer la llamada de ambos métodos, uno tras el otro, quedando el código de la siguiente forma: echo "Asociativa"; while($fila=$resultados->fetch_assoc()) { echo ""; echo $fila["CÓDIGOARTÍCULO"] . " "; echo $fila["NOMBREARTÍCULO"] . " "; echo $fila["SECCIÓN"] . " "; echo $fila["IMPORTADO"] . " "; echo $fila["PRECIO"] . " "; echo $fila["PAÍSDEORIGEN"] . " "; } echo "Numérica"; while($fila=$resultados->fetch_array()) { echo ""; echo $fila[0] . " "; echo $fila[1] . " "; echo $fila[2] . " "; echo $fila[3] . " "; echo $fila[4] . " "; echo $fila[5] . " "; } Y me encontré con el siguiente problema, solo se realiza con exito el primer while que encuentre el código, ya sea el asociativo o el numérico, no imprimiendose el otro. También he probado a cambiar la variable "$fila" por "$fila2" en el segundo while pero nada. ¿Sabes que puede estar pasando? Muchas gracias de antemano.
Hola !! Sin tener el resto del código, creo que me hago una idea. Al utilizar el mismo array "resultados" en los dos casos creo que tienes un problema de cursores, es decir, una vez has leído el array con el primer bucle, el cursor ha finalizado la lectura y el siguiente bucle tiene el cursor al final con lo que no leerá nada más. Prueba a utilizar arrays diferentes, uno para un while y otro para el otro while. Creo que van por ahí los tiros. Un saludo!!
Efectivamente creando una Array diferente funciona. No entiendo al 100% a qué te refieres con el tema del cursor, pero por lo que dices parece que un mismo array no puede ser leido por dos bucles diferentes. Muchas gracias por la respuesta. Saludos!
Cuando creas un array, este se crea con el cursor antes del primer registro. El cursor es como el cursor de un documento de texto. Es lo que nos indica dónde está posicionado el programa para la lectura. Cuando empiezas a recorrer el array, el cursor se va desplazando del primer al segundo registro, después al tercero etc hasta acabar con el array. Al terminar de leer el array el cursor está al final del mismo por lo que si pretendes utilizar el mismo array no leerá nada porque el cursor está al final. Creo que va por ahí el problema. Un saludo!!
Y yo reinventando el agua salada, Estaba trabajando una clase que era capaz de realizar una conexión, realizar una consulta, modificación y cambio en la bbdd
Buenas noches Juan Ya que estamos con el estilo de programación orientado a objetos, me gustaría saber si aquí se pueden capturar las excepciones lanzadas por las funciones POO entre bloques try-catch, del mismo modo que hacemos en Java: es más elegante, y el control de errores mucho más sencillo. Muchas gracias
Tengo una duda, como puedo hacer para que me muestre una consulta con un count ejemplo: SELECT Tipo, Eventos, COUNT(No_Series)AS tipo_trans FROM papeletas GROUP BY Tipo, Eventos ORDER BY papeletas. Eventos AS en este caso me muestra Tipo Eventos tipo_trans A AYB 1 A Expo tubeb 1 quiero que me lo muestre en una tabla con php
Gracias Juan, muy bien explicado, como siempre. Aqui seguimos esperando los proximos videos. Te queria preguntar si durante el curso vamos a hacer un CRUD completo. Gracias. Un saludo
He usado la tabla productos que tiene 7 campos (es la tabla productos del curso Access), pero, por qué echo count($row); imprime 14 y no 7; La función count($row) quiero usarla dentro de un ciclo for while($row = $result->fetch_array()) { echo ""; for($i = 0; $i < count($row) - 1; $i++) { echo $row[$i] . ""; } echo $row[6] . ""; echo ""; }
Hola Juan que tal todo, gracias por tus cursos son muy efectivos ya vi de los tuyos el de css javascript y ahora voy aquí. Una pregunta, no hay que de alguna manera liberar a la variable $resultado ? así como hacemos con $conexion->close();
prefiero la forma procedimental... el P. O. O se me hace tedioso... profe una pregunta en este curso ha explicado respecto a los procedimientos almacenados?
Pues yo también pensaba eso, pero a medida que aprendes mas sobre POO y te acostumbras a ello, descubres que es igual de "fácil", pero mucho mas sencillo de usar en escenarios "complicados"
Hola, al intentar realizar la conexión con la programación orientada a objetos y eso que he copiado el mismo código que has usado en este vídeo por lo que es muy raro que me especifique los siguientes errores: Notice: Undefined variable: resultado in C:\xampp\htdocs\Curso PHP DW\Conexion mysql_OO.php on line 39 Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\Curso PHP DW\Conexion mysql_OO.php on line 39 gracias p.d: Por cierto estoy acostumbrado a usar XAMPP ya que el grado superior que estoy cursando es el programa que usamos para el apache y no usamos myphpadmin sino mysql Workbench y qué obsoleto está mi curso porque estoy usando mysql en vez de mysqli¡¡¡¡
+Dionisio Barboza Gracias !! Yo calculo que unos 80 o así. pero no lo se porque todos los días me proponéis incluir cosas que no tenía pensadas. Algunas son buenas ideas y otras no se ni de lo que me habláis... Un saludo!!
+pildorasinformaticas "...otras no sé ni de lo que me habláis"... Juan, no sólo eres un excelente maestro! Además de todo, mantienes una humildad muy valiosa que sabes aprovechar para dar rienda suelta (también, como si algo faltara a tus videos) a un sentido del humor que para quienes te conocemos (a través de tus videos) se ha hecho habitual y es lo que me permite digerir tan bien cada clase! Muchas gracias por tanto esmero!
una pregunta: de la manera que esta el die en el vídeo, no muestra nada pero si agrego un string si funciona. por que? ejemplo die( " error ". $conexion->errno);:
Hola, no me quedo claro algo, la variable resultado no la inicializate como objeto, pero pudiste usar el método como si fuera un objeto, eso se puedo hacer porque inicializate conexión y resultado hereda de conexión??? o cualquier variable que creas puede usar los métodos de la API de PHP como si fuera objeto?, yo se que es muy fácil lo que pregunto pero es la primera vez que veo programación y estoy aprendiendo... desde ya muchas gracias... son geniales los vídeos...
$resultado es igual a el resultado del Query(consulta en español), si la consulta fue exitosa $resultado almacenara un array, es decir, una tabla con los valores que devuelve SELECT * FROM PRODUCTOS. Para luego imprimir fila por fila con la instrucción $fila=$resultados->fetch_assoc. Creo que es asi
al hacer la instruccion $resultados=$conexion->query($consulta); $resultados ser convierte un objeto, ya que $conexion es un objeto, si vemos la declaracion del objeto $conexion $conexion= new mysqli ("localhost","root","","proba"); por lo tanto $resultados=$conexion->query() lo convierte en objeto espero sirva esta explicacion saludos
Si lo hago con fetch_assoc me da problemas en casi todos los campos menos en importado y precio, en el resto me da problema. Ahora si lo hago con fetch_array me funciona perferctamente. A que es debido?
Hola a todos. Saludos profe Juan ALGUIEN QUE ME AYUDE? Creo que me estoy liando. ¿Cómo se leería la condición del if? if($conexion -> connect_errno){ echo "Falló la conexión Error: " . $conexion->connect_error; Así? Si el objeto conexion devuelve un error entonces se realiza la instrucción... lo que me confunde es que -->connect errno devuelve un código de error para la conexión, si ha fallado. y CERO si es que no ha ocurrido ningún error. Osea en el if siempre tendrá un número en la condición $conexion ->connect_errno : O será el "código de error" o será "0" Entonces que evalúa el IF? Cuando no se cumple la condición del IF? Iluminenme...
Por que pudo ocupar la variable $resultados como un objeto de la clase mysli, e ingresar a su metodo fetch_assoc() por ejemplo, si en ninguna parte del código se ve que se inicializa la variable $resultado como un objeto... O cualquier variable que creas puede usar los métodos de la API de PHP como si fuera objeto? ya que estan predefinidas?? como la Clase math() por ejemplo. Gracias por sus respuestas :)
Hola Gabriel al hacer la instruccion $resultados=$conexion->query($consulta); $resultados ser convierte un objeto, ya que $conexion es un objeto, si vemos la declaracion del objeto $conexion $conexion= new mysqli ("localhost","root","","proba"); por lo tanto $resultados=$conexion->query() lo convierte en objeto espero sirva esta explicacion saludos
+Milton Pacheco Hola !! Este curso se encuentra en elaboración y aún no hemos llegado a ver esto que comentas. pero en el siguiente vídeo puedes ver cómo conectar con una BBDD utilizando PDO y realizar consultas preparadas. Sesiones, perfiles etc llegará con el tiempo Un saludo
oye maestro yo pense qe ibamos a utilizar clases como en los ejemplos , funcciones "metodos" etc, entre otros a manera de cmentario veo que lo hiciste de manera muy rrapida ¿por que?, cordial slaudo
ME PARECE ESTE ERROR: Uncaught Error: Call to undefined method mysqli_result::fecth_assoc() in C:\xampp\htdocs\cursophp\introduccionphp\cONEXION A BASE DE DATOS ORIENTADO A OBJETO VIDEO 51.php:37 Stack trace: #0 {main} thrown in C:\xampp\htdocs\cursophp\introduccionphp\cONEXION A BASE DE DATOS ORIENTADO A OBJETO VIDEO 51.php on line 37 define('MYSQL_BOTH',MYSQLI_BOTH); define('MYSQL_NUM',MYSQLI_NUM); define('MYSQL_ASSOC',MYSQLI_ASSOC); $conexion= new mysqli("localhost","root", "", "pruebas"); if($conexion->connect_errno){ echo "fallo de conexion error : ". $conexion->connect_errno; }else { echo "conexion a la base de dato establecida "; } //mysqli_set_charset($conexion," utf8"); version antigua $conexion->set_charset("utf8"); // version orientado a objeto $sql="select * from productos"; $resultado =$conexion->query($sql); if($conexion->errno){ die($conexion-> error); }else { echo " conexion al contenido productos "; } //ESTA ES LA LINEA 37 while($fila=$resultado->fecth_assoc() ) { echo""; echo $fila ['CODIGOARTICULO']. ""; echo $fila ['NOMBREARTICULO']. ""; echo $fila ['SECCION']. ""; echo $fila ['IMPORTADO']. ""; echo $fila ['PRECIO']. ""; echo $fila ['PAISDEORIGEN']. ""; echo""; $conexion->close(); } ?>
+Robinson Andres Cortes Hola !! ¿Por qué? ¿Porque no hemos creado clases propias y hemos utilizado las proporcionadas por la biblioteca Mysqli? Hemos utilizado la clase mysqli con sus métodos y propiedades. Un saludo!!
> profesor procede a crear una instancia de una clase > se pasa accediendo a métodos de la instancia para manipular la misma > alguien en los comentarios procede a decir que no es POO.