articulos php

articulos » php

Insertar arrays en bases de datos

votar
Enviado el: 04/01/2012 - a la categoria: php

Uno de los principales problemas a la hora de añadir información a una base de datos, es cuando esta información está en forma de array. En estos casos, la información no consiste solo en los datos en sí, sino que la forma en como están guardados dichos datos, siendo esta forma (estructura) tan importante como los propios datos.Php nos brinda una función para realizar la conversión, y poder almacenar el array como si fuera una cadena de texto, esta función es serialize(). Realmente es bastante simple de utilizar:


$array = array("uno", "dos", "tres");
$r = serialize($array);

El resultado sería que en la variable $r, obtenemos el array serializado, y listo para almacenarse en la base de datos. Y luego, para almacenarlo, solo tenemos que utilizar la función inversa: unserialize(). La cual nos devolverá la información serializada al formato de array.


Como ejemplo, para ver un uso más práctico de la función, vamos a plantear el siguiente ejemplo: desde el campo textarea de un formulario, enviamos una serie de urls, cada una en una fila diferente, tenemos que recibirlas, convertilas en array y serializarlas para poder enviarlas a la base de datos.


function serializePost($array, $separator){
    if(!empty($array)){    
        //inizializamos las variables
        $tags = $final = "";
        //separamos las comas
        $tags = explode($separator, $array);
        //separamos los tags
        foreach($tags as $value){
            //quitamos expacios en blanco
            if(!empty($value)){
                $final[] .= $value;
            }
        }
        //devolvemos serializado para anadir a BD
        return serialize($final);
    }else{
        return NULL;
    }
}

Primero llamamos a la función serializePost($array, $separator); en ella observamos el primer campo $array, que es el contenido del formulario, por ejemplo: $_POST['textarea']; y el otro campo: $separator, que lo realmente pide, es que le indiquemos como están separados los diferentes elementos que hemos enviado desde el formulario, en nuestro caso, hemos comentado antes que sería añadiendo una dirección web en cada linea, por lo que deberíamos llamar a la función de la siguiente forma:


serializePost($_POST['textarea'], "\n");

Así le indicamos que cada salto de linea es un campo diferente. Después, utilizando explode(), separamos cada elemento en un array, y mediante un foreach(), los unimos todos en un array, para finalmente, serializar el array y poder enviarlo a la base de datos.


Nuestro ejemplo, también podría servir para crear un sistema de etiquetas, por ejemplo, en el campo de formulario introducimos:


php, programacion, funciones, tutorial,

En este caso, podemos llamar a la función de la siguiente forma:


serializePost($_POST['textarea'], ",");

Y lo que obtendríamos sería un array así:


$valor = array("php", "programacion", "funciones", "tutorial");

Aunque eso sí, después lo serializa y lo devuelve listo para enviar a la base de datos.

Enviado por:
Etiquetas: php, serialize, bd, array