Comunidad de diseño web y desarrollo en internet online

Como almacenar un Array en MySQL

Citar            
MensajeEscrito el 30 Oct 2009 06:45 pm
Hoy me mi en la necesidad (vaya Dios a saber por que) de almacenar un Array en tabla MySQL, si ya se por favor a todos los que desean apuñalarme o darme de batazos por la herejia de no normalizar mis tablas e intentar almacenar u array sorry, pero en este caso em era más facil, más r+apido y la verda no tenia ganas de crear las demas tablitas para hacer la normalización, en fin dicho esto hago la salveda que esta práctica no es recomendable U_U sin embargo aqui les va para los que lo necesiten

Almacenar una array en MySQL


Es algo facil en realidad el problema no reside en si en guardarlos segun yo lo veo si no tb en poder utilizarlo posteriormente, como sabemos una array o matriz o arreglo o como deseis llamarlo es un conglomerado de datos que pueden o no tener relacion entre, ordenados o no, pero en fin un conjunto de datos listado, es algo como:

Array 1 = {valor1,valor2,valor3, ... ,valorN}

tambien podrían ser pares de valor, o lo que se llamaría array asociativo:

Array2 = {nombre1:valor1,nombre2:valor2, ... , nombre3:valor3}


Pero como esto no es un tuto de Arrays lo dejaremos ahi, lo que queremos es almacenar dicho valores en un tabla MySQL y posteriormente usarlos par esto haremos uso de nuestro amigo PHP yalgunas ideas que se me ocurrieron para hacer esta gracia,:

PASO 1:

Arma tu array en PHP de la siguiente manera:

Código PHP :

$array = "valor1,valor2,valor3";
como veras nada fuera de los comun, una variable que almacena un STRING el cual contiene los valores de tu array separados por comas, tambien puedes usar punto y coma o solo punto u cualquier otro simbolo.
Por el lado de tu MySQL, habras creado una tabla con un campo de tipo TEXT, ¿como dice, que porque TEXT? porque no tengo la mas minima idea de que tamaño pueda llegar a tener el array que creareis.

PASO 2:

Hora de almacenar el array en la tabla MySQL, nada mas facil

Código PHP :

$q_MySQL_Array = "INSERT INTO tabla (campo_array) VALUES ('$array')";
$MySQL_Array = mysql_query($q_MySQL_Array) or die (mysql_error());
con eso ya tienes tu array almacenado en la base de datos y te estaras preguntando eso tb lo pude hacer yo solo, si pero no lo hiciste, la verdadera solucion esta aqui en como usar esa cadena como una array.

PASO 3:

Desde PHP ahora recuperaremos nuestro cuasi-array y lo haremos un verdadero array de la siguiente manera:

Código PHP :

$q_recupera = "SELECT campo_array FROM tabla";
$recupera = mysql_query($q_recupera) or die (mysql_error());
$r_recupera = mysql_fetch_assoc($recupera);
$array = $r_recupera[campo_array]; // <- Aqui almacenamos nuestro string dentro de un variable llamada array;
$array = explode(',',$array]); //<- Aqui ejecutamos la funcion explode en nuestro string lo que da como resultado una rray con los diversos trozos de nuestro string ya que usamos la como para separar los valores, al hacer explode usando la coma como separador hemos rearmado nuestro array.
print_r($array) // imprimira en pantalla todo nuestro array.

Como veran la solucion a este problema es en realidad bastante simple, espero les sea de utilidad. Salu2 a todos.

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

msie8
Citar            
MensajeEscrito el 30 Oct 2009 08:51 pm
Para no morir en el intento guardaría un array serializado... aunque todavía no le veo la utilidad.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 30 Nov 2009 11:21 am
Hola NeoCesar,

Es un aporte interesante. Lo muevo al foro aportes por ello. Sin embargo, como dice Maikel, la mejor forma en estos casos es serializar el array. Aun así, tu mismo admites al inicio que hacer esto no es recomendado en un entorno con correcta normalización de DB.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 28 Jul 2011 05:42 pm
Creo que seria mejor guardar los datos como JSON...
Ahora si bien no es recomendado, yo creo que algunos casos son las excepciones.
Por ejemplo, que tal si tienen un campo en que se guarda cierto contenido... si tienen todo almacenado con json pueden guardar el tamaño app del texto, si tiene un video guardar su informacion, claro si es un video externo mediante url ,digamos youtube.. duracion, id etc.. hasta la thumb...

