Cómo usar mysql_result en PHP 7 o PHP 8

Esta mañana un cliente me avisó de un error cuando intentaba descargar unas facturas. Esas facturas están guardas en un BLOB en una base de datos a las que se accede para luego mostrarlas al usuario.

¿Qué ha pasado? Pues que hace tiempo actualizaron en su servidor PHP de 5.6 a 7.x o diría que ya a 8.x y claro, mirando el código se usaba la función mysql_result que básicamente lo que hace es leer el dato de una celda en concreto de una consulta SQL. read more

Leer más » Comentar

PHP

Leer más » Comentar

Aprende a usar variables en PHP

Aquí os dejo un código mío de ejemplo para empezar a aprender a usar variables de tipo básico en PHP.

Es recomendable copiar el código y ejecutarlo en un intérprete de PHP y, a continuación, realizar los cambios que consideremos oportunos para comprender el funcionamiento.


'; // Imprime en pantalla: ¡Hola, mundo!
echo $x . '
'; // Imprime la variable x

// Puedes imprimir en pantalla texto y variables
echo 'He comprado ' . $x . ' naranjas y ' . $y . ' limones.
';

// CONVERSIONES DE VARIABLES

$altura = '95.4'; // Variable de tipo String
echo gettype($altura) . '
'; // Imprime el tipo de variable actual
$altura = (float) $altura; // Conversión de String a número real
echo gettype($altura) . '
'; // Imprime el tipo de variable actual

$altitud = -544.432; // Variable de tipo número real
echo gettype($altitud) . '
'; // Imprime el tipo de variable actual
$altitud = (string) $altitud; // Conversión de número real a String
echo gettype($altitud) . '
'; // Imprime el tipo de variable actual

?>

read more

Leer más » Comentar

Formulario básico en PHP

Aquí os dejo un formulario básico en PHP. Es decir, los datos se introducen en un formulario HTML y se procesan en PHP.

=&0=&



  
    
    Formulario básico en PHP
  

  
    

Formulario básico - Entrada de datos

Nombre:
Edad:
Género Varón Mujer

=&1=&



  
    
    Formulario básico en PHP
  

  
    

Formulario básico - Salida de datos

Tu nombre es .

Tienes años.

Tu género es .

Leer más » 7 Comentarios

Lo mejor de mi RSS del 22 de febrero al 6 de marzo de 2016: PHP y WordPress, Rusia, cómics y di adiós a los 32 bits

Desde que estoy realmente inmerso en el desarrollo con WordPress dentro de Codection, intento atender este portal con al menos una noticia resumen semanal. El fin de semana pasado estuve fuera, que coincidía con el día de Andalucía; y esta semana ha sido muy dura, así que no he podido hasta hoy preparar esta entrega. Pero bueno, como siempre digo más vale tarde que nunca y por supuesto, que no se pierdan las buenas costumbres.

