Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/06/2008, 11:46
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: "a:1:{i:0;s:17:"Subrubro Numero 1";}" que es esto???

amigo seyko,
no podría precisarte las razones exactas, pero te diré algunas de las que se me ocurren. Pero antes, aclaro que se trata de una línea de cadena donde se guardan los datos de un array, y pasan con su indicativo de tipo i(int), s(string) y la longitud, creo pero no estoy muy seguro. Imagina que cargas los datos de una consulta a una tabla y los quieres pasar a otra página; te has traído varios, puedes pasarlos en el array uno a uno o mejor serializas el array (esto también sirve para selectores), es decir, lo conviertes en una cadena, luego recoges la cadena y haces el unserialize en la página que recibe, y ya está. De una tacada te lo has traído y pasado todo. ¿Cómo sacarías tú de una función los datos de un array? Yo convierto a cadena de texto mediante serialize, si no recuerdo mal. También la carga en base de datos es fácil: se trata de una sola línea que luego puedes recuperar y tras volverla a convertir en array trabajar con ella. Al parecer, los que trabajan con carritos de compra suelen guardar los datos de esta manera, serializados, en la base. Seguro que en el foro de PhP te dicen mucho más y con más sentido. Yo lo usé en un prueba que hice de un test en el que se recogían 10 preguntas aleatoriamente. Cargaba en la consulta que mostraba en la primera página todo, preguntas y respuestas; mostraba las preguntas y luego cargaba las respuestas elegidas junto con lo demás en un array que serializaba y pasaba a la siguiente página, donde procesaba los aciertos y realizaba el cómputo trabajando sobre el array una vez deserializado...
He leído que algunos guardan en variables de sesión esta cadena y cuando la compra se ejecuta vuelcan los datos en la base, y la duda que tú planteas va en esa línea: cómo volcarlos, serializados o deserializados. Existen opiniones distintas, pero si no te interesa trabajar sobre ellos, ni hacer estadísticas, ni nada parecido, esto es una buena solución. Y luego el borrado es total: olvídate de los borrados en cascada y demás.
En cuanto a por qué se guarda así, imagino que por razones de espacio y para facilitar el trabajo posterior: no son necesarias varias consultas, y basta con programación sobre el array para mostrar los datos y sacar sumas, totales, etc.
Al parecer es muy útil para serializar objetos, y permite usar objetos en sesiones y almacenarlos en bases de datos, pero eso supera con mucho mis conocimientos.

Última edición por jurena; 20/06/2008 a las 12:02