Por chechen

1 de clabLevel



Genero:Masculino  

Chile

chrome
Citar            
MensajeEscrito el 05 Oct 2011 05:56 pm
tengo un problema similar, deseo registrar los elementos de una lista en una bd mysql.., de lo que se trata s de un sistema de encuestas,, ya se tiene la pregunta ahora al momento de crear las respuestas se van agregando a una lista, cuando ya se tienen todas las repuestas kiero guardar esa respuestas en la base de datos, ocea como hacer un Bulk Insert en sql pero con los datos de la lista, y no star almacenando respuesta x respuesta
se puede realizar esta operacion amigos, se k si xfavor si pudiesen darme una mano

Por yohan_alv

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 12 Nov 2011 07:57 pm
Hola

Tengo un programa que me genera una serie de resultados en plan array, los guardo en una base de datos mysql separados por comas, se trata de un programa generador de actividades , por cada actividad me guarda 4 numeros separados por comas, si hago 5 actividades me guarda 20 numeros separados por comas , por ejemplo:

a,b,c,d,a,b,c,d,a,b,c,d,.........
Donde
a ---> número de página.
b ---> tipo de página. Sopa de letras, respuesta múltiple, etc
c ---> Evaluación de la página:0 NO INTENTADO,1 BIEN,2 MAL,3 NO ES UNA
ACTIVIDAD.
d ---> Número de intentos.

y asi se repiten y repiten las series tantas series como actividades haya hecho.

El script que guarda los datos es el siguiente:ç

Código PHP :

<?php
//Este es un script muy simple para ver las posibilidades de LIM y php

if (empty($_POST)){
//Si no recibe datos.
}
else
{
    include('config.php');
    $resul = $_POST['iresul'];
    $titulo = $_POST['ititulo'];
    $intime = $_POST['itime'];
    $id = $_POST['iid'];
    $user= $_POST['inom'];
    $nota = 0;
   
    //$user contiene la identificación del usuario, se debe obtener por sesión, cookie , etc, para este ejemplo utilizamos un valor fijo
    //$user='$inom';
    //$id es la identificación del libro-LIM, puede pasarse desde el propio libro mediante &id=...., o por código
    if ($id!='')
    {
        $conect=mysql_connect($dservidor, $duser, $dpass)or die ("");
       
        echo "conexion<br/>";
       
        if ($conect)
        {
            mysql_select_db ($base, $conect);
            $sql = "SELECT * FROM  $tabla WHERE id_libro=".$id." AND usuario='".$user."';";
                    $result = mysql_query($sql) or die (mysql_error());
                    $nume = mysql_num_rows($result);
                   
                   
                    $arrayDatos=explode(",",$resul);
                    $num=count($arrayDatos)/4;
                   $suma=0;
               
                    for ($f=0;$f<$num;$f++)
                    {
                        $nump++;
                       
                        switch ($arrayDatos[$m+2])
                        {
                            case "1":
                                $suma++;
                                break;
                            default:
                                break;
                        }

                        if ($arrayDatos[$m+2]=="3") $nump--;
                        $m=$m+4;
                     }
                     
                     $nota=number_format(($suma/$nump)*10,1);
                   
            if ($nume>0)
            {
                $sql ="UPDATE $tabla SET id_libro='".$id."',libro='".$titulo."', nota = '".$nota."', datos='".$resul."',fecha=NOW() WHERE id_libro=".$id." AND usuario='".$user."';";
            }
            else
            {
                $sql ="INSERT INTO $tabla ( `id_libro`, `usuario`, `libro`, `nota`, `datos`, `fecha`) VALUES ('".$id."','".$user."','".$titulo."','".$nota."', '".$resul."', NOW());" ;
            }

            $result = mysql_query($sql)or die(mysql_error());

            echo "$resul, $titulo, $intime, $id, $user, $nota";


        }
    }
}
?>


Ahora bien, me gustaria extraer los datos del array, digamos decodificarlo y hacer que tenga sentido, como hacerlo??????
un saludo

Por cartagines

2 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.