Array en bases de datos con PHP

Muchas veces necesitamos guardar ciertas configuraciones del usuario, sistema, etc. en una base de datos para cuando iniciemos o carguemos cierta parte del sistema este como cuando la cerramos, o los colores elegidos se han los mismos.

Lo mas típico o común que he realizado y he visto que otros hacen es almacenar estos valores en una cadena delimitando las opciones con una carácter por ejemplo

 

png | 250 | 300

png | | 300

En este caso digamos que estamos al almacenando el tipo de imagen y las dimensiones de las mismas, para la siguiente vez que carguemos esta este con estas medidas.

en el primer ejemplo sabemos que es png y 250 de ancho por 300 de alto, yo se cual es el ancho y alto por que a mi se me ocurrió esto, pero para alguien más a simple vista no tendrá mucho sentido, y menos si en el segundo ejemplo no se especifica lo ancho puesto que tomara el default.

Entonces al momento de obtenerlos de la BD debemos hacer un explode para tener el arreglo siendo las posiciones:

[0] = Formato de imagen

[1] = ancho

[2] = alto

Por ello a n que no se especifique el ancho se deberá poner | |, para respetar la posición de los array.

Y cuando queramos almacenar esta información solo bastara un implode y listo.

ahora bien les presento otra alternativa que a mi parecer es mucho mas eficiente, ya que podremos saber que posición corresponde a que valor.

Tenemos el siguiente ejemplo:

$imagen = Array(“formato”=>”png”, “width”=>250 , ”height”=>300)

Para almacenar $imagen en la BD solo bastara lo siguiente.

$imagenBD = serialize();

donde

$imagenBD = a:3:{s:7:”formato”;s:3:”png”;s:5:”width”;i:250;s:6:”height”;i:300;}

no se espanten si no entiende la conversión de normalize total el que lo usara y leerá será php, nosotros siempre trabajaremos con arrays, y con esto es suficiente para almacenar nuestro array en BD, cuando lo obtengamos simplemente hacemos lo contrario:

$imagenBD = campo donde se almaceno el array.

$imagen = unserialize($imagenBD);

Y listo ahora podremos tratar a $imagen como un array, y para conocer si tiene un ancho bastara:

if (key_exists(“width”,$imagen)) {…}

por lo que ya no debemos preocuparnos en que posición quedaron almacenados y no abusamos de implode y explode jejeje Sonrisa.

¿Que usos se te ocurre o donde lo implementaras?

Leave a Reply

Your email address will not be published. Required fields are marked *