Vamos a ver este resumen quincenal de enlaces a recursos de interés para todos los que estéis dentro del mundo linuxero, del software libre y del desarrollo web:

  • Para todos los que no pudisteis venir a ver nuestra ponencia en directo sobre WordPress y PHP en coSfera la última semana de febrero: WordPress y PHP nuestra ponencia en BetaBeers Córdoba XXIII especial PHP – Codection
  • Si eres aficionado a los cómics te interesará conocer este programa: Lee cómics en Ubuntu con MComix – Ubunlog
  • ¿Software libre desde Rusia? Sí que lo hay y de mucho interés: ¿Los Rusos al Poder? Ahora el Navegador Yandex en tu PC con GNU/Linux – Desde Linux
  • Si trabajas desarrollo software con WordPress, como es mi caso, nunca viene mal tener una herramienta que valore de forma objetiva y a nivel mundial cuánto vale una web hecha con WordPress, teniendo en cuenta diferentes condicionantes: ¿Cuánto cuesta una web hecha con WordPress? – Ayuda WordPress
  • Hace mucho que cambiamos de 32 a 64 bits en hardware pero el software se resistía, ahora parece que hay ciertas señales de que los 32 bits pasan a ser algo del pasado: Decidle adiós a Chrome en los 32-bit – Muy Linux
  • read more

    Leer más » 1 Comentario

    Aligerar el peso de phpMyAdmin

    Si te dedicas a la consultoría web estarás acostumbrado a manejar phpMyAdmin como cliente de MySQL sobre la web. Sin lugar a dudas, pasa por ser la solución la solución más completa de las que existen en este campo y teniendo la precaución evidente de no dejarlo colgado de una ruta demasiado visible que pueda ser rastreada hasta por los bots que andan buscando sitios susceptibles de ser atacados, no deberíamos tener ningún problema usándolo de cara a seguridad (la idea es la que os digo, taparlo un poco usando una ruta rara y al dejar de usarlo borrarlo inmediatamente).

    Como veis la idea es la siguiente:

    • Subir phpMyAdmin
    • Esconderlo en una ruta diferente a las estándares
    • Usarlo
    • Eliminarlo cuanto lo hayamos terminado de usar

    Logo phpMyAdmin

    El problema que tiene este método es que phpMyAdmin tiene que ser subido/bajado repetidas veces y para que os hagáis una idea de su peso, la versión actual ocupa un total de 27,4 MB siendo 1.538 archivos si tenéis que hacer esta subida por FTP y con una línea ADSL… vais a perder mucho tiempo.

    La solución: aligerar lo que no es necesario

    Si entráis dentro del paquete que se descarga veréis que hay algunas carpetas que no son necesarias y que tienen bastante peso, ¿de cuáles os hablo?

    • doc: que contiene documentación del proyecto
    • examples: ejemplos de uso
    • locale: traducciones, si no os importa trabajar en inglés podéis borrarla al completo

    Tras borrar estas carpetas, volvemos a ver cuánto peso queda y tenemos que se ha reducido a prácticamente la mitad: 14,2MB aunque el número de archivos no lo ha hecho en la misma medida, 1.399 archivos.

    Leer más » 2 Comentarios

    Manejo básico del búfer en PHP

    Logo PHPSiempre que manejamos PHP, existe la problemática de mezclar la vista y funcionalidad. Este problema se da a varios niveles y es más complejo y da más quebraderos de cabeza cuanto más se enrevesan código y funcionalidad, el caso típico es cuando guardamos parte de la vista en una cadena y la devolvemos o la imprimimos. Al meter la vista dentro de la cadena, el código se vuelve poco legible y además hay ocasiones en las que este métodos llega a ser inoperable.

    Veamos un ejemplo:

    $cadena = "Voy a preparar una cadena con parte de la vista";
    $cadena .= "Para devolverla";
    $cadena .= "Aquí podríamos meter código HTML";
    return $cadena;
    

    Ese caso llevado al extremo sería mucho más grande, con variedad de código HTML y JavaScript en su interior y con un enrevesamiento tal que haría muy complejo su manejo y mantenimiento.

    Gracias a que PHP nos ofrece multitud de soluciones, la solución es bien sencilla. Usar las funciones de búfer. Un apunte rápido:

  • ob_start(): abre el búfer
  • ob_get_contents(): obtiene los elementos que hay en ese momento en el búfer
  • ob_end_clean(): cierra el búfer y lo limpia
  • read more

    Leer más » 1 Comentario

    PHP Fatal error: Class ‘Imagick’ not found

    imagemagickSi manejáis PHP y sois usuarios de Linux sabréis que una de las mejores librerías que existen para manejar imágenes, con operaciones a todos los niveles, es imagemagick.

    En caso de que la estéis usando y obtengáis un error 500 del servidor, si activáis los errores, es posible que tengáis algo así:

    PHP Fatal error:  Class ‘Imagick’ not found 

    El error se debe a que no tenéis instalada la librería correctamente, la solución es simple:

    apt-get install imagemagick php5-imagick

    Tras esto reiniciáis el servicio y listo:

    sudo service apache2 restart

    Leer más » 1 Comentario

    Comprobar en PHP si una URL contiene una cadena

    phpMuchas veces tenemos que tomar decisiones en función de lo que contenga la URL. No suele ser el método más elegante y en una buena arquitectura con un modelo vista controlador no es lo frecuente, sin embargo, sí es algo que pasa y es algo que nos puede sacar de más de un problema si sabemos cómo hacerlo.

    La idea es la siguiente:

    • Si la URL contiene (por ejemplo) “/categoria/” sabemos que estamos tratando con una categoría (en WordPress podríamos hacer directamente is_category()).

     ¿Cómo hacerlo con PHP?

    Muy simple, sólo tendremos que comparar las cadenas y previamente recuperar la URL. ¿Cómo?

    La URL se recupera así:

    $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

    Y la comparación la haremos como sigue:

    
    if (false !== strpos($url,'/categoria/')) {
        echo 'La cadena /categoria/ aparece';
    } else {
        echo 'La cadena /categoria/ no aparece';
    }

    Bonus track

    ¿Y por qué usamos el operador de comparación ‘ !==’  en lugar de simplemente ‘!=’? Más de uno ya sabrá que en los lenguajes no tipados, como PHP o JavaScript, una variable puede tener diferentes tipos y podemos comparar entre diferentes tipos de variables.

    Es decir podemos hacer cosas como:

  • 0 == False: comparar entero con booleano comparando sólo valores, en este caso daría Verdadero
  • 0 === False: además de comprobar valores también comprueba tipos, al ser diferentes devuelve Falso
  • read more

    Leer más » 3 Comentarios

    Calcular día de la semana con PHP

    Los requisitos de los clientes, en buena medida suelen tener que ver con restricciones temporales. No sólo de cantidad de tiempo, sino también de qué días o no es. Por eso hoy os traigo este código. Veremos primero cómo averiguar qué día de la semana es para una fecha dada, para posteriormente hacer una función de ejemplo que diga si es fin de semana o no.

    Empecemos, recibiremos una fecha en formato americano, como se almacena en las bases de datos como MySQL es decir: año con cuatro cifras, seguido del mes en formato número con dos cifras, seguido del día con dos cifras, todo ello separado por guiones.

    Usaremos dos funciones de PHP:

  • int cal_to_jd ( int $calendario , int $mes , int $día , int $año ): calcula la fecha juliana para una fecha en el calendario calendar especificado. Se soportan: el gregoriano (CAL_GREGORIAN), el juliano (CAL_JULIAN), el judío (CAL_JEWISH) y el francés (CAL_FRENCH).
  • mixed jddayofweek ( int $díajuliano [, int $modo = CAL_DOW_DAYNO ] ): una vez se obtiene la fecha juliana, calcula el día de la semana. Hay varios modos pero usaremos el 0, por defecto, que devuelve el día como un entero de 0 a 6, siendo 0 domingo y 6 sábado.
  • read more

    Leer más » 2 Comentarios