Curso PHP 2

en este bloque de contenido vamos a aprender php donde php es un lenguaje de programación dinámica para páginas web en el lado del servidor esto quiere decir que php no se ejecuta en el cliente como html como css o como javascript sino que se ejecuta en el servidor y cuando llega al cliente llega ha transformado llega convertido en html lo primero que os voy a decir por tanto es que si vamos a aprender un lenguaje que funciona en el servidor necesitamos tener un servidor necesitamos ejecutar nuestros scripts contra un servidor porque a diferencia de html mientras que html se puede ejecutar perfectamente en el cliente para trabajar con html no hemos necesitado extraer ningún software en particular simplemente un navegador web y podemos trabajar con html css y podríamos trabajar con javascript pero con php no con php en cualquier sistema operativo prácticamente ni windows y mac y linux reconocen automáticamente ejecutan automáticamente archivos php puedo editarlos porque al final son archivos de texto pero no puedo ejecutarlos por eso a partir de aquí tengo que tomar dos caminos al final tomaremos los dos o bien convierto mi ordenador en un servidor web o bien trabajo directamente sobre un servidor web al final probablemente acabaremos trabajando directamente sobre un servidor web pero esta opción al principio especialmente cuando estamos aprendiendo puede resultar bastante incómoda por eso lo primero es convertir nuestro ordenador en un servidor web pero un servidor web no es cualquier cosa un servidor web bien montado bien configurado nos puede costar pues días o semanas y es la primera vez que lo hacemos en configurarlo y no es nuestro es este nuestro objetivo nuestro objetivo al menos ahora no es convertirnos en administradores de sistemas nuestro objetivo es empezar a aprender php y hacerlo de la manera más sencilla posible por eso una herramienta estándar que usamos yo diría a todos los que enseñamos php es una herramienta llamada amp el samp es un paquete diría es un súper paquete que contiene todo lo que necesitas para que con prácticamente nada de esfuerzo por tu parte conviertas tu ordenador en un servidor web de desarrollo en un servidor web local para ti para programar no en un servidor web abierto al público lo primero que tenemos que hacer por tanto es y no irnos a internet poner en los criterios de búsqueda y acceder a una página llamada apache friends punto o hereje barra es para descargar rostro el español así que pincho dentro de esta página veremos qué buena noticia el software está tanto para windows como para linux como para mac los programas que suelo elegir para las formaciones intento siempre que cumplan estas condiciones primero que sean libres que sean de software libre y segundo que estén para cualquier plataforma dado que en este caso ahora mismo estoy en windows pues evidentemente voy a hacer clic en el samp para windows en principio la descarga debería comenzar automáticamente si no empieza puedo forzar la descarga pulsando aquí y sea como sea en unos pocos segundos veo cómo empiezo a descargar el sham en mi equipo el samp es un programa que ocupa bastante es un programa que en las últimas versiones he estado ocupando unos 140 y pico megas por tanto tendremos que esperar el tiempo que haga falta dependiendo de la conexión con la que estemos ahora mismo hasta que el programa que dé correctamente descargado nuestro equipo antes de poder empezar a instalarlo una vez que tenemos el programa descargado lo que haremos es doble clic para empezar a instalarlo aparece que tengo que dar permisos de administración para poder instalar el software y a partir de aquí vamos a ir a través de una serie de pantallas en las cuales se nos irá informando de cómo va la instalación bueno en este caso se nos dice que al menos en mi caso tengo un antivirus ejecutándose probablemente será el propio defender de windows 8.1 y se nos dice que en algunos casos esto puede ralentizar o puede ser feliz la instalación del sunp voy a decirle que por supuesto quiero opinar me voy a acordar de este mensaje no quiere decir que automáticamente se lleve mal con el antivirus porque cada antivirus funciona de una manera pero también quiere decir que yo finalmente lo que voy a hacer es instalar un software que abre puertos y se empieza a comunicar a través de sus puertos y lo voy a hacer con un fin con un fin completamente lícito y legal pero algún antivirus puede interpretar que no lo hago así vale por tanto voy a decirles de momento que yes este mensaje es incluso más importante me dice que esto está desde windows vista tengo el ac el ‘user access’ control activado en el sistema él ‘user access’ control en windows este mensaje evidentemente no aparecen en linux mac es el sistema que cada vez que intenta instalar un programa que dice pero está seguro pero es administrador pero porque tu contraseña esto ese lo hace el guaje está en windows para nuestra protección para nuestra seguridad pero una vez más esa protección puede malinterpretar que apache que en este caso es el programa principal del sunp está en nuestra contra y puede bloquearlo así que una vez más vamos a decirle ok a este mensaje y si más adelante tenemos problemas para arrancar el samp simplemente nos acordaremos de que teníamos que desactivar el samp el ac quería decir bueno ahora sí esta es la primera pantalla de bienvenida del sunp pincho next específico que quiero todos los componentes instalados le digo next y en este caso mucha atención a la pantalla porque me está ofreciendo la carpeta de dos puntos contra barras amp como carpeta de instalación es decir una carpeta de nueva creación que se va a crear en el raíz del disco duro mi recomendación por los múltiples componentes que llevas antes que aceptemos esta recomendación si lo quisiéramos dentro de archivos del programa podríamos cambiarlo de carpeta simplemente pinchando este icono pero mi recomendación es que no lo hagamos y pulsemos siguiente en este caso las nuevas versiones de el samp vienen con una utilidad que se llama vietnam y que nos permite instalar programas tales como wordpress tales como trupal o tales como joomla de manera automatizada así que de momento no quiero saber nada más de esto si me interesa más adelante ya iré a por información pinchó next y por último con todos los datos que he introducido hasta ahora estoy preparado para empezar la instalación así que pincho next y ahora mucha atención lo que tengo que hacer es esperar con esperar quiere decir que el samp al final es un paquete que ocupa ciento y pico megas es un paquete que contiene una gran cantidad de software contiene por una parte de los programas principales para montar un servidor web y además un montón de módulos adicionales lo que está haciendo este instalador en este momento es en primer lugar copiar los archivos a continuación los configura y luego arranca los servicios o los programas que quieran necesarios que probablemente será apache con el módulo de php y el servidor de bases de datos mysql que os quiero decir con esto pues que debido a la gran cantidad de elementos que están instalando tendremos que esperar 123 minutos dependiendo de ordenador puede ser que en algún ordenador incluso algo más hasta que todos los elementos estén correctamente instalados está finalizando el proceso de instalación en este caso está creando un des instalador y lo que haremos ahora una vez que está una vez que esté finalizada la instalación será arrancar el panel de control sí por lo que fuera saliéramos sin arrancar el panel de control siempre podemos llamar al panel de control poniendo el samp y aparecerá una utilidad llamada sham control panel si arrancamos el sham control panel veremos cómo aparecen disponibles para arrancar todos aquellos elementos que forman parte del sunp arrancarlo y el panel de control del sunp tiene aproximadamente esta apariencia puede cambiar ligeramente de versión en versión lo primero que tengo es un listado de los módulos principales que tiene el samp a continuación les voy a presentar apache que es un servidor de páginas web es de eso el servidor de páginas más usadas del mundo apache lleva ya integrado en champ el módulo de php por tanto por eso no aparece php por aquí por ninguna parte mysql es un servidor de bases de datos curiosamente es el servidor que primariamente usaremos en combinación con apache y con php filezilla es un servidor de ftp no ya el cliente el cliente para conectarse a un servidor ftp se puede descargar directamente desde la propia web de files y la lo que se nos ofrece en este caso es la posibilidad de montar un servidor web un servidor de ftp mercury mercury email transport es un servidor de correo electrónico para montar un servidor no un cliente no un receptor de correo electrónico sino un distribuidor de correo electrónico en un servidor y por ultimo tomcat es un motor de serv let’s en jsp y en para java enterprise vale en el caso de que en lugar de programar con php programar amos con java en la versión enterprise lo que a nosotros nos interesa es empezar programando con php y necesitamos hacerlo a través de apache así que lo primero que vamos a hacer es pulsar el botón start permitir acceso en el cortafuegos [Música] alguna contraseña de administración en caso de que en él se nos requiera y comprobar que apache se nos pone de color verde se pone de color amarillo cuando está arrancando se pone de color verde cuando está completamente arrancado y nos dice y nos en forma que va a usar los puertos 84 43 de nuestro sistema operativo hay veces en las que puede ocurrir que apache no arranque correctamente cuando apache no arranca correctamente en el 90% de los casos es porque hay algún otro programa algún otro software que está usando el puerto 80 y por tanto apache no arranca si no tiene a su completa disposición este puerto el 80 los dos programas que más he visto que se interfieren con apache son en primer lugar skype el programa de mensajería y en segundo lugar internet information services que es un sistema de gestión de servidores web de microsoft entonces sí vamos a arrancar apache debemos asegurarnos de que tanto skype como information services como cualquier otro programa que usa el puerto 80 están correctamente apagados y el puerto 80 liberado una vez que el samp está instalado es importante que comprendamos una cosa y es que hemos convertido nuestro ordenador en un pequeño servidor web y podemos empezar a escribir scripts en php pero no podemos hacerlo en cualquier carpeta del disco duro sólo lo podemos hacer en una carpeta concreta dentro de la carpeta de instalación de sham y esa carpeta es la siguiente voy a abrir el explorador de windows voy a ir al disco duro ce que es donde he instalado este servidor voy a entrar dentro de la carpeta jump y dentro de la carpeta es que hay una sub carpeta llamada ht docs solo puedo escribir scripts en php y que funcionen dentro de esta carpeta a continuación vamos a comprobarlo en primer lugar me haré una carpeta llamada aprendiendo php pero no la voy a hacer todavía vamos a ver por qué voy a abrir un navegador y otra cosa que voy a explicar es que para acceder a esta carpeta ht docs no tenemos que poner hace dos puntos sant h docs incorrecto lo que tienes que hacer es poner la palabra mágica localhost poner localhost equivale a decir que quiero entrar en champ h ht docs pero no como carpeta sino como un servidor web por tanto para trabajar con html y css no importaría pero trabaja para trabajar con php importa que cada vez que queramos entrar dentro de esa carpeta lo hagamos poniendo localhost en este caso localhost tiene una redirección hacia la carpeta sham que tenemos aquí la carpeta sam tiene un archivo llamado splash punto php de dónde ha salido todo esto todo esto son archivos de ejemplo archivos demuestra que tienen nada más instalarse vamos a acceder a la pantalla principal de la anp evidentemente vamos a hacerlo en español simplemente deberíamos estar viendo esta pantalla pero no voy a hacer nada de momento con esta pantalla esta pantalla simplemente si la estoy viendo me informa me confirma que el santo está correctamente no solo instalado sino también arrancado lo que voy a hacer ahora es poniendo poner lo siguiente voy a poner localhost barra aprendiendo php si habrá pulso enter lo más normal es que el sistema me diga objeto no localizado porque el llamado a una carpeta localhost aprendiendo php y que valera decir jump ht docs aprendiendo php pero esa carpeta no existe así que lo que voy a hacer a continuación va a ser crear una nueva carpeta llamada aprendiendo php si ahora recargo el servidor me sacará un mensaje parecido pero no igual será recargo esa carpeta existe ya no me dice que no he encontrado el objeto pero sin embargo me dice que está vacía evidentemente está vacía desde el primer momento en el que acabo de crear la carpeta pero todavía no he puesto contenido dentro de ella crear un archivo php que al final es un archivo de texto plano es realmente sencillo si estoy en windows simplemente tengo que pulsar botón derecho archivo nuevo documento de texto y tengo que hacer un archivo que atención se llamará como queráis que voy a empezar creando un archivo llamado uno php o index php le quiero cambiar la extensión y ahora lo que debo hacer es editar este archivo con un editor de texto en mi caso voy a usar edit como editor de texto polivalente en este caso quería decir para editar cualquier tipo de documento así que si ahora recargo la página veré que no pone nada porque cuando entro dentro de una carpeta el programa lo que hace es ejecutar el archivo que se llama index php y dentro de este archivo index php vamos a empezar a empezar a escribir nuestro código yo puedo poner hola perfectamente y si guarde recargo veré que pone hola en la pantalla y esto ocurre porque dentro de un archivo php no todo lo que escriba va a ser php sólo por tener la extensión php no quiere decir que lo que haya dentro sea php si yo no digo nada el programa entiende que esto que acabo de escribir es html y en html podríamos decir que se vale poner hola y no causa ningún error por tanto no sólo vale no sólo basta con crear un archivo con extensión php sino que además tengo que poner las siguientes llaves de apertura y de cierre en primer lugar voy a hacer en la tipografía un poco más grande porque hoy probablemente no voy a estar escribiendo demasiado código al principio y voy a poner menor que interrogante php y para acabar pongo interrogante cerrada y mayor que la cuestión es que entendáis que todo lo que esté entre esa etiqueta de apertura y la etiqueta del cierre va a ser php demostración pongo esto aquí y no pasa nada guardo recargo pongo esto aquí y no pasa nada si selecciona ese texto y lo pongo después pongo esto aquí y no pasa nada pero qué pasa si pongo esto dentro de las etiquetas php cuidado aquí las reglas son diferentes y de hecho son más estrictas que en html y lo que tendría es un error y me diría no entiendo qué quieres decir con esto dentro de esta línea comete un error por lo menos tiene un poco detalle es decirnos de qué va el error y en qué línea se encuentra pero es un error en definitiva así que mucho cuidado porque todo lo que escribamos dentro de estas líneas tiene que estar en formato php vamos a empezar con la línea más sencilla que podemos encontrar en php vamos a empezar con la instrucción más sencilla no por ello es la menos usada más bien al contrario se usa muchísimo que es la instrucción eco eco básicamente quiere decir dime algo en la pantalla así que echo comillas punto y coma muy importante el punto y coma para finalizar cada una de las líneas en php y digo esto es texto dentro de php también muy importante las comillas para diferenciar una cosa que es el tipo de cadena con la que estamos trabajando ahora hablaremos de esto así que guardó recargo y dice esto es texto dentro de php si cometo algún error tendré problemas por ejemplo os escribo mira no sé qué sé que si por ejemplo no pongo comillas el programa dirá no entiendo lo que sé es que estás escribiendo si no pongo punto y coma el programa puede generar error curiosamente en este caso concreto ahora mismo no generaría error porque es la última instrucción antes de la etiqueta de cierre pero en cualquier otra parte del programa sí que generaría error por eso es importante que nos acostumbremos sea como sea siempre a poner punto y coma al final de cualquier instrucción dentro de php para que el resultado en pantalla sea el correcto y por último dentro de este vídeo voy a recordaros algo que os he dicho antes y es que la información viaja hasta el navegador y se convierte en html esto quiere decir que si ahora vengo al navegador pulso botón derecho y le digo que quiero ver el código fuente de la página no voy a ver ningún php de apertura no voy a ver ningún php de cierre ni voy a ver un eco simplemente voy a ver esto es texto dentro de php es decir lo que hace php en el servidor es tomar el script convertirlo en html y lanzarlo hacia el cliente en formato html esto está muy bien porque digamos que el servidor está escondiendo todo el código php y eso hace que php e sea el lenguaje preferido y por excelencia para programar la parte segura de una aplicación web para programar la conexión a la base de datos la gestión de la información y saber que esa información siempre se va a quedar en el servidor y nunca va a viajar al cliente a menos que alguien la jaque por supuesto pero en principio pensemos que es no pasaría un elemento imprescindible dentro de php son las variables por eso me voy a crear un nuevo archivo dentro de esa carpeta voy a crear un nuevo documento de texto llamado variables php y por supuesto atención todos a la pantalla muy importante lo voy a mover al editor pero no lo voy a mover al navegador porque de esa manera no lo estaría abriendo a través del local host no estaría abriendo directamente como archivo es lo que no quiero así que lo que haré si ese archivo está dentro de aprendiendo php voy a cargar variables punto php voy a comprobar que estoy trabajando con el mismo archivo yo soy el archivo correcto cuando recargo yo soy el archivo correcto así que si ya lo hemos visto correctamente ya sabemos que abrimos y cerramos la etiqueta php las variables son contenedores de información y además en este caso os voy a decir que php es un lenguaje débilmente tipificado eso quiere decir que hay otros lenguajes de programación que son todavía más complejos o más difíciles de usar o más propensos a errores que php en los cuales cuando declaras una variable además tienes que declarar el tipo de variable que es como por ejemplo en ce o como por ejemplo en java php no es así php es algo menos estricto en este sentido lo cual nos va a hacer más fácil escribir código aunque la no tipificación de datos va a ser que php pueda no ser tan eficiente en el uso de la memoria como otros lenguajes de programación bueno en primer lugar cómo se declara una variable primero pongo dólar con dólar específico que lo que a declarar a continuación es una variable a continuación pongo el nombre de la variable por ejemplo mi bar mi variable puedo poner mi mar 1 pero no puedo poner uno mi bar hay una condición y es que las variables no pueden empezar por número no deben empezar tampoco por bajo pero puedo poner mi bar 1 o puedo poner mi bar 1 de momento voy a poner mi bar a continuación espacio el espacio es simplemente por motivo estético podría ponerla a continuación pongo un igual y después del igual tengo que poner el valor de la variable en este caso os voy a decir que dentro de php distinguimos fundamentalmente de los tipos de datos hay muchos más pero estos dos son los principales uno los tipos de datos numéricos y dos los tipos de datos de cadena un tipo de dato numérico es este es 5 y cuando pongo 5 cuando pongo un dato que quiero que sea un número lo pongo sin comillas cuando quiero poner un tipo de datos que sea una cadena una cadena es una cadena de caracteres alfanuméricos es decir un conjunto de letras y números lo pongo entre comillas puedo poner un número entre comillas pero no puedo poner una cadena sin unas comillas ahora lo divertido sería ver qué es lo que ocurre cuando recargo en la pantalla bien lo que ocurre es nada que yo haya creado una variable que yo haya guardado datos en la variable no quiere decir que tenga que ocurrir algo necesariamente por pantalla simplemente quiere decir que la memoria del servidor se ha guardado la asignación de que mi bar vale 5 ya está mirar vale cinco primeros a que es por pantalla si queréis sacarlo por pantalla simplemente podéis hacer eco viva ya sabéis que convivan eco sirve para lanzar algo por pantalla mi bar es una variable que he creado antes así que qué va a hacer el programa cuando yo lancé con mi bar por pantalla pues va a decir hola si mi bar es igual a hola mi bar aquí pone hola pero mi bar es igual a hola o mi bar es igual a 5 en este caso lo que he hecho lógicamente y cuando digo lógicamente quiero decir según la lógica el programa es que en primer lugar le ha asignado mi bar es igual a 5 pero a continuación lo que he hecho es reasignar la variable cambiar el valor de la variable y ponerle hola si antes mi bar valía 5 y ahora de repente vale hola lo que vale es lo último que le diga fijémonos todos que dentro de la palabra variable variable quiere decir que su valor puede variar y de hecho suele variar hay otro elemento en php que son las constantes que son declaraciones que no van a cambiar de valor no se usan mucho en php aunque tengo que decir que su utilidad está muy clara porque gastan menos memoria que las variables se reservan más memoria en el servidor por gastar una variable que una constante nuestra pregunta podría ser bueno pero de cuánta memoria estamos hablando mi respuesta podría ser que a este nivel no mucho al nivel de usar una variable y cambiar el su valor a mitad de ejecución de un programa la memoria que usamos en el servidor podría ser despreciable de algunos bytes quizás algún k si llega pero claro debemos empezar a ir pensando qué pasará cuando creemos programas complejos que no tendrán una variable sino que podemos tener decenas de miles de variables malgastar un poco de memoria en una variable no pasa nada malgastar un poco de memoria en diez mil elementos diferentes a ella la cosa puede ser diferente trabajamos ahora con un elemento llamado operadores los operadores nos permiten realizar operaciones con cadenas en primer lugar voy a quitar esta segunda asignación me voy a quedar con mi bar porque curiosamente lo que me interesa es trabajar en primer lugar con operadores matemáticos voy a quitar de hecho mi bar ya que se puede trabajar con operadores matemáticos y a la vez con variables pero quiero separar los dos conceptos así que voy a empezar trabajando únicamente con un eco lo que voy a hacer es poner un comentario y al poner un comentario lo que he hecho es desactivar simplemente esta línea los operadores más sencillos dentro de php son los operadores matemáticos así que dentro de los operadores matemáticos el primero que tenemos es el operador aritmético de suma representado con el signo más así que echo 5 + 5 lo que nos dice en la pantalla es 10 esto una vez más y yo siempre lo digo llegado a este punto para mi marca la diferencia entre un lenguaje de marcado y un lenguaje de programación qué pasa si dentro mute ar esta línea que pasa así dentro de html pongo 55 html no es un lenguaje de programación es un lenguaje de marcado así que html te dice todo en telecinco +5 yo te digo cinco más cinco no te digo ni más ni menos pero php es otra cosa el hc es un lenguaje de programación así que cuando le dices 5 + 5 lo que realmente te dice es 10 es decir es capaz de tener una entrada realizar un cálculo y devolverte una salida una demostración si queréis muy sencilla de la diferencia entre un lenguaje de programación y uno de marcado pero no por ello menos útil bien hemos dicho que por tanto el signo más es la suma el guión es la resta por tanto 5 menos 5 es igual a 0 al igual que prácticamente en cualquier programa de ofimática que podáis conocer el asterisco sirve para multiplicar por tanto 5 por 5 es igual a 25 y al igual como prácticamente cualquier programa de ofimática que podéis usar la barra que obtenéis pulsando mayúsculas y 7 es la herramienta para dividir así que 5 entre 5 es igual a 1 hay varias en varias herramientas aritméticas más a mí me gustaría destacar una que es el porcentaje que no es realmente sacar el porcentaje sino es el resto entero de la división cuánto es 6 partido 4 en este caso seis partido 4 el resto entero de la división evidentemente nos da 2 porque 6 entre 4 cabe a una y sobran dos así que el resto entera de la división simplemente se trabaja mediante el porcentaje podréis pensar ahora mismo que quizás no sirve para nada pero más adelante veréis especialmente en algunos casos como tienda online en que esta herramienta os va a venir muy bien dos operadores con las que trabajar a continuación son el de incremento y el de decremento para esto voy a volver a activar mi bar y voy a hacer que mi bar sea igual a 5 así que echo mi bar el resultado en pantalla es 5 ahora en una línea intermedia voy a poner mi bar plus dívar plus es el operador de incremento concretamente el de post incremento y si ahora guardo me dice que vale 6 que ha pasado aquí cuando yo le pongo algo más más le aplicó un operador de incremento y esto equivale a decir toma lo que valía y sumarle 1 así que 5 en este momento mi barba de 5 llegados a esta línea a mi bar vale 6 cuando recuperó mirar por pantalla mi bar vale 6 no existe el operador de doble poste incremento por tanto si digo más más más más de puesto 5 de hecho el programa lo que hará es error error de sintaxis decirle más más al igual que decirle menos menos que es el operador de incremento si os fijáis equivale a esto bueno 5 decremento le quitó una unidad por tanto me queda 4 poner por ejemplo más más equivaldría a la fórmula más larga pero servible pero válida que es mi bar es igual a mi bar más 1 yo valgo lo que valía más 1 así que en este caso mi bar es igual a mirar más uno es igual a 6 en este caso por tanto podríamos usar ahí si más 25 más 27 538 y así es esta la única manera de hacer incrementos superiores a 1 no hay una fórmula abreviada que al principio suele costar bastante de atrapar que es la siguiente si le quiero sumar un valor ya sabemos que le pongo más más y ya está pero si le quiero sumar tres valores pongo más igual tres me va más igual 3 es igual que decir coge lo que valiera y sumarle 3 mirar menos igual 3 es igual a decir coge lo que vale lo que valiera y restarle 3 por tanto en este caso de 5 pasamos a 2 un operador muy especial sigo trabajando dentro de variables voy a cambiar a un archivo nuevo llamado operadores así que me hago un archivo nuevo lo llamo operadores punto php lo cargo y ya sabéis que no lo cargo aquí directamente sino que lo llamo operadores creadores php abro la etiqueta de código php y escribo lo siguiente voy a crear mi bar 1 es igual a hola mi bardos es igual mundo lo que yo quiero ahora es ver las dos variables una después de otra que podría hacer lo siguiente echo mi bar 1 tco mi bardos y técnicamente sería correcto se hará guardo y recargo comprobamos cómo pone hola mundo pero sin embargo es repetido dos veces la palabra eco y cuando repito varias veces algún programa acción seguramente hay una manera mejor de hacerlo entonces yo no puedo esta variable y ponerla a continuación simplemente porque eso no funciona guardó recargo y error de parcheado no puedo separarlas con un espacio porque no quedó mejor sino que queda exactamente igual hay un operador que en php se llama operador de concatenación que existe en muchos lenguajes de programación que es el punto debo decir que php que es un lenguaje que deriva de cee y por tanto hereda muchas de sus reglas en este caso difiere porque la gran mayoría de los lenguajes que me llevan dc el operador de concatenación es el signo más pero en cambio en php el operador de concatenación es el puntito así que si yo pongo mi bar 1-1 mi bardos guarda y recargo veremos como pone ahí hola mundo yo suelo decir que el operador de concatenación es algo así me recuerda quizás sea mi solo el enganche entre varios vagones de un tren fijaos cómo puedo poner allí junto mi bar uno otra vez punto mi bardos y si os fijáis es como un pequeño tren en donde los vagones están encadenados por puntos puedo encadenar además en cualquier momento mi bar 3 es igual a 6 podrán encadenar sin ningún problema variables de tipo cadena con variables de tipo numérico vivar 3,6 en este caso me decía que tenía una variable no definida fijaos el problema es que había creado mi bar 3 pero había llamado a mi bar 6 existe mi ver 6 no existe mi bar 6 y por tanto cuando recargo me dice estás llamando a una variable que previamente no has definido llamada mi barça así que como siempre mucho cuidado con lo que escribimos en php vamos a trabajar con otro tipo de operadores donde en este caso no voy a asignar sino que voy a comparar así que en este caso voy a decir echo 3 menor que 4 si os fijáis hay un operador que hemos estado usando hace un buen rato y que no os he dicho nada que es el operador de igual la igualdad igualdad sencilla quiere decir en php y en cualquier lenguaje de programación asignación quiere decir a un elemento en este caso una variable le asignó un valor pero qué quiere decir 3 menor que 4 en el momento en el que pongo menor que empiezo con los operadores de comparación así que en este caso lo que estoy preguntando es si acaso es cierto que 3 es menor que 4 el resultado depende un poco de cada servidor hay servidores que me dicen tú hay servidores que me dicen uno entonces en este caso válido y me encuentro que me dice uno ahora voy a poner porque es cierto que tras ser menor que 4 ahora voy a poner mayor que lo que estoy preguntando es cierto que es mayor que 4 no es cierto entonces hay algunos servidores donde ponen false hay otros servidores que ponen 0 y hay otros servidores que no ponen nada por tanto vamos a verlo en este caso y en este caso este servidor es de los que no ponen nada no es un error simplemente es una falsedad si el signo igual un signo igual es de asignación el doble signo igual es de comparación lo que estoy haciendo es preguntar es cierto que 3 es igual a 4 así que recargó y dice que no es cierto porque no dice nada es cierto que 4 es igual a 4 en este caso dice 1 porque es cierto y ahora una pregunta trampa es cierto que 4 es igual a 4 con comillas bueno pues en este caso los que sí que es cierto porque la igualdad con doble igualdad solo está contemplando el valor de los datos no el tipo de los datos en este caso ya sea mediante un número o mediante una cadena de caracteres alfanuméricos lo cierto es que el valor es 4 es cierto que esto es un número y esto es una cadena pero finalmente el valor es 4 por eso si comparo con doble igualdad el resultado de acierto porque da 1 hay un tercer método no muy usado en php pero que de vez en cuando os lo podéis encontrar que es la triple igualdad que es la igualdad de estricta lo que está preguntando es si por una parte el valor es el mismo y por otra parte el tipo de datos es el mismo así que en este caso evidentemente el valor es el mismo pero el tipo de datos no lo es ya que no es igual un número que una cadena así que guardo y recargo y en este caso me dice que es falso los menor que y mayor que se pueden combinar con iguales por ejemplo puedo poner menor que voy a poner un número es cierto que 4 es menor o es igual a 5 bueno no es igual pero sí que es menor por tanto el resultado es 1 es 5 es cierto que 5 es menor o igual que 5 no es menor pero sí que es igual por tanto uno es cierto que 6 es menor o igual que 5 ni es menor ni es igual por tanto el resultado no tiene más remedio que ser cero que ser falso cuidado mucho cuidado porque se pone menor que es menor o igual o se pone mayor o igual no se pone igual o mayor simplemente porque en php en la parte de programación orientada a objetos este símbolo quiere decir algo específico que no es igual o mayor por tanto pondremos siempre mayor o igual es cierto que 6 es mayor o igual que 5 es mayor aunque no sea igual es cierto que 6 es mayor o igual que 6 no es mayor pero es igual y por último un carácter muy divertido es la negación que se expresa con el símbolo de admiración en este caso lo que estoy preguntando es es cierto que 6 no es igual a 6 no es cierto porque 6 y que es igual a 6 por tanto el resultado es verdadero es cierto que 6 no es igual a 7 en este caso es cierto también existe la negación inversa estricta es cierto que 6 no es igual a 7 también con el tipo de datos en este caso es cierto es cierto que 6 no es igual a 76 un número 7 es una cadena en este caso no es cierto mira también cierto aclaró porque bueno ahí tendría que ver qué está pasando porque no puede ser que uno sea verdadero y otro sea falso pero en fin sea como sea con el doble con la doble designación de igual vale y con la admiración siempre lo que vamos a hacer es indicar la negación de cualquier elemento parece que no lo vamos a utilizar pero os aseguro que en el desarrollo de aplicaciones web usaremos muchas veces el signo de admiración para decir la negación porque la negación muchas veces es el grupo complementario a una afirmación vamos a continuación ahora sí con los operadores vulcanos y los operadores bull ya nos me permiten evaluar parejas o grupos de afirmaciones de expresiones mirad lo que hago es poner un paréntesis para trabajar mejor el contenido de cada una de las expresiones y voy a poner dos tipos de operadores búlgaros realmente hay tres pero vamos a usar dos que son los principales en primer lugar tengo el operador and el operador am me pregunta si es cierta una expresión y si también es cierta la otra es cierto que uno es igual a uno y que tres es igual a tres en ese caso guardo recargo y el resultado da 1 porque es cierto que esto es cierto y también es cierto que esta parte de aquí es cierta pero es cierto que uno es igual a 2 y también que 3 es igual a 3 bueno es cierto que 3 es igual a 3 pero uno no es igual a 2 por tanto el resultado global en la pantalla es falso las operaciones julianas nosotros nos sirven para validar parejas de expresiones sino que también nos permiten validar tríos cuartetos o lo que queramos 4 es igual a 4 en este caso es cierto que uno es igual a 2 y que 3 es igual a 3 y que cuatros igual a 4 guardo recargo y sigue sin ser cierto porque con los operadores julianos de tipo todos todas las expresiones tienen que ser ciertas para que la global sea cierta con una que no sea cierta la global ya no es cierta ocurre algo diferente con el operador william o por el operador booleana por cuyo símbolo es el vertical pipe que se saca pulsando al xerez y el número 1 del teclado se ponen dos países para poner uno se pone primero pulsar la tecla al xerez del teclado y luego pulsar las dos veces el número uno y en el teclado por lo menos con distribución en español sale el vertical type que probablemente es una barra que no hemos usado nunca solo para maquetar algún documento visualmente pues lo que nos está preguntando en este caso es es cierto que uno es igual a dos no es cierto o bien es cierto que tenés es igual a tres es así o bien es cierto que 4 es igual a 4 mientras que el operador william o andy requiere que todas las expresiones sean ciertas el operador guliano ahora con que una sea cierta es suficiente así que en este caso aunque esta de aquí no es cierta como esta de aquí sí que lo es y ésta también lo es finalmente el resultado en pantalla el resultado final hasta ahora estamos trabajando con conceptos bastante abstractos y puede parecer que no sirven para nada pero más allá nada más lejos de la realidad y es que vamos a ver a continuación con las estructuras de control como nos apoyaremos en las expresiones especialmente en las búlgaras para poder definir estructuras de control que es una estructura de control una estructura de control es una parte de php una parte de cualquier lenguaje de programación que se encarga de designar por donde va el programa por donde se va ejecutando y por tanto nos permite por ejemplo tomar decisiones hay dos tipos de estructura de control están las estructuras de control condicionales y están las estructuras de control de tipo bucle así que voy a hacer una primera estructura de control en este caso se llama if es una estructura de control de tipo condicional y la estructura de control de tipo condicional llamada if dice lo siguiente y expresión y expresión evidentemente de pseudo código verdad no es código real pongo código que ejecutó si la expresión es cierta alternativamente opcionalmente puedo poner else y pongo el código que ejecutó si la expresión es falsa así que básicamente una estructura de control tiene esas piezas primero válido la expresión si la expresión es cierta en este caso ejecutó un código si no ejecutó otro esto que acabo de escribir ese euro código no es código realmente es una mezcla entre el código y el lenguaje humano que nos sirve para aprender una parte del lenguaje voy a poner todo este código dentro de un comentario lo voy a desactivar y ahora voy a hacer un trozo de código real voy a decir edad es igual a 35 y ahora escribo lo siguiente si edad es menor que 20 voy a poner 30 por ejemplo si edad es menor que 30 echo eres un joven en caso contrario en caso de que la expresión no sea cierta echo ya no eres tan joven hasta ahora hemos escrito programas que ejecutaban el código desde arriba para bajo línea por línea pero en este caso tenemos una estructura de control y eso quiere decir que la estructura de control va a hacer un poco de filtro y va a decidir qué partes del programa así que se tienen que ejecutar y qué partes del programa no se tienen que ejecutar así que en este caso vamos a repasar lo tenemos que la variable edad es igual a 35 es cierto qué edad es menor que 30 en este caso no lo es sí es cierto se ejecutará esta línea pero si no lo es esa línea no se ejecutará y se ejecutará esta de aquí guardo y recargo comprobaremos bien en este caso era cuidado tengo un error se ha usado una constante edad esto es porque se me ha olvidado poner el dólar ahora sí así que ahora recargo y dice ya no eres tan joven qué pasaría si por ejemplo dijera edad es igual a 25 en este caso es cierto qué edad es menor que 30 si por tanto ejecutaría este código de aquí y no ejecutaría este código de aquí guardo recargo y dice eres un joven como podemos ver las estructuras de control if nos permiten especificar nos permiten elegir nos permiten introducir un criterio para ver qué partes del programa en un momento dado sí que se van a ejecutar y qué partes del programa no se van a ejecutar las estructuras de control y al igual que la gran mayoría de estructuras de control dentro de php admiten la anidación la anidación a la larga se considera una mala costumbre dentro de la programación pero esto será a la larga hoy estamos aprendiendo nuestra primera estructura de control y por tanto nos interesa saber que al menos se puede anidar que de cara al futuro sea conveniente o no ya es una discusión diferente así que yo hasta ahora si os fijáis realmente tengo tengo dos rangos tengo el rango de si eres menor que 30 te digo una cosa si eres mayor te digo otras son dos rangos diferentes pero yo ahora quiero poner cuatro rangos así que lo que voy a hacer es poner un if dentro de otro y dejémonos que estoy trabajando con las sangrías para que veáis claramente quién está dentro de quién por cierto que en php las sangrías al igual que en muchos otros lenguajes derivados de ce son puramente visuales no son funcionales podríamos no poner sangre as pero convendrán conmigo que en este caso poner sangría nos ayuda a saber quién depende de quién así que si era de es menor que 30 pero ahora cuidado ahora quiere decir y a su vez si edad es menor que 15 diré eco estas he hecho un chaval si no aquí las cosas se empiezan a complicar un joven else voy a poner su edad es menor que los 55 o 60 no sé eco ya no eres tan joven els eco ya eres todo un señor cuidado con las que van a causar algún problema pero bueno no pasa nada en este caso por tanto tengo anidadas cuatro condiciones y digo lo siguiente edad es menor que treinta y además dentro de que es menor que treinta además es menor que quince por ejemplo edad es igual a doce en este caso diré estás hecho un chaval pero edad por ejemplo es 18 en ese caso se cumplirá qué edad es menor que 30 pero no se cumplirá qué edad es menor que 15 por tanto nos dirá eres un joven esto globalmente es cierto pero esto no es cierto luego va a ejecutar esta línea de aquí en el caso de que igual edad sea llego a la 38 es cierto que edad es mayor que 30 pero no es cierto que edad sea perdón sí que es cierto que sea menor que 55 por tanto ejecuta esta línea de aquí en el caso en que diga por ejemplo 68 comprobaremos cómo dirá ya eres todo un señor con el problema de las en es por la etiqueta tf8 pero eso ya es un problema de html no de php y en este caso como veis no se ejecutará esta cuarta línea de aquí por tanto el mensaje de la moraleja es que se pueden anidar estructuras de control y dentro de php pero también veréis que otra de las moralejas es que siempre que podáis no lo hagáis porque el código anidado para empezar es difícil de leer por el ser humano y para acabar también a veces es poco eficiente en la ejecución en el servidor vemos ahora otra estructura de control de tipo condicional pero en este caso vemos una que se llama switch por eso escribo un nuevo archivo llamado switch la estructura de condición de condición switch está pensada para cuando los casos posibles son más que dos la estructura de control y trabaja con verdadero o falso y hay muchas preguntas en la vida real que se pueden resolver con verdadero o falso pero hay otras que no por ejemplo si yo te pregunto qué día es hoy tú no me dirá es verdadero o falso tú me dirás hoy puede ser lunes martes miércoles jueves viernes sábado domingo no hay sólo dos casos verdadero o falso posibles en este caso hay siete casos posibles así que para cuando hay más de dos casos posibles usamos una estructura de control como ya os digo que se llama switch os alegréis de qué la sintaxis es muy parecida a la estructura de control switch la expresión y digo acaso uno código libre muy importante el break habréis por qué caso 2 código y break y así tantas veces como haga falta esto es el pseudo código para entender el funcionamiento de la estructura de control while lo que estoy haciendo es meterlo dentro de un comentario para que se quede desactivado vamos a escribir ahora una estructura de control real digo día de la semana es una variable y voy a poner que es igual a lunes así que digo switch día de la semana en caso de que sea lunes pongo eco hoy es el peor de la semana y no os olvidéis de un break al finalizar dejadme que baje un poquito el tamaño de fuente para que todo lo que para dentro de la misma línea martes atención que esto de aquí no es punto y coma sino que son dos puntos esto sí que es punto y coma pero después del caso vienen dos puntos y digo echo hoy es el segundo un día de la semana y un break al final de cada uno de los casos keys miércoles los puntos seco ya estamos a mitad break keys jueves seco ya casi casi reik qué es viernes seco un día fantástico break y podríamos trabajar también atención con shabán dos puntos aquí muchas veces os equivocáis el mejor día de la semana y por último es domingo seco el lunes se acerca break hay otro caso posible que yo recomiendo poner que es default default es qué pasa si alguien me dice cualquier otra cosa ahora veréis echo lo que has introducido no es un día de la semana vamos a verlo en este caso lo que voy a hacer por tanto en este caso es decir día de la semana es igual al lunes por tanto que es día de la semana si es lunes ejecuta hoy es el peor día de la semana si yo pongo martes revisa ese día de la semana va a caso por caso y dice hoy es el segundo el peor el segundo peor día de la semana si yo pongo sábado me dice hoy es el mejor día de la semana como veis es un código de toma de decisiones que sólo ejecuta uno de los casos qué pasa si pongo longaniza esta estructura de control está pensada para tomar lunes martes miércoles jueves viernes a domingo pero no longaniza por tanto longaniza entra dentro del default de fault es cualquier cosa que no sea un caso normal es default y por tanto dice longaniza lo que has introducido no es un día de la semana los ‘breaks’ son importantes mirad lo que voy a hacer a continuación voy a eliminar los ‘breaks’ más que eliminarlos porque no me gusta eliminar nada lo que voy a hacer es mute ar los lo que voy a hacer es esconderlos así que guardo recargo y fijaos que si pongo el lunes y guardo de recargo y me dice oye sector de la semana hoy es el segundo ya estamos a mitad ya casi casi porque lo que ha hecho es ejecutar el lunes pero como no hay un break ha seguido ejecutando en línea línea línea línea hasta el final el break sirve para decirle ya has ejecutado esta línea break rompe esta estructura salte de la estructura no continúe ejecutando nada más porque no hace falta y eso sí puedes continuar ejecutando el resto del código que venga a continuación del programa seco el resto del código con el resto de instrucciones que consideren necesarias hoy es el peor día de la semana y después el resto del código una vez que hemos visto estas dos estructuras de control condicionales vamos a empezar con otras estructuras llamadas de bucle son también estructuras de control como it y como while pero hacen otra cosa ahora veréis un poco diferente primero vamos a empezar con una estructura de control llamada while cargo a él en el editor cargo while en el servidor y escribo el siguiente código escribo while condición como digo que ejecutó todo esto es el código así que lo voy a desactivar y ahora voy a poner lo siguiente mi bar es igual a 5 así que mientras sea cierto que mi bar es menor que 10 en este caso echo me voy a ejecutar de hecho voy a poner me voy a ejecutar con br para intercalar una etiqueta html de retorno de carro si ahora guardo y recargo vosotros ahora mismo igual no lo veis pero acabo de colgar el servidor porque ocurre lo siguiente lo que acabo de hacer ahora mismo en la pantalla se llama bucle de ejecución infinito por una razón muy sencilla guardo recargo voy a dejar un montón de zeraín a este trozo de código salido dentro de treinta segundos de acción a finalizarse y se continúa ejecutando este infinito razón muy sencilla si quieres que va a ser a la 10 dime me voy a ejecutar llego aquí mi madre es menor que 10 si me ejecutó vuelvo es cierto que me ver es menor claro no sigue siendo ejecutó aquí vuelvo aquí es cierto que mi bar es menor que 10 cierto se vuelve a ejecutar y por tanto como el valor de mi bar nunca llega a cambiar lo que ocurre realmente es que el bucle se ejecuta de manera infinita como ya os digo de manera infinita hasta los servidores normalmente tienen un límite de 30 segundos de ejecución por script hasta que lleguen esos 30 segundos o el tiempo que apache tenga estipulado y simplemente se detendrá simplemente llegar a ese script y el servidor devolverá un mensaje en el que dirá finalizado el script tras 30 segundos de tiempo máximo vamos a verlo sino lo parodió manualmente en este caso esta interacción deschamps parece que tiene algo más de 30 segundos de límite bien para evitar esto tengo que hacer algo muy sencillo dentro del bucle while pongo mi bar + + es decir utilizó un operador de incremento que está colgando el servidor lo que apunto es abrir una pestaña nueva y ocurre lo siguiente me ejecuta ese bucle únicamente cinco veces vamos a ver por qué y barça igual a 5 es cierto que mi bar es menor que 10 sí que es cierto así que me voy a ejecutar mi bar más cuánto vale ahora a mi bar vale 6 porque mi bar más más le ha sumado un valor es cierto que mi bar 6 es menor que 10 cierto pues me ejecutó otra vez llevar más más ahora vale 7 la siguiente vez que pasó por aquí vale 8 la siguiente vez que pasó por aquí vale 9 la siguiente vez que pasó por aquí vale 10 así que cuando me mar vale 10 la siguiente vez que lo intenta ejecutar dice es cierto que mi bar es menor que 10 es cierto que 10 es menor que 10 no es cierto y al no ser cierto se para la ejecución continúo con el programa y tras salir de ese bucle continúa con el resto del código las estructuras de control de tipo de tipo bucle como veis son estructuras que se encargan de repetir varias veces una cierta porción del código en este caso tenemos un caso especialmente desfavorable que es un caso en el que si no hemos tenido cuidado hacemos un bucle infinito hay veces veces concretas en las que nos interesan los bucles infinitos pero ahora mismo coincide que no una estructura muy parecida a wilde es la estructura llamada aforo podríamos decir y esto es simplemente una manera de hablar que la estructura foro es algo así como la hermana mayor de la estructura while mirar por qué la estructura foro es cierto que se declara poniendo por paréntesis y llaves por es la expresión pero la expresión es compleja es el inicio punto y coma el final punto y coma cuidado con la palabra final porque estará reservada de php final ahora debería usar y el incremento y aquí está el código que se va a ejecutar esto es pseudo código y vamos a verlo ahora ha demostrado a mí siempre me gusta mucho hacer este ejercicio mirar digo foro un día entendiendo día del mes es igual a 1 el primer día del mes es el día 1 punto y coma día es menor o igual que 31 supongamos un mes de 31 días punto y coma día más más y ahora digo echo hoy el día punto para encadenar día punto del mes espacios para maquetar correctamente vamos a ver que nos saca esto en pantalla un retorno de carro html y el resultado es este de aquí hoy es el día 1 del mes 2 3 4 5 6 7 8 9 y 10 y así con el resto de días hasta el día 31 así que que nos permite hacer el bucle for si os fijáis el bucle for es muy parecido al bucle while pero tiene una diferencia y es que con el bucle while la declaración inicial la he tenido que hacer fuera y el incremento lo he tenido que hacer dentro del código en cambio el bucle foro podríamos decir que es algo así como un poco más avanzado porque dentro del mismo paréntesis almacena tanto el inicio como el final como el incremento esto de que el bucle for es más avanzado que el buque vamos a ver otro bucle de control otra estructura de control de tipo bucle está podría denominarse una estructura de control tonta pero que ahora veréis que tiene su razón de ser es una estructura llamada dubail the wild php lo cargo en el editor lo cargo en el navegador y vais a ver qué dubail es como una variación de wilde pero con una diferencia primero se dice y se escribe el código que se ejecuta y luego se escribe while y se pone la condición de ejecución como veréis esto nos va a causar un problema mirad la atención yo digo persona igual a inocente la persona puede ser culpable o inocente así que ahora digo tú tco dispara while inocente perdón baile persona sea igual culpable y por cierto en la estructura de control de tipo while a diferencia del resto de estructuras de control que hemos visto hasta ahora se acaba con un punto y coma esto no es necesario en las estructuras que hemos visto hasta ahora sólo es necesario en uruguay atención la persona es inocente deberíamos disparar si persona es culpable entonces dispara deberíamos disparar si la persona es inocente no hay un problema de co dispara y es que con el bucle de while primero se ejecuta dispara y luego se pregunta claro cuando se pregunta ya es demasiado tarde porque ya se ha ejecutado el código si quieres no se volverá a disparar pero ya es ejecutado al menos una vez al entonces while primero pregunta y si es cierto entonces ejecuta uruguay el primero ejecuta y luego se pregunta que seguía siendo cierto vuelve a ejecutar que era falso no te ejecute es más pero una vez sí que lo es ejecutado para qué sirve esta estructura de control cierto es que no se usa todos los días pero tú por ejemplo imagínate que haces el buscador de productos no tiene online cuando alguien busca un producto y no haya ningún resultado en lugar de enseñarle nada por lo menos enseñar un producto el du wild lo que haría es ejecutar una vez enseñarle un producto y si luego no hay más productos no enseñe nada más pero por ejemplo en este caso podríamos decidir que más vale enseñar un producto que mostrar un resultado de una búsqueda igual a cero sin nada sin productos un ejemplo un poco de andar por casa de para que nos podría servir un poquito igual sirve para muchas cosas más a continuación vamos a hacer un ejercicio para poner en práctica los conocimientos que hemos aprendido hasta ahora y para ello vamos a hacerlo creando un ejercicio llamado calendario por tanto voy a crear una página llamada calendario punto php técnicamente aunque esa página se llama el calendario no tengo por qué escribir todo en php así que incluso en este caso en este ejercicio no voy a escribir la etiqueta doc type voy a escribir la etiqueta de apertura de gm voy a escribir la etiqueta de apertura de body cuidado porque el gel se me hace raro mal y ahora por aquí voy a ponerme está char set es igual a efe jon 8 y aquí entra y tel voy a poner calendario más que nada para demostraros de paso que hacemos este ejercicio cómo podemos mezclar perfectamente html y php guardo recargo y ahora voy a hacer un calendario y para hacer un calendario voy a hacer lo siguiente viva klaus vía y de es igual a 1 y digo por ejemplo hoy es el día 1 si quieres lo voy a poner en una sola línea para verlo mejor guardó recargo día 1 un poquito de estilo me permitirá es decir que todo aquello que sea de la clase día tendrá un wifi de 50 píxeles un raid de 50 píxeles y un borde de un pixel solid black guardo recargo y tengo ahí como un día del calendario como un cuadradito si yo no supiera php y quisiera hacer un mes entero yo sé que tendría que venir aquí y empezar a copiar 1 2 45 1 2 3 4 y 5 ahora ahí tengo cinco días déjame que además al día le ponga flow left y tengo ahí los cinco días laborables de la primera semana del mes pero ahora empezar a imaginar y empezar a imaginar que no supiera php y que por tanto tuviera que escribir los 31 días del mes manualmente ahora imaginaos que en lugar de escribir un mes quiero un año entero y tengo que escribir 365 líneas con el calendario cuando ese momento llega cuando tengo que repetir demasiadas cosas es cuando pienso que ahí quizás me podría ayudar así que hago lo siguiente dentro del body porque en cualquier parte de html puede intercalar body tengo una etiqueta de apertura y de cierre de php y quiero que algo se repita 31 veces así que digo four es igual a 1 díaz es menor o igual que 31 día más más y digo echo cuidado aquí cuidado aquí porque voy a decir echo y corto esta línea de aquí problemas para empezar una cadena de caracteres en php he usado las dos comillas pero cuando llego aquí me encuentro con que este objeto ya tenía dos comillas así que php cree que allí estoy cerrando estas comillas de aquí y no lo estoy haciendo este problema con php es muy común y evidentemente como os podéis imaginar nos causa un error porque el programa no sabe interpretar esto posibles soluciones a este problema la primera si dentro uso dobles fuera uso sencillas si dentro usó comillas dobles fuera uso comillas sencillas segunda solución si fuera uso comillas dobles dentro uso comillas sencillas y la tercera solución si estoy obligado a dentro y fuera usar comillas dobles a las comillas interiores les pongo una contra barra también conocida como carácter de escape la contra barra está diciendo estas son comillas sí pero no son comillas que cierran a estas son comillas normales así que con cualquiera de las tres soluciones comillas simples comillas dobles o caracteres de escape solucionamos el problema que tengo ahora si guardo y recargo lo que tengo vamos a verlo es un calendario día más más vamos a verlo 1 punto y coma bien está bien escrito tengo aquí a cuidado me vuelve a pasar aquí veis he arreglado estas comillas pero no éstas de aquí así que con trabajo de escape y ahora si tengo un calendario de 31 días pero en los 31 días pone 1 así que lo que haré ahora simplemente va a ser escapar y encadenar día pongo primero comillas para decir que es algo de estas comillas segundo punto para decir que encadenó con una variable la variable es díaz ya la tengo una vez que tengo la variable quiero volver al interior de la cadena así qué punto comillas y vuelvo a la cadena esto es como el tren que hemos comentado antes además también voy a hacer esto mismo para este número uno si ahora guardo y recargo observaré como ya tengo un calendario que curiosamente en este caso os voy a decir que funciona de casualidad funciona de casualidad porque justo miradero no funciona la semana son de seis días entonces está cayendo al siguiente día por casualidad verdad teóricamente tendría que ocurrir eso pero claro no le estoy diciendo en ningún momento eso lo haremos a continuación que quiero saltar al séptimo día de la semana pero de momento lo que me importa es que mira atención a la pantalla es que este trozo de código me ha ahorrado ver código fuente de la página escribir todo este código por tanto esto es para lo que nos sirve php php nos sirve para automatizar el código que vamos a escribir en lugar de escribir todo eso en lugar de escribir los bits día a día no hecho simplemente con esta sencilla estructura de control de bucle esta sencilla estructura de control repetitivo dentro de php y por supuesto una vez más así como hemos visto antes vemos como cuando miro el código fuente de la página no hay ni rastro de php porque simplemente php convierte su contenido a código html y ese es el código que devuelve en la pantalla ahora mismo los días no están saltando correctamente si nos fijamos los días de hecho están saltando por simple inercia cuando llegar al final de la línea así que para arreglar esto voy a crear una estructura de control de tipo if dentro de una estructura de control de tipo for yo no os he enseñado las estructuras de control para que necesariamente las usadas por separado las estructuras de control se pueden combinar sin ningún problema evidentemente os has enseñado por separado para separar la enseñanza pero ahora que estamos haciendo un ejercicio os voy a enseñar como si nos interesa se pueden combinar así que voy a decir lo siguiente si día la resta entre 7 es igual a 0 a 0 sin cadenas en ese caso echo div style clear dos puntos que hacía clear voz lo que hacía que ir voces deja de flotar así que le estoy diciendo en aquellos días cuyo resto de división entre 7 sea 0 ese día baja abajo 7 entre 7 cuál es el resto 7 / 7 cada una y el resto es 0 14 entre 7 cuales el resto 0 14 entre 7 es igual a 2 y el resto es 0 pero 4 por ejemplo o 13 entre 7 el resto es 0 no 13 entre 7 cada una y el resto de 6 si hago esto por tanto ahora sí comprobaréis como cada siete días aparece un eco de styles killer voz y obliga al calendario a bajar da igual cómo de grande o como de pequeño lo haga con esto por tanto os quiero demostrar varias cosas en primer lugar os quiero demostrar que se pueden y de hecho muchas veces se deben combinar las estructuras de control y lo otro que os quiero demostrar es como cosas que en principio parece que no tienen mucha utilidad como por ejemplo las expresiones de igualdad o por ejemplo el resto de la división entero entera sí que finalmente acaban teniendo una utilidad bastante práctica y estoy haciendo un calendario que en muchas aplicaciones web vais a encontrar calendarios quiero decir que no es un ejercicio en absoluto extraño para lo que vais a acabar haciendo una de las cosas que más nos puede costar no solo al principio sino durante el desarrollo de un programa es ver dónde empiezan unas comillas y dónde acaban por tanto la solución del carácter de escape aunque es posible no es muy recomendable al menos al principio por tanto voy a cambiar el carácter de escape para que veáis aquí y aquí qué es lo que está ocurriendo primero empiezo con un día que tiene clase igual a día y que tiene un y de igual a día problema esto de aquí es una variable por tanto como es una variable lo que hago es escapar para escapar para cerrar he empezado con unas comillas dobles aquí pongo unas comillas dobles de tal forma que esto se convierte en un bloque es una cadena de caracteres alfanuméricos ahora quiero enganchar esta cadena de caracteres alfanuméricos con esta variable pero ya sabemos que para enganchar una cosa con otra tengo que hacerlo con un operador de encadenamiento representado por el punto si os fijáis después de este esta variable tengo otro punto y vuelvo a tener una zona donde veo comillas dobles para abrir comillas dobles para cerrar tengo ahora día comillas dobles que se abren comillas dobles atención que se cierra las he puesto aquí abajo para que en html se fuerce el retorno de carro el salto de línea a la línea siguiente pero realmente es esto por tanto sólo escribo así seguirá siendo un poco lioso lo sé pero ahí lo veréis un poco mejor un truco de php que no me gusta especialmente pero hay gente que lo usa es que no es obligatorio escapar las cadenas de caracteres yo puedo poner por ejemplo vía díaz y ya está es decir dentro de una cadena de caracteres a pelo y sin decir nada más he introducido una variable de php no me gusta ese método aunque funciona porque estoy mezclando html y php dentro de una misma línea mientras que con los escapes defino correctamente que es cada cosa compruebo como recargo y funciona igual de bien aunque no me gusta especialmente esa sintaxis por tanto la sintaxis que os recomiendo aunque al principio os cause algún problema de lectura o de claridad es la de usar comillas dobles y comillas sencillas para evitar usar caracteres de escape en este caso lo que quiero hacer es marcar por ejemplo los domingos como festivo y para ello me voy a crear una clase llamada festivo así que los días que sean festivos diré que tendrán background dos puntos red por ejemplo pero claro evidentemente nadie es festivo ahora mismo porque me hace falta especificar que este día y este día y este y este de aquí tengan la clase festivo así que yo me pregunto a continuación que tienen en común el 7 el 14 el 21 y el 28 pues lo que tienen a continuación es que el resto de la división entera es igual a cero por tanto puedo editar un poquito el código para poner lo siguiente deep class es igual a día y ahora voy a hacer un break eco y aquí lo tenemos fijaos he cogido día he cogido la línea de la clase y la he partido por la mitad y es perfectamente legal siempre que por ejemplo si aquí empiece la etiqueta aquí acabe la etiqueta es perfectamente legal aunque este partido en dos líneas diferentes puede poner incluso varios espacios no pasa nada el servidor ya la unidad si queréis guardo y recargo y comprobamos como el resultado sigue siendo perfectamente válido dejadme que baje una entera aquí para que lo veáis correctamente el resultado sigue siendo perfectamente válido ahora voy a hacer lo siguiente lo mismo si día el resto de la división entera es igual pero en ese caso echo festivo que ahora esto pues eso que acabo de hacer lo que hace es esto de aquí lo que hace es que me marca los días domingo en rojo en festivo simplemente porque esto es clase de día esto es clase día esto es que ese día pero este es día festivo tiene dos clases la clase día y la clase festivo porque éste tiene dos clases mirad porque si vengo al código digo el día 1 es festivo no en ese caso esta línea nunca se llega a ejecutar es cierto que el resto es igual a 0 no pues no ejecute es festivo por tanto ese día día uno tiene este código y tiene este código pero no tiene este código de aquí porque la ejecución de ese código está supeditada al cumplimiento de esa condición el día 7 tiene ese día festivo tiene el resto de la división entera es igual a 0 sí pues en ese caso ese día es festivo lo que hago por tanto es primero marcar con php el día que hemos creado como festivo y luego por supuesto con css específico qué es lo que pasa para ese estilo concreto del día lo primero que voy a hacer ahora que arrancó una nueva sesión de trabajo es decir he apagado y he vuelto a encender el ordenador y pongo localhost pulso enter y me encuentro que después de haber apagado y después de haber encendido del ordenador me sale el mensaje de que localhost no me devuelve ningún resultado esto es porque al apagar el ordenador tendría que volver a arrancar el panel de control del sunp y volver a arrancar por lo menos para trabajar con php el apache ahora bien qué pasa si voy a desarrollar todos los días de manera continua con php e incluso con php mysql pues que sería bastante incómodo tener que estar todos los días arrancando nada más arrancar el ordenador el samp me gustaría por tanto que esto arrancará automáticamente cada vez que yo arranque el ordenador lo que voy a hacer por tanto es colocar apache mysql como servicios y no como programas es decir como programas que arrancan ellos solos al arrancar el ordenador y se queda en arrancador durante toda la sesión voy a arrancar por tanto un explorador de windows en primer lugar y lo que os voy a decir es que no voy a ir atención no voy a ir a buscar el samp contra el panel no voy a ir a arrancarlo de esta manera en lugar de eso lo que voy a hacer es entrar directamente al disco duro local ce me voy a ir a la carpeta champ y dentro de la carpeta samp atención voy a buscar un ejecutable que es sham control ese es el ejecutable que arranca realmente el control panel del sunp pero la cuestión está en que en lugar de hacer doble clic que lo que estaría haciendo es arrancar este programa como usuario en lugar de eso voy a hacer clic con el botón derecho y voy a elegir ejecutar como administrador así que ejecutó como administrador por supuesto introduzco las credenciales si es que se me piden y observar que de esa manera aparece el panel de control pero con algo que no aparecía el otro día que son unas pequeñas equis en la parte de la izquierda el otro día cuando arrancamos el panel de control desde cero simplemente aquí en este cuadro aparecía el cuadro en blanco y aparecía una equis y aparecía una marca de validación pero como lo acabo de arrancar como administrador en este caso aparece una equis una equis quiere decir que ese elemento en este caso apache no está instalado como un servicio sino que está instalado como aplicación lo que voy a hacer por tanto es hacer clic en la equis para decirle al programa que quiero instalar el servicio apache pulso yes vamos a instalar de momento únicamente apache y encuentro que tras unos pocos segundos la instalación ha sido exitosa y por tanto ahora cada vez que reinicie el ordenador automáticamente habrá arrancado apache esto qué quiere decir pues que cada vez que abran el ordenador me va a gastar el servicio de apache más o menos unos 8 megas de ram 8 megas de ram más yo creo que luego desarrollé pero de momento 8 megas de ram lo que tenemos que preguntarnos es cuando arranque tenemos en nuestro equipo nos molesta o nos vale la pena gastar 8 megas de ram en principio para nada porque yo igual un día arrancó ordenador digamos el sábado y no programo nada en php pero gastó 8 megas porque tengo ahí apache encendido en cambio yo pienso que me vale la pena ya que desarrollo frecuentemente en php porque así digamos que de lunes a viernes cada vez que arranco ordenador no tengo que luego arrancar el control panel sino ya ese que arranca automáticamente si fuera 2 gigas de ram lo que gastará pues igual me lo pensaría porque diría haber dos gigas de ram es bastante de memoria hoy en día pero 8 megas de ram me parece que vale más la pena si lo vamos a usar dejarlo como un servicio que tener que arrancarlo manualmente cada día una vez que apache está instalado como servicio además en este caso le voy a dar a start en este caso porque no es reiniciar el ordenador por tanto como servicio es como decir la próxima vez que inicies arranca lo pero ahora para trabajar hasta que reinicie le doy además a estar de ahora así compruebo como si pulso localhost me aparece la página de bienvenida de sant porque ya tengo el sham correctamente arrancado anteriormente hemos estado hablando de variables las variables son unos contenedores que pueden albergar información y guardarme esta información para más adelante cuando la quiera utilizar en esta ocasión vamos a extender nuestro concepto de las variables aprendiendo a trabajar con matrices dentro de php y os digo esto porque a un nivel bastante básico las matrices son algo así como variables pero extendidas por tanto voy a crear un archivo llamado matrices php lo pincho y lo arrastró hasta el editor y dentro del local host voy a llamar a ese archivo poniendo localhost barra aprendiendo php barra matrices punto php comprobamos que estoy trabajando con el mismo archivo comprobamos que se ve correctamente bien ahora voy a iniciar unas etiquetas de apertura y de cierre de php y voy a decir lo siguiente ya sabemos que por ejemplo yo puedo poner que el nombre es igual a jorge así que nombre es igual a jorge no me devuelve nada en la pantalla no me devuelve necesariamente nada porque hasta que no hasta que no diga él con jorge con nombre perdón no aparecerá jorge en la pantalla pero ahora supongamos y este caso es bastante común que quiero hacer una pequeña agenda de nombres yo quiero hacer una pequeña libreta de direcciones una pequeña libreta de agenda en este caso en qué posición me deja nombre pues me deja en una posición bastante mala simplemente porque las variables son únicamente capaces de guardar un valor si yo ahora quiero guardar otro valor por ejemplo me voy a la línea siguiente y digo nombre es igual a juan recargo digo echo nombre y no me guarda jorge y juan sino que si escribo juan me ha machacado a sobre escrito el valor del nombre así que las variables están bien y las usaremos muchísimas veces pero debemos ser conscientes de que guardan un único valor yo siempre digo que las variables son algo así como un cajón de madera donde solo puedes guardar una pieza de información pero si en lugar de tener un cajón quiero tener una cajonera o quiero tener un armario para eso tengo las matrices las matrices son como un armario me permiten tener múltiples cajones y guardar una pieza de información en cada cajón os voy a decir que dentro de la naturaleza de la tipificación de bill de php crear matrices es muy sencillo porque voy a hacer simplemente lo siguiente atención cuando he declarado la variable o lo que hasta ahora era una variable que se llamaba jorge le voy a poner un par de corchetes a continuación atención corchetes no ya los corchetes son los dos botones que están justo encima de las llaves al menos en el teclado en castellano y voy a poner corchetes y voy a decir que por ejemplo el primer registro es nombre cero y el segundo registro es nombre 1 en este caso lo que acabo de hacer es inaugurar la primera de nuestras matrices basadas en índices donde el índice es el numerito que hay dentro de los corchetes veremos que hay matrices basadas en índices numéricos y hay matrices también basadas en cadenas que son muy cómodas de usar pero de momento vamos a trabajar con matrices basadas en índices en este caso debo tener cuidado fijaos lo fácil que ha sido declarar una matriz o convertir una variable en una matriz porque lo que he hecho aquí arriba está bien pero lo que he hecho aquí abajo está regular entonces si ahora digo nombre de cero nombre con el inicio cero es jorge nombre con el índice uno es juan dime que es nombre recargo y me dice cuidado no puedes hacer esto está regular damos cuenta de una cosa lo que tengo aquí es un notice no es un error por eso cuando os he dicho que lo que he hecho aquí abajo he dicho está regular no he dicho está mal y de hecho podría en principio ignorar el notice y vemos que aquí abajo dice array digo nombre de 0 es jorge el nombre de uno es juan que es jorge digo que es nombre el programa dice un array pero no querrás que te diga jorge y juan porque es una libreta de direcciones esto qué tenéis aquí es un notice es una advertencia y nos dice que en este caso está convirtiendo una matriz a una cadena ese es un error no es una práctica no recomendada pero no es un error y por eso lo pone dentro de un notice lo pone dentro de un notice porque cuando instala es sean se instala como un servidor de desarrollo y eso quiere decir que hay un archivo que veremos más adelante que se llama php punto in y donde se configura cómo funciona php y php s por el modo de desarrollo en el modo desarrollo quiere decir que quiero ver todos los errores y todas las advertencias cuando su vice vuestras webs y vuestras aplicaciones web 2.0 a un servidor veréis que los servidores está en modo producción los servidores en modo producción te suelen decir los errores pero no te suelen decir las advertencias por qué pues porque si yo tengo una tienda online por ejemplo yo tengo una advertencia no un error sino una advertencia queda muy mal para la confianza de la gente en mi sitio web que haya por ahí un mensaje que el usuario profano interpreta como un error pero no es un error es una advertencia por otra parte habría que decir que dentro de lo posible es evitar que eso aparezca debes programar sin advertencias pero hay veces que son un poco inevitables en este caso lo que tendría que hacer por tanto para solucionar bien este ejercicio sería simplemente o bien llamo a nombre de cero y me dice jorge o bien llamo a nombre de uno y me dice juan en lo que os quiero demostrar por tanto es que de momento aunque las matrices conceptualmente sean más complejas que las que las variables pero de momento ya tenemos algo y es que yo puedo declarar dos nombres sin que el segundo elimine al primero es decir cada uno de ellos ocupando su cajón correspondiente en el armario y sin molestarse entre sí hacer matrices unidimensionales como esta que acabamos de hacer es decir matrices de una sola dimensión como veis es fácil pero es igualmente fácil generar matrices de dos dimensiones dentro de php yo suelo comparar las matrices de varias dimensiones con rejillas en este caso voy a hacer una matriz de dos dimensiones y yo os diría que una matriz de dos dimensiones es algo así como una hoja de cálculo os diría que una matriz de tres dimensiones es como un palet lleno de cajas donde hay cajas en x en y y en zeta y una matriz de cuatro dimensiones no se refiere es un ejemplo gráfico de cómo sería eso simplemente sería como una especie de palet desplazándose en el tiempo y hablaremos de ello porque yo generalmente suelo un poco asociar las dimensiones de las matrices a las dimensiones del espacio pero realmente no tiene nada que ver simplemente una manera de verlo una ayuda para visualizarlo así que tú fíjate que yo tengo aquí por ejemplo el nombre y el nombre ha sido jorge ha sido juan podría ser jaime y porque no javier pero esto es una agenda muy mala porque sólo guardo nombres y además de nombres quiero guardar teléfonos y quiero guardar por ejemplo emails así que por ejemplo jorge es jorge jorge puntocom muy perdona desde su teléfono este su email y su teléfono es este juan tiene ese teléfono jaime tienes de teléfono abierto en ese teléfono y cada uno de ellos tiene un correo electrónico así que hasta ahora yo he sido capaz de guardar una matriz de una dimensión que crece como veis en este caso de mí y pero yo ahora lo que quiero es guardar una matriz de tres dimensiones perdón de dos dimensiones que crezca en y y crezca en x como no puedo hacer por tanto bueno para ello lo que puedo hacer es simplemente después del corchete creo otro corchete y ha de crear un corchete y por cierto puedo crear tantos como quiera para hacer matrices de n dimensiones de esta manera tan fácil en otros lenguajes no es tan fácil o bien pongo un número o bien pongo una cadena alfa numérica entonces digo el elemento cero nombre es jorge voy a decir que esto es una entrada entrada de la agenda entrada entonces digo entrada a 0 el teléfono estoy aquí entrada a 0 el email es info jorge puntocom por supuesto punto y coma al final así que para repetir el esquema cogería esta plantilla y la pegaría a continuación la entrada 1 el nombre es juan el teléfono es este y el correo es info juan puntocom ya no solo soy capaz de declarar una matriz de una dimensión sino que ahora puedo declarar matrices de dos dimensiones no quiero que os quedéis con la idea correcta con la idea incorrecta de que cuando haces una matriz de dos dimensiones la segunda dimensión tiene que ser de tipo cadena no es así se pueden hacer cadena y cadena número número número cadena cadena número por tanto guardo recargo aquí cuidado voy a decir que quiero ver de la entrada a cero el nombre y ahora en este caso nombre vamos a ver lo que va a tocar a hacerlo con números venga voy a hacerlo con números voy a poner cero un nuevo modificarlo y dos porque tengo que hacer otra cosa para las matrices con índices 0 1 y ahora quiero del elemento 0 obtener su elemento 0 que es el nombre donde por ejemplo en este caso 0 es el nombre 1 es el teléfono 2 es el correo electrónico así que guardo recargo claro cuidado a ver nombre entrada y me da jorge 0 de 1 es el teléfono 02 info jorge puntocom así que como veis ya sea numéricamente o ya sea mediante cadenas dejadme que ahora no ponga otra vez con cadenas pero es para demostraros que se pueden poner o bien números o bien cadenas de caracteres alfanuméricos y ahora pongo email y pongo email eso sí si ponéis ahora quiero de la entrada a cero el nombre y me dice jorge de la entrada pero quiero el email y me dice en su teléfono me dice su el correo electrónico es decir podéis mezclar en cualquier momento e índices numéricos con índices basados en caracteres alfanuméricos y si usáis caracteres alfanuméricos usar comillas si usáis índices numéricos podéis no usar comillas o podéis usarlas lo que acabo de crear aunque parezca que no es una pequeña agenda de contactos que he llegado un momento puede guardar cualquier tipo de elemento continuamos con un tipo un poco especial de variables llamadas variables de formularios son variables que evidentemente solo tienen sentido en combinación con los formularios que tenemos en html así que para ello voy a hacer dentro de la carpeta aprendiendo php y hacer ahora dos archivos un primer archivo llamado formulario enviar punto html porque este primer archivo que voy a crear va a ser html no tiene por qué ser php y el segundo archivo que voy a crear se va a llamar formulario recibe punto php html va a tener un formulario y va a enviar datos y php va a recibir el formulario y va a hacer algo con esos datos así que cargo formulario envía punto html formulario recibe punto php y atención muy importante dentro del navegador accedo al primer archivo a través del local host va aprendiendo php barra formulario envía punto html no cargo voy a crear una mini estructura por lo menos que el archivo sea mínimamente correcto voy a hacer un hair voy a hacer un budín y dentro del body voy a hacer una etiqueta forma donde las etiquetas que previamente probablemente no comprendíamos de los formularios de html ahora hoy las vamos a tener que comprender hay dos etiquetas principales una vez action y otra es mejor axxion indica apunta al archivo al que le voy a enviar los datos por tanto dentro de axxion voy a poner formulario recibe punto php y en mejor recordamos que tenemos dos métodos el post o el get y ya sabemos que como regla genérica siempre que podamos usaremos post aunque hay veces que el desarrollo de nuestras aplicaciones nos empujará a usar get lo digamos que como ahora no estamos metidos dentro de una aplicación sino que estamos un poco aprendiendo las bases del lenguaje vamos a usar post ahora yo digo input type muy importante name nombre imputar submit y si queréis pongo un place holder que diga dime tu nombre si ahora guardo y recargo aparece dime tu nombre le digo mi nombre es josé josé vicente de hecho y le voy a enviar lo que ocurre cuando le voy a enviar es que me lleva a formulario recibe php porque formulario recibe punto php es el axón es quien va a recibir la acción pero que hace el momento formulario recibe punto php pues no hace nada no hace nada porque está en blanco así que a continuación voy a escribir el siguiente código dentro del formulario recibe voy a decir simplemente una variable muy especial en este caso que es dólar atención es una variable especial post y digo apostó porque el formulario he prometido que le voy a enviar por post por tanto si el método pongo post en el tipo de variable pongo post y si en el método pongo get en el tipo de variable pongo get así que pongo dólar post un tarde corchetes como si fuera a llamar a una matriz y ahora dentro de las comillas del índice de la matriz este importe en el name nombre ahí dentro pongo el nombre si aquí pusiera longaniza aquí pondría longaniza lo importante es que con esto lo que le estoy diciendo es quiero recoger lo que ponga aquí en nombre así que igual no evidentemente ponga punto y coma y ahora esto es muy divertido porque si yo digo jose vicente y le voy a enviar mucha atención aquí pone jose vicente y recargo y digo esto es algo que he escrito le doy a enviar y poner esto es algo que he descrito es decir esto que acabo de hacer parece que sea una tontería pero no lo es porque ya soy capaz de tomar datos de una página web enviarlos a un archivo php y hacer algo con ellos y es algo que es bueno ahora mismo no mucho ahora mismo es simplemente mostrarlo en pantalla pero más adelante puede ser guardarla un archivo guardarlo en una base de datos o hacer un poco lo que queramos con ese archivo insiste una vez más en que debo tener cuidado con un post y con get porque imaginamos que ahora cambio el formulario de post en primer lugar esto es algo que he escrito lo envío y como se ha enviado no lo veo dónde está esa información se ha enviado en una cosa que se llaman cabeceras de html pero atención mirar una cosa ahora voy a cambiar esto a get voy a cambiar el método del formulario en el archivo html lo voy a cambiar a get recargo para que se dé cuenta el navegador y digo jorge envió y pasan dos cosas primero al haberle dicho get aquí arriba pone localhost aprendiendo php formulario recibe punto php y nombre es igual a jorge cuando yo uso el método post los elementos se envían ocultos en las cabeceras pero cuando yo uso el método get los elementos se envían codificados en la url codificados serializados pero como veis no muy ocultos y además tengo un problema el problema es que no me reconoce el índice no me reconoce el índice porque yo estoy enviando esta información por get pero php está esperando recibirla por post ya puedes esperar pero lo vas a recibir así que hay que tener cuidado si en el archivo anterior la enviado por forget aquí la tengo que recibir con get vamos a volver a probar lo envió jorge le voy a enviar y veis como ahora si recibo correctamente jorge una de las razones esto que voy a decir es un comentario muy general pero una de las razones por las cuales se intenta evitar pasar parámetros mediante el formato get es que yo esto lo puedo tocar jorge pues juan y me aparece ahí juan y jaime y me aparece allí jaime y no se recomienda demasiado no es una buena práctica aunque evidentemente os enseñaré soluciones para evitar eso que los parámetros pasen claramente en la url porque la gente te los puede tocar y tú no quieres que la gente los truco pero insisto eso es así eso es cierto pero estamos hablando de conceptos más avanzados en cuanto a desarrollo de aplicaciones por tanto vamos a empezar por el principio vamos a empezar por la teoría vamos a suponer de momento que todo el mundo es bueno y nadie te quiere hackear tu aplicación cosa que no es verdad pero supongamos la y más adelante ya nos preocuparemos de esta clase de cosas ahora mismo lo que nos interesa es aprender a pasar parámetros con get y compost de una parte a otra sí ya he conseguido realizar esta acción voy a realizar un pequeño ejercicio para demostrar que puedo hacer con todo esto voy a hacer una pequeña calculadora así que vengo a la carpeta y creó un nuevo archivo que se va a llamar calculadora punto php y dentro de calculadora vamos a aprender varias cosas en primer lugar quiero una estructura html quiero tener un gemelo quiero tener un móvil dentro del body voy a crearte hp como os he dicho en más de una ocasión podemos mezclar y de hecho es bastante común mezclar html y php en el mismo archivo si de cara al desarrollo avanzado de aplicaciones es una buena práctica o no es algo que ya discutiremos más adelante pero la cuestión es que se puede ahora voy a hacer lo siguiente voy a poner un ife si se cumple una condición en ese caso haz algo y si no se cumple esa condición en ese caso a otra cosa no porque ya sabéis que la admiración equivale al operador de negación no no y sed una variable de post llamada número esto quiere decir esto de aquí lo que está dentro del paréntesis es la condición y la condición es si no es set y set que quiere decir más o menos existe si no existe la variable post llamada número que me la acabo de sacar de la manga habréis en ese caso a una acción y sí sí que existe la variable post número en ese caso hay otra acción bien si no existe en ese caso escribe lo siguiente forma action es igual a interrogante mejor es igual a post form action es igual a interrogante quiere decir que no lo envíes a otro archivo envía melo a mí mismo la recarga me a mí mismo y envíame los datos y ahora digo input type neymar atención número sí aquí he puesto número aquí tengo que poner número si aquí puesto post ahí tengo que poner post y si hay he puesto número aquí tengo que poner número aparte de fijaos como hemos hablado anteriormente para evitar los problemas con las comillas simples y con las comillas sencillas y es que en php estoy poniendo comillas sencillas perdón si en php estoy poniendo comillas sencillas en html estoy poniendo comillas dobles place holder dime un número y ahora por último input type submit si yo ahora cargo este archivo se llama calculadora punto php y pongo dime un número como no he enviado la variable por post llamada número no esta apuesta no existe en ese caso me dice toma formulario ahora si pongo un número atención el 6 y lo envío en ese caso pasará lo que ponga aquí abajo ahora mismo no pasa nada porque no he puesto nada de código así que por ejemplo diré una algo muy sencillo el cuadrado del número que has enviado es punto porque ya sabéis que en php se encadena el tren con un punto y digo post número x post número si queréis pongo esto entre paréntesis para que tengamos claro que es una multiplicación multiplicó el número por sí mismo y ahora fijémonos en lo que voy a hacer si pongo 6 atención me dice el cuadrado del número que has enviado es 36 quito el interrogante pulso a enter si digo 4 envío el cuadrado del número que has enviado es 16 luego acabo de utilizar los formularios para crear un programa que no siempre hace lo mismo sino que acabo de crear un programa lo que hace depende de la entrada que le dé el usuario es decir acabo de combinar formularios html con scripting en php y esto lo he hecho simplemente para decir lo siguiente me has enviado un post número si no me lo has enviado es que lo vas a escribir ahora por tanto si no me lo has enviado te muestro un formulario donde me puedes introducir un número ahora sí no es cierto que no existe el post número es decir si es cierto que existe el post número en ese caso dime no me muestra el formulario porque ya me lo has mostrado y en ese caso dime el cuadrado del número que has enviado es el número por el número en este caso porque quiero el cuadrado si hubiera dicho el doble pues sería número por 2 se ha dicho la mitad sería número partido 2 ya un poco lo de menos lo importante es que éste envía un número envía una variable mediante php y este de aquí recoge esa variable y realiza una operación con ella las partes clave por tanto de este ejercicio son dos primero el axón interrogante que no lo envía a un archivo externo si no se lo envía a sí mismo y por otra parte el isset que lo que hace es decir no lo has enviado muéstrame esto ya lo has enviado no me muestre es esto muéstrame esto en su lugar quiero decir con esto que no hay que enviar la información a otros archivos no simplemente en los vídeos anteriores he mostrado cómo se puede enviar a otro archivo y en esta ocasión nos ha enviado cómo se puede enviar a sí mismo hay veces que os interesará enviar otros archivos y hay veces que os interesará enviárselo a sí mismo hablamos ahora de una parte muy especial de php que se llaman las sesiones de la gestión de las sesiones dentro de php y para que entendáis para qué sirven y que son las sesiones tengo que primero explicaros un defecto que tiene php defecto según lo queramos mirar técnicamente no es un defecto es que es que php funciona así pero desde el punto de vista del usuario que empieza aparece un defecto mira voy a crear un archivo llamado sesiones 1 php y voy a crear otro archivo llamado sesiones 2 php así que ahora cargo los dos dentro del editor cargo aquí sesiones 1 punto php y digo lo siguiente mí no lo que voy a decir php mi variable es igual a jorge ahora digo cuánto vale mi variable el programa me dice jorge hasta aquí no hay ningún problema la cuestión es que php es un lenguaje de tipo state less es un lenguaje sin estado y sin estado quiere decir que no es capaz de recordar el estado del script de una página a otra nosotros al final haremos varios scripts que se comportarán como un programa completo pero por defecto si no trabajamos con sesiones los scripts funcionan como un programa independiente cada uno de ellos demostración que creó una etiqueta fuera de la etiqueta php digo ir al archivo 2 y quiero oír evidentemente a sesiones 2 php así que guardo recargo y dice jorge vamos al archivo 2 voy al archivo dos y en el archivo dos simplemente escribo lo siguiente este sesiones uno y ahora aquí en el archivo sesiones 2 digo echo mira es más para que no penséis que igual me equivocado y comí bar lo he copiado y pegado si funciona en otro debería así funcionar uno debería funcionar en el otro pero no es así atención lo pongo aquí y ahora digo la variable es jorge quiero ir a sesiones 2 php pincho y me dice no sé qué variable es mi bar y yo digo como que no la sabes cómo puede no saber la siesta aquí te la acabo de declarar pero el problema es que el php funciona de la siguiente manera declara esta etiqueta declara esta variable recuerda la variable usa la variable y en cuanto cierro esta etiqueta o cualquier etiqueta que hay al final del archivo se olvida de todo lo que haya usado se olvida de todos los recursos que haya abierto y en este caso una variable es un pequeño recurso de memoria que abres en la memoria del sistema del servidor claro cuando voy a sesiones dos por mucho que yo le diga a mi bar ya no recuerda ha olvidado quién es mi bar esto es lo que ya os digo que no es técnicamente un problema si no es que php funciona así pero muchas veces a lo largo del desarrollo de estas aplicaciones nos gustaría que de página a página recordara ciertas cosas para esto precisamente una vez presentado el problema están las variables de sesión están el control de las sesiones dentro de php para declarar una variable de sesión tengo que hacer lo siguiente no voy a equivocar tengo que poner dólar en mayúsculas sesión dólar sesión y como dentro de los corchetes pongo nombre las variables de sesión como veis son un poquito parecidas a las variables de formulario sólo que en lugar de poner post que pongo sesión ahora digo sesión en nombre no hay ningún problema y me dice jorge yo aquí declaro la variable de sesión jorge nombre que equivale a jorge y aquí llamo a esa variable de sesión y funciona ahora en principio vengo aquí y digo con mi bar y debería funcionar pero sin embargo le doy a archivo 2 y sigue diciendo que no encuentra esa variable de sesión le falta solo una cosita lo primero que tengo que hacer es declarar variable sesión bien pero lo segundo que tengo que hacer inevitable porque sino ya habéis visto que era error es poner una función llamada sesión start hay que escribirla exactamente así sesión en minúsculas y en bajo start y corchete corchete porque es una función ya la haremos de que es una función así que esto lo tengo que copiar y lo tengo que pegar en todos los archivos en los que se escriban o se lean variables de sesión si ahora intento hacer lo mismo la variable vale jorge me voy al archivo 2 y me dice jorge es decir ahora si por una parte declarando el session start y por otra parte declarando una variable ya puedo usar esa variable siempre que la llame con este nombre en cualquier página que tenga un sesiones tarde al principio eso sí luego también os digo que las sesiones por defecto duran alrededor de 15 minutos en el servidor es decir yo vengo a este archivo en menos de un cuarto de cargo y me dirá jorge porque recuerda que alguien la nombró jorge si tarda media hora o más digamos 16 minutos o más recargo esa página y dice he olvidado quién es jorge esto se hace por una parte para ahorrar memoria en el ordenador en el servidor y por otra parte se hace para poder guardar nuestra privacidad ya que las variables de sesión se usan para hacer sesiones de usuario y no te interesa que si te deja esa sesión abierta en un ordenador esté infinitamente abierto en el ordenador para eso también por protección la sesión tras un cierto tiempo de inactividad que una vez más establece por defecto a 15 minutos pero se puede cambiar en ese archivo que os decía antes php punto y me vamos a hablar a continuación de qué es ese archivo llamado php punto n vamos a ver ahora la biblioteca integrada predeterminada dentro de php de gestión de fechas vamos a ver un poco la superficie de esta librería y os voy a decir que es más útil de lo que en un momento dado puede parecer voy a crear un archivo llamado fechas punto php lo cargo dentro del navegador y las fechas consisten en una función que viene pre integrada dentro de php por tanto yo simplemente tengo que poner rate pongo un echo para que salga por la pantalla evidentemente pongo dates pongo paréntesis paréntesis y dentro de los paréntesis voy a poner un código y que pongo en ese código por ejemplo si pongo una mayúsculas equivale a decir que quiero ver el tiempo y unix y el tiempo y unix me creáis o no son los segundos que han pasado desde hoy hasta el jueves 1 de enero de 1970 eso es lo que se conoce como el tiempo y unix así que si digo eco de it y me dice este número si voy refrescando poco a poco veréis como el número va cambiando según los segundos que vayan pasando parece una aplicada pero ese número tiene más importancia de la que puede aparecer hoy probablemente no pero cuando trabajemos con bases de datos veréis que sí si pongo por ejemplo una y mayúsculas el jr el año me sale el año con cuatro dígitos pero si pongo una y minúsculas me sale el año con dos dígitos de lo que quiere hacer me interesa una cosa u otra si pongo los minutos me salen los minutos son ahora y hoy y 12 en el reloj de este ordenador no sé si a no perdonar esto es mes esto es el mes 12 los minutos no sé a quién se le ocurrió esa idea es una y latina así que los minutos ahora sí son 3 los segundos son la s y tú dirás para porque estás poniendo un montón de códigos y no sabemos de dónde salen bueno en este caso los códigos tan saliendo de mi cabeza porque como suele usar las funciones de fecha hay unas cuantas que me sé de memoria pero tenéis vale por dónde está la tabla de fechas pues la tabla de fechas está aquí simplemente en un navegador web ponéis beit perdón de php eid y con toda probabilidad en la primera coincidencia llegaréis a la documentación oficial de php en cuanto a la gestión y el uso de fechas entonces dentro de esta documentación de php vais a encontrar que hay una tabla fantástica que os dice cada uno de esos caracteres que yo estaba poniendo a que corresponde así que de ese día del mes con dos dígitos de mayúsculas es una representación en texto por ejemplo efe es el mes en texto es el año y es el año la hora la zona horaria tenéis hay un segundos desde la época iunics que es el 1 de enero del 70 es decir los números de todos de memoria que lo que hago es que me sé de memoria aquellos que suele usar para todo el resto lo que vamos a hacer es consultar esta tabla lo que voy a hacer ahora es formular una fecha y para ello voy a hacer lo siguiente echo hoy es punto gheit d punto del mes dejadme que lo escriba en varias líneas porque si no os liar y luego si queréis lo re factor izamos hoy es vip d del mes eco gheit m eco del año eco gheit y lo he hecho en varios secos para que veáis claramente qué hace cada línea así que si ahora guardé recargo dice hoy es 17 del mes 12 del año 2014 si lo quiero abreviar un poco más quiero que el mes aparezca en texto así que voy a poner hoy es día de mes de año y pongo hoy es 17 de 12 de 2014 está casi bien pero hay un problema y es que 12 aparece el número y yo quiero que aparezca en texto pero cuidado php está hecho en castellano no está hecho en inglés por tanto aunque yo me vaya a la tabla de php eid si pongo el mes donde estás mes a mes representación textual completa fijaos que pongo efe en lugar de minúsculas y mayúsculas y cuidado porque me dice hoy es 17 de december de 2014 y queda un poco feo porque lo que nos gustaría es que estuviera esto en castellano lo que voy a hacer por tanto es reutilizar los conocimientos que ya he adquirido para conseguir este objetivo así que voy a decir lo siguiente switch voy a usar una estructura de control switch y voy a buscar de efe una estructura de control suites que tiene varios casos concretamente con el mes hay doce casos válidos ya 9 dos puntos mes es igual a enero break cage ferrari voy a crear una plantilla para trabajarlo rápido abril mayo junio julio agosto septiembre octubre noviembre diciembre pero los casos para atrás ya sabéis que las sangrías no son funcionales pero aunque no son funcionales nos ayudan a saber dónde empieza donde acaba cada caso ferrari yo diría febrero march le diría a marzo april yo diría abril iun desde junio you lie que diría julio pocos le diría agosto september yo diría septiembre october yo diría octubre lo que pasa es que auto ver aquí y octubre va aquí november en noviembre dicen ver diciembre y este parece que me sobra si no es que me he dejado algún mes febrero marzo abril mayo mayo me he dejado mayo por tanto como puedo haber dejado mayo may es mayor si yo ahora guardo y recargo mirad me sigue diciendo hoy es difíciles de december pero si yo aquí en lugar de d efe le digo que quiero la variable mes la variable mes es esta que me acabo de sacar de aquí me dirá hoy es 17 de diciembre de 2014 yo que he hecho por tanto lo que he hecho es con una estructura de control switch acabo de atrapar esta fecha y le digo sí sí efe es january entonces la variable mes es variable que me sacó de la manga que me acabo de inventar es enero ferrari febrero marzo marzo y por tanto que al final no llamó a dates efe llamó a mes porque mes es la variable en la que estoy introduciendo el nombre del mes en castellano lo que estamos haciendo hasta ahora y probablemente seguiremos haciendo un poco más es programar en procedural es decir programación estructurada donde se ejecuta el programa de arriba hasta abajo cuando llega hasta abajo se acaba y ya está php es un lenguaje de tipo multi paradigma eso quiere decir que no trabaja con un solo paradigma sino trabaja con varios lo que hemos estado haciendo hasta ahora es programación estructurada hay otro tipo de programación que es programación orientada a objetos lo bueno de php es que nos deja elegir la idea de la programación orientada a objetos idea dentro de la cual todavía nos vamos a meter es la idea de envolver todo el código de nuestros programas con una envolvente llamada objeto lo encapsula moss y por tanto podemos reutilizar más adelante esas capsulitas es incómodo porque hay que irlo encapsulando todo pero luego la ventaja es que cuando te haces una librería de capsulitas luego no vuelves a hacer las mismas cosas en cada programa sino que vas reutilizando esas cápsulas lo que yo ahora querría hacer es enseñaros una de esas cápsulas no todavía un objeto sino algo más sencillo y es algo que se llama una función yo acabo de hacer un código acabo de hacer un ejercicio que yo pienso que en un momento dado puedo reutilizar porque es muy común en un programa ponerlo de hoy es 17 de diciembre de 2014 en un programa en una web o donde sea así que para que cada vez que yo haga un nuevo programa voy a volver a escribir este código y siempre va a ser el mismo para eso lo re utilizo y gasto mi tiempo en escribir cosas que no hubiera escrito antes lo que voy a hacer por tanto es aislar este código dentro de una cápsula que se llama función por tanto os voy a decir que las funciones se crean de la siguiente manera en primer lugar digo function uso la palabra reservada function en inglés a continuación elijo un nombre si es posible en castellano para la función ya sabéis un nombre pero sin espacios sin acentos y niños por ejemplo dime la fecha estoy usando la nomenclatura cam el case que lo que hace es poner la primera en mayúsculas de cada palabra ahora pongo parámetros esta función como esta primera que hago no tiene parámetros por eso lo que hago es poner paréntesis paréntesis espacios sin parámetros y ahora pongo una llave que se abre y otra por aquí que se cierra es decir si queréis algo un poco de sangría para que lo veáis mejor lo que he hecho es meter todo el código del switch y del eco dentro de una función para que lo veáis mejor en pantalla dejadme que ahorre un poco de código así que se puede escribir todo en una sola línea ahora que ya hemos hecho el switch la hemos visto para qué servía cada línea pero ahora lo que quiero es claridad en la pantalla cuidado no hay que eliminar demasiado perejil bien dejadme también actualizar un poco esto de aquí veis que tener demasiados ecos no parece bueno es lo que voy a hacer es voy a poner varios puntos como cadenas de un tren y digo aquí meto el delta aquí meto el d aquí me todo el mes aquí meto las comillas aquí me todo el año los puntos que me sobran los gorro y los ecos que me sobran los borro es lo mismo hoy es día del mes del año este código ya está bastante más limpio ya está bastante más legible y ahora vamos a comprobar su funcionamiento es curiosamente su funcionamiento es ninguno quiere decir esto que he cometido algún error no he cometido ningún error atención miradme es muy importante lo que he hecho es crear una función pero crear una función es como crear una variable que la crees no quiere decir que la estás usando así que tú primero creas la función y luego la usas para crear una función se hace con la fórmula que os he puesto aquí arriba function nombre de la función el que tú quieras paréntesis paréntesis aunque no pongas parámetros y ahora entre él la llave de apertura y la llave de cierre eso es la función ahora voy a hacer lo siguiente una vez que he declarado una función voy a llamarla para llamarla simplemente tengo que decir dime la fecha paréntesis paréntesis fijaos que es como el del break para en tres paréntesis pero en este caso es dime la fecha paréntesis paréntesis es decir la diferencia es que take es una función que ya está metida en php y dime la fecha es una función que yo me acabo de crear bueno pues guardo recargo y me dice oye es 17 de diciembre de 2014 y puede que esto que hayamos hecho ahora mismo no os parezca particularmente útil pero a continuación os voy a demostrar como sí que lo es esto que he hecho así como lo he hecho puede parecer que no sirve para nada y probablemente es cierto así como lo he hecho para qué quieres encapsular algo dentro de una función si luego lo vas a llamar justo a continuación para eso no hagas la función y ya está pero sin embargo lo que voy a hacer ahora es dentro de esta carpeta voy a crear un nuevo archivo que se llama un programa cualquiera voy a crear un programa cualquiera punto php cargo aquí un programa cualquiera y cargo aquí un programa cualquiera ahora dentro del script php voy a hacer lo siguiente atención voy a dejar la declaración de la función voy a eliminar la llamada a la función por tanto ahora el archivo fechas php únicamente tiene la función dentro de un programa cualquiera voy a hacer lo siguiente yo no puedo decir ahora simplemente dime la fecha fija dentro de un programa cualquiera llamó a dime la fecha en cuanto lo intento de ejecutar me dice has llamado a una función no definida llamada dime la fecha es cierto que la función la he definido aquí pero el programa no tiene por qué saberlo así que usó un elemento de php llamado incluyes y digo incluye creo que me hacen falta paréntesis incluye fechas punto php y lo que hago por tanto y lo que hago por tanto es que llamó a fechas php y a continuación cuando quiera porque no tengo por qué hacerlo a continuación digo echo esto es algo de código eco esto es algo más de código guardo recargo y dice aquí esto es algo de código hoy es 16 de diciembre de 2014 esto es algo más de código ahora sí que creo que podéis empezar a ver un poco mejor cuál es la utilidad de las funciones lo que acabo de hacer es encapsular el dime la fecha dentro de una función y la función dime la fecha a la vez está dentro de un archivo llamado fechas php digamos que ese archivo o fechas punto php ahora es una cápsula y yo esa cápsula me la puedo llevar al proyecto que sea para utilizarla siempre que quiera lo que va a ocurrir en este caso es que simplemente cada vez que la quiera usar tendré que copiar el archivo php en mi proyecto sea cual sea el proyecto que voy a hacer mediante la función incluye y a continuación cuando sea que quiera decir la fecha dime la fecha ahora sí aunque de manera muy básica la encapsulación es algo más complejo de lo que acabo de hacer pero para una primera demostración pienso que está bien lo que voy a hacer es encapsular una función dentro de un archivo y poder reutilizar ese archivo siempre que quiera el archivo no tiene por qué estar uno al lado del otro generalmente cuando hagáis un programa cualquiera lo que haréis es una carpeta donde por ejemplo pondréis funciones si yo ahora muevo fechas a esa carpeta llamada funciones cuidado porque tendría un problema porque si yo intento recargar me dirá warning incluye el incluye ha fallado porque ha fallado es muy sencillo simplemente ha fallado por la sencilla razón de que yo he dicho fechas punto php pero se fecha el punto php ya no está al lado de un programa cualquiera ahora bien yo le digo entra dentro de funciones y dentro de funciones busca fechas punto php es decir me acabo de crear una carpeta una práctica que es súper común para guardar las funciones lo que he hecho por tanto y como os decía es una práctica bastante común que consiste en crear una carpeta llamada include es llamada inc llama la función es llamarla como quieras pero una carpeta específica para almacenar todas tus funciones y eso sí por supuesto y una costumbre no sólo en php sino en muchos lenguajes de programación es que cada vez que empiezas un script arriba incluyes todo lo que vas a necesitar y abajo lo usas así que en este caso sí guardo y recargo comprobaremos cómo vuelve a funcionar perfectamente porque el archivo no tiene porqué estar en la misma carpeta pero tiene que estar cerca una de más arriba dos más arriba una más abajo dos más abajo puede ser más puede ser menos pero en definitiva una ubicación que puedas localizar desde el archivo principal vamos a crear funciones que puedan tener parámetros para eso me voy aquí me creó un nuevo archivo y lo llamo funciones con parámetros punto php abro funciones con parámetros aquí cargo funciones con parámetros allá pongo ola y pongo ola bien en este caso lo que voy a hacer es crear una pequeña función que se va a llamar buenos días la función buenos días va a decir hola jorge bienvenido a esta aplicación he creado una función de momento no devuelve ningún resultado porque la he definido pero no la ha llamado y ahora la llamo buenos días cada vez que le digo al programa que ejecuten buenos días me dirá hola jorge bienvenido a esta aplicación pero tengo un problema y es que vamos a un poco previsualizar que tendremos cuando creemos una aplicación compleja en una aplicación compleja no creo que haya un solo usuario y que se llame jorge habrá muchos usuarios que tendrán diferentes nombres así que si yo tengo a juan que tengo que hacer ahora crear otra función llamada buenos días juan y si luego tengo javier otra función llamada buenos días javier si hiciera eso en cuanto crear la tercera función en mi cabeza algo saltaría y diría algo estoy haciendo mal estoy repitiendo demasiado código imagínate que hicieras funciones para todos los nombres del mundo algo estaría haciendo mal lo que hago no es hacer muchas funciones sino personalizar el comportamiento de una función hacer que una función sea una especie de llave inglesa que me sirva para varios tornillos entonces lo que hago es poner aquí un parámetro que va a ser por ejemplo nombre puede ser nombre calcetín longaniza lo que queráis siempre en castellano invento y ahora voy a cambiar jorge mi nombre por tanto ahora me dirá buenos días nombre hola nombre bienvenido a esta aplicación cuidado porque hasta que nos explique sobre carga si ahora intento ejecutar me dará un error porque dice tú me has prometido que me ibas a dar un parámetro pero sin embargo me has llamado sin ningún tipo de parámetro y por tanto no es un error porque fíjate que es un warning es una advertencia no es un error porque fíjate que es un notice pero no deja de quedarse o en pantalla así que yo básicamente voy a cumplir la promesa de que hola juan así que me dirá hola juan bienvenido a esta aplicación hola juana bienvenida a esta aplicación que se acaba en una serie de reglas para poner bienvenida al lugar de bienvenido pero en fin hola stella bienvenida a esta aplicación hola jose bienvenido a esta aplicación lo que acabo de hacer por tanto es declarar una función con un parámetro y el parámetro me permite personalizar cómo se va a comportar esa función de esa manera la función no hace una única función se puede hacer múltiples funciones por eso cuando declara una función tengo que declarar la con un paréntesis si la función no lleva parámetros da igual tienes que poner los paréntesis igualmente no lleva parámetros por los paréntesis vacíos que luego la llama sin parámetros por los paréntesis vacíos pero tienes que poner paréntesis y si pones funciones pues pones dentro de los paréntesis las funciones no solo los parámetros no sólo se pueden poner parámetros sino que se pueden poner varios parámetros por ejemplo voy a poner nombre coma edad bienvenido a esta aplicación ahora que tienes punto edad y punto años me va a parecer mal por la ñ pero ten cuidado yo no puedo decir buenos días josé porque me dice que esperaba que me diera un segundo argumento me has dicho que me ibas a decir el nombre y la edad pero solo me has dicho el nombre no es un error pero queda feo así que jose coma 39 así que recargo y me dice hola jose bienvenido a esta aplicación ahora que tienes 39 años jaime 24 hola jaime bienvenido a esta aplicación ahora que tienes 24 años juan 30 hola juan bienvenido a esta aplicación ahora que tienes 30 años como veis podría tener ahora no ahora pero más adelante infinitos usuarios en una base de datos cada uno con tu nombre y su edad y sólo tendría que hacer una sola función vamos a ver con php un modo bastante sencillo de conseguir persistencia que es escribiendo datos en un archivo de texto plano así que para ello voy a hacer lo siguiente me voy a hacer un nuevo archivo un documento de texto que se va a llamar escritura escritura php va a tener el siguiente código voy a decir lo siguiente archivo es igual a efe open donde f open es abrir un archivo nuevo el archivo se va a llamar prueba punto txt y a continuación tengo que poner por ejemplo un modificador donde r es leer w es escribir a es aprendiz ar añadir y luego está r plus que es lee crea el archivo si no existe w plus que es escribe crear archivos no existe y applus es añade crear el archivo si no existe todo esto que estoy diciendo lo tenéis en poniendo php efe open todo esto que estoy diciendo se puede consultar en la documentación de php y debéis tener por aquí una tablita que son los modos r es r plus perdón red r plus r lectura escritura v v plus y estoy usando este de aquí apertura si el fichero no existe lo intenta crear ojo lo intenta crear si tiene permisos en la carpeta por supuesto vamos a suponer que los tenemos y ensambles tenemos cojo esto escritura y ahora hago lo siguiente en primer lugar abro un archivo en modo añadir si pongo w lo que hago es que cada vez me cargo lo que tenía y escribo cosas nuevas yo no quiero eso yo lo que quiero es abro el archivo respeto lo que había y escribo a continuación y digo lo siguiente efe faith esto es un texto que voy a escribir poner por favor contra barra n para decir baja una línea y voy a decir lo siguiente y es que esto lo quiero escribir en el archivo archivo como esto es un texto que voy a escribir es decir en el archivo quiero escribir esto de aquí por último aunque no es obligatorio aunque no es obligatorio deberíamos poner un extra close cierra el archivo digo que no es obligatorio porque php en su naturaleza lo que hace es cerrar automáticamente cualquier recurso que hayáis abierto y en este caso un archivo es un recurso pero es una muy buena costumbre cerrar manualmente el archivo así que voy a probarlo no tiene por qué ocurrir nada en la pantalla eco ok los quieres quedar un poco más tranquilos mirad bien fatal error efe rip no ese ferry efe wright se me ha liado una w así que recargo y dice ok y si todo ha ido correctamente atención ahora la pantalla si todo ha ido correctamente ahora me encuentro que existe un archivo llamado prueba punto txt y si hago doble clic o traigo aquí prueba punto txt pone este es un texto que voy a escribir así que ahora voy a ejecutar una vez más y si abro el archivo txt ahora pondrá esto es un texto que voy a escribir esto es un texto que voy a escribir y si ahora ejecutó una vez más ahora pone tres veces esto es un texto que voy a escribir es decir cada vez que estoy ejecutando este archivo lo que está ocurriendo es que estoy añadiendo una línea más que dice esto es un texto que voy a escribir es decir ya tengo un programa fijaos qué sencillo que es que es capaz de tomar algo que está existiendo en php y escribirlo de manera permanente en un archivo txt tal que si queréis ahora puedo cerrar el navegador pero lo que he escrito dentro de ese archivo txt se queda guardado para siempre voy a hacer una cosa voy a crear mirada atención voy a crear un documento nuevo que se va a llamar lectura php y dentro de lectura voy a crear un archivo llamado agenda punto txt en agenda punto txt voy a poner juan jorge martín y yo que sé y jose tengo cuatro nombres en la agenda ahora cargo lectura y evidentemente aquí también cargo lectura y dentro de lectura lo que voy a hacer es escribir el contenido de ese archivo voy a devolver el contenido de ese archivo para ello lo primero que hago es lo siguiente archivo es igual a efe open primero abro el archivo y digo que abre el archivo llamado agenda txt coma r porque no quiero abrir el modo lectura a continuación lo que voy a hacer es lo siguiente un bucle while ya sabéis que un bucle while es un bucle que hace algo repetitivamente y lo que va a hacer repetitivamente en este caso es leer línea lineal y léeme línea a línea y no pares hasta que les ha acabado y digo while negativo feos efe of es una muy mala en castellano pero quiere decir el final del archivo el end of file voy a decir lo siguiente voy a decir echo efe read archivo léeme línea a línea del archivo y por ultimo efe close archivo punto y coma voy a hacer lo siguiente voy a poner un parámetro que es 8.192 que es el número de bytes que tiene el archivo como máximo eso quiere decir que no podría leer más allá del del byte 8.192 para un archivo pequeño suficiente este es uno de los casos de más vale que sobre que falte entonces recargo bien en ese caso me dice que aclaro que off del archivo hay me falta poner el archivo así que el archivo es archivo pero no es una constante es una función me hace falta decirle a quien se refiere esa función así que guardo recargo y me dice juan jorge martín jose si queréis para verlo mejor voy a poner eco efe read más vr más un salto de línea en html así que tengo vamos a verlo allí un momentín efe read vr voy a ver dos veces por ser caso bueno déjame ver el código juan jorge josé y martín vale cierto me lo está devolviendo toda la vez y luego pone los verdes línea a línea bien lo que quiero hacer ahora ya tengo de momento todo el contenido en la pantalla lo que querría hacer ahora es modificar este ejemplo para que me vaya avanzando línea a línea en lugar de leerme todo el contenido del archivo lo que voy a hacer ahora es simplemente en lugar de usar efe read voy a usar este gets que en lugar de leerme el archivo entero me le línea a línea lo cual me sirve en este caso por ejemplo para poner un ver un retorno de carro en cada una de las líneas que ha puesto en la pantalla ahora me he servido para meter algo tan sencillo como un retorno de carro pero ahora luego veréis que me servirá para cosas más complejas como por ejemplo maquetar este archivo de texto dentro de una tabla a continuación os voy a proponer un ejercicio práctico para poner en práctica todo lo que hemos aprendido hasta ahora este ejercicio que es un clásico dentro de la programación es un ejercicio que se hace como aprendizaje de cualquier lenguaje de programación consiste en crear una agenda telefónica por tanto voy a crear simplemente una carpeta llamada agenda como una especie de proyecto separado del resto de archivos que mostró hasta ahora y cualquier proyecto suele empezar con un archivo llamado index php evidentemente la finalidad de este archivo será trabajar con un archivo llamado agenda al que voy a colocar no la extensión txt sino la extensión la extensión csv al final del ejercicio os enseñaré por qué le digo que sí voy a editar el csv aunque fijaos que me dice que es un archivo de opinión fiscal -que o de excel yo le voy a decir que voy a editar manualmente dejadme cerrar todas las ventanas cuidado vamos a ver here it vale cargo haya gente apuntó txt y voy a crear un par de registros manualmente voy a decir juan coma que tiene este teléfono coma tiene el correo info juan puntocom jose que tiene ese teléfono tiene el correo info jose puntocom jaime que tiene este teléfono tiene el correo jaime jaime puntocom y bueno pues voy a continuar voy a entrar dentro de la carpeta agenda al entrar dentro de agenda inevitablemente ejecuto el archivo index.php pero el archivo index punto php ahora mismo no tiene nada de código por tanto yo lo voy a crear html html para ser correctos vamos a declarar un dock type doctor html y digo jefe body morir dentro del gel voy a poner un title en el que voy a poner simplemente de agenda telefónica y dentro del body voy a poner por ejemplo un 1 y voy a decir la agenda telefónica copyright josé vicente carratalá así que guardo recargo y tengo ahí agenda telefónica copyright josé vicente carratalá ahora voy a hacer lo siguiente atención en primer lugar quiero leer por tanto si quiero leer pongo php php puede intercalar php en cualquier momento dentro de html y ahora escribo lo siguiente y ahora escribo vamos a verlo dejar que me concentré y digo archivó es igual a efe open agenda psv como applus a plus es no perdona r lo que voy a hacer en primer lugar es leer y ahora digo vamos a ver el leer vamos a copiar un poco del código lectura y digo siempre que no hayas llegado al final léeme línea a línea vamos a verlo si está funcionando correctamente dejadme que ahorre líneas medir a juan coma este número coma este correo por tanto ya tengo una cabecera y tengo una lectura desde el archivo vamos a continuación a maquetar un poco este contenido este contenido está muy poco estructurado y por eso yo antes de llamar a php voy a crear una table voy a crear una tabla voy a mezclar php con una tabla html esta tabla tendrá una fila que tendrá titulares de tabla 1 2 y 3 que serán el nombre el teléfono y el email ahí está la tabla se ve mal pero eso es porque no he puesto ahí border es igual a 1 y ruiz es igual al 100% ahí tengo nombre teléfono y email pero claro el contenido está fuera de la tabla porque no está maquetado con etiquetas cr y todo esto balear tengo un problema es el siguiente como meto yo aquí esto me devuelve el contenido de cada línea dentro d un elemento adentro de cada unos elementos pero dentro de cada línea pero yo no quiero dividir con te resistes así que voy a hacer una cosa atención todos a la pantalla lo que voy a hacer es decir línea es igual a esto y ahora dentro de línea voy a hacer lo siguiente voy a hacer reemplazo es igual str place str replace es una función de php que reemplaza unas cosas con otras y ahora digo cuando te encuentres una coma reemplaza la con un tv tv dentro d línea ocurre que ahora mismo no me sé de memoria la sintaxis de str place por eso lo que hago es decir p h str replace y en ese terror de place compruebo qué vamos a verlo algo más fácil bueno leamos la documentación oficial antes mix search es lo que debes buscar replace es con que lo debe reemplazar y saber si es de quien lo quieres buscar donde lo quieres buscar vale un artículo siguiente eco usted y punto reemplazo punto dv donde el reemplazo lo que va a hacer es cada una de las comas y donde se encuentre una coma lo que va a hacer es cerrar columna abrir columna le he puesto una de apertura en una decir al final porque no hay como al principio y no y como al final si todo esto ha ido bien cuando ahora guardo y recargo a cuidado cuidado ahí tengo un problema ha funcionado casi bien y es que tengo celdas pero no tengo el cierre de línea el cierre de línea va aquí tr si ahora guardo y recargo ahora si tengo juan teléfono email veo que algo me sobra por aquí no sé por qué ahora veré por qué pero ya tengo por aquí por lo menos el contenido maquetado dentro de una tabla se inspecciona el elemento veréis que hay una fila además una fila además no sé ahora mismo por qué porque al final parece como que quisiera haber una coma pero el caso es que no la hay bien de momento me voy a quedar la tabla así porque veo que de momento funciona esto quiere decir que yo era podría venir a la agenda y si pongo por ejemplo que no sé javier tiene este número y tiene info javier puntocom comprobaremos como al leer aparecerá en un nuevo registro es decir ya soy capaz de tener una agenda telefónica de listar todos los registros pero ahora lo que quiero es no tener que añadir registros manualmente dentro de este archivo quiero añadir registros dentro de este mismo programa antes de acabar la tabla quiero poner un nuevo registro que quiero tener la capacidad de añadir un nuevo registro así que para ello voy a hacer lo siguiente en primer lugar me hago cuatro columnas aunque de una de ellas esté vacía me da igual meto una columna vacía en las en los titulares hemos visto que hay que hay un error con lo cual lo corrijo si esto se abre esto se cierra ahora hay cuatro elementos en la tabla pero los hay porque los quiero ahora sí voy a rellenar con uno vacío porque está vacío simplemente porque lo voy a usar al final está vacío de momento ahí pero porque lo voy a usar a la final atención cuando salgo de php digo tr y voy a hacer un formulario si quiero añadir un nuevo usuario lo tendría que hacer con un formulario por tanto un formulario que se abre y se cierra un tv que tiene un input type neymar nombre place holder nombre un tv que tiene otro tipo texto name teléfono creo que va ahora place holder teléfono un último importe tipo texto name e mail place holder email y por último ahora si un input de tipo submit si ahora guardo y recargo bueno en el forma le voy a decir action es igual a interrogante esto quiere decir que me lo envió a mí mismo me zone es igual a post y yo hago lo siguiente recargo y veo como tengo aquí el listado de nombre teléfono email y tengo la capacidad de añadir un nombre un teléfono un email y enviar a donde lo voy a enviar cuando le dé al botón enviar a mí mismo le voy a enviar y se recarga esta misma página pero claro hemos diseñado el formulario tengo un trozo de php que se encarga de leer la base de datos que en este caso la base de datos un archivo de texto pero necesito otro trozo final de php que se encargue de leer la base de datos de perdón escribir en la base de datos escribir todo aquello que provenga de este formulario lo que tengo que hacer ahora es trabajar en cualquier parte del archivo para escribir un elemento más en la agenda por ejemplo lo voy a poner aquí arriba y ahora aquí arriba me recupero el archivo de escritura php lo copió y digo lo siguiente trabajo el archivo agenda punto csv ahora sí en modo a plus en modo añadir efe/archivo no voy a escribir esto es un archivo que voy a escribir escribo lo siguiente 2 nombre es decir lo que he enviado por post con nombre como porque es un archivo separado por comas post el teléfono y los separó mira voy a desde h hasta aquí por comas y post email es decir dentro del archivo lo que quiero escribir es lo que he enviado el formulario del nombre con lo que he enviado el formulario del teléfono coma lo que he enviado como email y baja la línea debajo cierro el archivo ya lo volveré a abrir más adelante pero si ha acabado con él de momento lo cierro y ahora escribo lo siguiente cuidado en este caso lo que me puede pasar es que el programa me dé un error porque está esperando a que encuentre un post nombre igual no existe así que digo sí y set si existe post un hombre en ese caso ejecuta este código y si no existe no hagas nada así que vamos a verlo ya tenemos una línea agenda voy a recargar y ahora quiero crear al usuario un nombre con j jacobo el usuario jacobo en el teléfono 11 11 tiene el mail info jacobo puntocom si todo va bien y el programa no genera ningún error le digo enviar y aquí ya me aparece jacobo 11 11 con un baja como puntocom tengo también a julia con el teléfono 22 22 22 y el email info julia puntocom y si ahora le voy a enviar comprobamos cómo voy añadiendo registros a mi agenda atención si ahora voy a agenda csv comprobaréis como ahora jacobo y julia forman parte de la agenda así que aunque mínimo pero ya tengo un programa completo ya tengo un programa que es capaz de leer que es capaz de escribir y que puede persistir y que incluso os digo más es un programa colaborativo ahora mismo quizás no lo es porque estamos trabajando en nuestro propio ordenador nosotros podemos tocar pero si cogemos este script y lo subimos a un servidor donde múltiples personas pueden acceder podríamos generar una agenda telefónica varias personas añadimos registros o la misma base de datos lo que hemos hecho hasta ahora dentro de las cuatro operaciones más comunes dentro de una base de datos que es el modelo crudo donde el modelo cruz es create ruiz read update y delito que es crear leer y actualizar y eliminar hemos creado las dos primeras las dos primeras operaciones que son crear y leer nos faltaría actualizar y eliminar solo podemos dejar incluso para base de datos directamente pero hay una quinta operación que aunque no se considera propia de las cuatro principales finalmente lo es que es buscar yo quiero crear un buscador porque yo igual ahora mismo está bien porque tengo una agenda con seis elementos pero imagínate que empiezo a escribir empiezo a escribir y llega un momento que tengo 200 elementos una de las ventajas de la informática es que hace mucho más que una mera guía telefónica tú puedes buscar y filtrar rápidamente los otros entre por ejemplo 200 mil clientes digamos o 200 mil entradas de la agenda voy a programar por tanto un pequeño buscador para ello me voy a index y por ejemplo arriba justo abajo justo arriba del table digo esto es tabla listado de clientes ahora voy a hacer lo siguiente esto va a ser el buscador de clientes lo puedo buscar por ejemplo por el nombre y ahora digo forma action es igual a interrogante mejor es igual a post y ahora digo input texto importante name no se puede llamar nombre porque nombre ya lo estoy usando aquí así que pongo nombre buscar input type submit y digo place holder e introduce el nombre del usuario a buscar cuidado porque lo único que pasará es que es igual de recargo cuidado se guardó y recargo e introduje el nombre del usuario a buscar no se ve pero está ahí y ahora hago lo siguiente br br simplemente para separar para separar y ahora voy a hacer allí un pequeño buscador php php para hacer un pequeño buscador me voy a copiar esta estructura esa estructura es la que lee y voy a decir agenda punto csv línea es igual a esto y ahora voy a decir esto de aquí mira me cargó esto y digo explotado es igual a explorer o explorer o split los dos funcionan coma como línea que hace split si me voy a php split o php explorer hace básicamente lo mismo lo que hace es definir cuál es el patrón para cortar cual es el patrón para partir y de dónde lo quieres partir es decir cada vez que te encuentres una coma cada vez que te encuentres una coma parte lo eso quiere decir que ahora por ejemplo un hombre es igual explotado al primer elemento de la matriz el teléfono es igual ha explotado uno e mail es igual a explotado 2 es decir cuando hago un split lo parte muy bien y dónde lo mete la misma variable como parte lo convierte en una matriz y mete cada uno de los elementos en un índices de la matriz así que ahora digo lo siguiente nombre es igual a lo que te he enviado por nombre buscar y quito lo que te he enviado por nombre buscar en este caso y sólo en ese caso y me echo el nombre es punto nombre punto vr el teléfono es punto teléfono y el email es punto email si ahora guardo y recargo tendré lo siguiente bien nombre buscar a 99 por supuesto nombre buscar no está definido así que digo si usted es tu casa aquí y sepsi existe el post nombre buscar si he enviado el formulario porque igual no he enviado el formulario en ese caso ejecuta me todo este código es decir si yo vengo aquí yo no he enviado un hombre a buscar yo no he buscado nada así que si no he buscado nada no me intentes ejecutar todo esto de aquí por eso digo solo si está puesto solo si existe nombre buscar en ese caso ejecuta en el buscador sin nadie ha perdido nada no ejecute es ningún buscador bien si ahora pongo por ejemplo juan comprobemos si funciona recargo y me dice bueno ahora veremos qué pasa y el nombre es juan el teléfono es este el mail es info -juan puntocom si busco jose el nombre es josé el teléfono es este y el mail es info jose puntocom es decir como podéis ver independientemente de los notice que me dé por ahí ahora veré a qué se deben pero independientemente de estos notice que luego no aparecerían lo que ocurre simplemente es que tengo a parte del listado y aparte de la inserción un pequeño buscador buscador cutre ahora mismo si queréis pero buscador al final acabó javier con su teléfono y su correo independientemente de luego el listado y luego la inserción y oye si no buscas nada pues simplemente no aparece ahí es decir si no buscas nada no es cierto que esté puesto post nombre buscar y por tanto no se llega a ejecutar ese código por último le podemos dar a este ejercicio un poco de estilo simplemente escribiendo algo de style en la cabecera por eso si queremos hacer un estilo interno así que yo ahora aquí podría poner todo este contenido dentro de un contenedor voy a poner un div al final para que el contenedor lo contenga todo y ahora podría hacer algo como por ejemplo el contenedor tendrá un wifi del 80% tendrá un padding de 10 píxeles tendrá un background white y tendrá un martín auto y quizás un borde radios de 10 píxeles y tal vez un box salou de 0 píxeles 10 píxeles 20 píxeles black con esto lo que consigo es que ese contenedor esté centrado en la pantalla ahora veremos qué pasa con esta tabla no pasa nada vamos a verlo todo bien si ahora lo que voy a hacer es por ejemplo el body y le digo qué va a tener lo siguiente el body va a tener un background gray y un font family areal para que la letra sea de palo voy a decirle un padre hijo un poquito mayor y voy a decirle que bueno el wef claro es que aquí empuja demasiado bien igual lo puedo solucionar el fútbol le quito los parámetros del table que los había puesto porque no tenía css pero ahora tengo css y le digo wifi es igual a 100 por ciento y font-size es igual a 10 píxeles y ahora tengo ahí la tabla se me sale un poco por el input también le puedo decir lo siguiente y es table input los inputs que estén dentro de la tabla with 25% y claro cuidado 100% para que cojan el 100% de la celda y así no se me salga incluso le puedo decir table trv es decir el td que está dentro del tr que es centro de la tabla le digo un parking de 10 píxeles para qué se espacio un poco más si quieres no 10 pero 4 por ejemplo y así fijaos que poco a poco ahora puedo decir con tenedor input es decir sólo con el input que está justo dentro del contenedor le digo wef por ejemplo 80% para que solo ese de ahí vamos a ver que no está en el contenedor donde está el contenedor form input ahora si le digo que ocupe el 80 para que ese buscador sea un poco más grande también le puedo decir porque no como en cualquier proyecto web prácticamente que hago que el h1 y el h2 tengan un padding de 0 píxeles y tengan un margen de 0 píxeles para que no se coman tanto espacio y ahora sí lo que haría es quizás poner un par de pérez para que haya un poquito de espacio entre el título el buscador y la tabla en definitiva podéis ver cómo con un poquito de css ese ejercicio que con ph te puro y duro’ se hace tan feo pues se puede maquetar hasta donde queramos o hasta donde sepamos usando el lenguaje css de marcado presentación al

Deja una respuesta

Tu dirección de correo electrónico no será publicada.