Foros del Web » Programando para Internet » PHP »

Guardar un array en mysql

Estas en el tema de Guardar un array en mysql en el foro de PHP en Foros del Web. Hola de nuevo! Estoy creando un script en php y me gustaría saber si es posible guardar un array en una base de datos y ...
  #1 (permalink)  
Antiguo 02/06/2005, 10:50
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
Pregunta Guardar un array en mysql

Hola de nuevo! Estoy creando un script en php y me gustaría saber si es posible guardar un array en una base de datos y después consultarla sin necesidad de crear una tabla en msql. Si fuese posible agradecería que me dijesen donde puedo encontrar un código que me oriente para luego adaptarlo a mi script. Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 02/06/2005, 11:30
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Un array contiene de 1 a muchos datos con profundida dependiendo si es multi o bidimensional.

Asi que lo que quieres hacer es guardas los datos del array?? o la estructura o que quieres hacer en realidad, profundisa o nadie opinara mucho y te dira solamente.

Suerte.
  #3 (permalink)  
Antiguo 02/06/2005, 11:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías concretar que tipo de array usas ("dimensiones") ..

Pero, si ya dices que vas a tener que buscar en esos datos .. lo mejor sería aplicar cierta "noramalización" creando las relaciones que se requieran (una tabla y a "registro" por elemento de ese array) .. así podrás hacer consultas SQL más complejas y optimas para obtener tus datos ..

Si mas que "buscar" sobre esos datos (que igualmente se podría) sólo vas a presentar o "reconstruir" ese array nuevamente al leerlo de tu BD .. puedes "serializar" ese array (sea como sea este) usando:

serialize()
www.php.net/serialize

Y su unserialize()

O bien serializar el array a tu manera (sobre todo si tu array es unidimensional) usando implode() para convertir tu array en una cadena (de tantos elementos como tenga el array y separados por algún caracter: , (coma) .. etc...). Esa "cadena" la guardarías en un sólo campo de tu BD .. Esto facilita el "almacenamiento" de esos datos .. pero para nada optimiza busquedas complejas sobre ellos. Piensatelo y sobre todo si quieres cierta ayuda/asesoría .. explica mejor que datos vas a guardar así, y que es lo que requieres de ellos.

Un saludo,
  #4 (permalink)  
Antiguo 02/06/2005, 11:42
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading............


La respuesta segun la pregunta: NO no se puede se debe elegir siempre una tabla en una base de datos para insertar datos.


connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 02/06/2005, 11:47
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
Me explicare mejor. Bueno para empezar, tengo muy pocas esperanzas de que esto sea posible, pero si existiese me ahorraria un gran trabajo. Me pasa lo siguiente: tengo un array bidimensional, y me gustaria que se pudiese guardar en uno de los campos de una tabla de una base de datos. Pongamos un ejemplo:

Tengo una tabla de una base de datos que tiene los siguientes campos:
| Nombre | Apellidos | Numero de pedido | Pedido |

Dentro de `pedido` meteria un array como una especie de carrito de la compra, por poner un ejemplo, el array sería:
producto => unidades

luego lo que intento conseguir es que en el campo 'pedido' pueda meter los productos y sus respectivas unidades que el cliente ha comprado.
No sé si me habré explicado bien, pero la idea es esa, un problema bastante interesante
  #6 (permalink)  
Antiguo 02/06/2005, 11:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
Otra idea que creo q podría funcionar, sería que en ese campo guardase el array de la siguiente manera:
p:producto1 u:3 p:producto2 u:4 p:producto3 u:2
Y de esa manera luego al consultarlo de la base de datos, recorrería esa variable y fuese creando el array. Se podría hacer eso?
  #7 (permalink)  
Antiguo 02/06/2005, 11:52
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
No es problema, lo que pasa es que debes conocer mas de estructura de base de datos, el asunto alli es que quieres hacer algo con lo que crees es correcto pero ya que dijiste lo que quieres, olvida tu ideologia y dirijete a la via correcta.

Esa tabla de Nombre, Apellido..... debera tener un idunico este id estara en otra tabla que se llama pedido:
|idpedido |idusuario| pedido

Allli metes todos los pedidos que vayan ligados a un usuario en especial, le puedes poner fecha para control y otros datos extras que requieras.

Lo que haces y como lo quieres hacer no es la mejor via, pero no te apresures que aprte de mi idea vendran muchas mas.
  #8 (permalink)  
Antiguo 02/06/2005, 12:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
A ver si lo he entendido dwaks, porque si es así el problema estaría más que solucionado, lo que tu dices es lo siguiente:
Primero: que de esa tabla primera pongamos por nombre 'clientes':
| Nombre | Apellidos | numero de pedido | pedido |
la transforme en:
| Nombre | Apellidos | idpedido |
Segundo : que cree otra tabla llamemosla 'pedidos' sea asi:
| idpedido | producto | unidades |

De esa manera al consultar la tabla selecciono los campos con la misma idpedido y creo el array obteniendo los resultados.

Genial! Muchisimas gracias! Da gusto plantear problemas en este foro. Me pondre a escribir el script y si tengo alguna duda os la planteo. Gracias de nuevo, jorge
  #9 (permalink)  
Antiguo 02/06/2005, 12:10
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Bueno casi, la idea esta casi terminada, pero recuerda que para relacionar un usuario con un pedido es importante ponerle un id al usuario ya que siempre existira un usuario unico ejemplo:
Yo me registro en tu sistema y me das un id de usuario, asi que ya tengo mi id, yo puedo hacer en tu sitio 500 pedidos asi que lo unico que le dice a un pedido que es mio es por medio de mi id de usuario.

Espero aclarlo.
  #10 (permalink)  
Antiguo 02/06/2005, 12:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
Todo aclarado, gracias
  #11 (permalink)  
Antiguo 02/06/2005, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por si tienes dudas sobre lo que te comenta dwaks .. se trata de temas de "normalización" de base de datos y "modelo de datos" de estas ..

Revisa estos (y todos en general) tuturiales de:

Un buen "modelo" de tu BD .. se prestará a mejor optimización de tus BD, y sobre todo a implementar funcionalidades fácilemente (ejemplo . .buscadores .. estadísticas .. etc sobre esos datos).

Principios de diseño de BD
http://www.mysql-hispano.org/page.php?id=23
Normalización
http://www.mysql-hispano.org/page.php?id=16

Un saludo,
  #12 (permalink)  
Antiguo 01/12/2009, 14:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 30
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Guardar un array en mysql

hola amigos, tengo un problema similar que quizá me puedan ayudar a resolver. Resulta que tengo un sistema de un restaurant y necesito que bajo un mismo ID de pedido me guarde hasta 5 comidas distintas y hasta 5 bebidas distintas y no se como hacerlo por ej.:
id_pedido bebidas comidas ...
1 coca, pepsi pancho, alemana
yo los datos los traigo al formulario de la sgte. manera por ej. las bebidas:

$e=10;
for($e=10; $e<=14; $e++){
$codigoB[$e]=$_POST["$e"];
$cantidadB[$e]=$_POST["cant$e"];
if($codigoB[$e]==0){
}
else{
$result1=mysql_db_query($dbname, "SELECT * FROM bebidas WHERE id_bebida='$codigoB[$e]'", $dbcon);
if($row=mysql_fetch_array($result1))
do{
$bebida=$row["nombre_b"];
$precioB[$e]=$row["precioB"];}
while($row=mysql_fetch_array($result1));
$totalB[$e]="$precioB[$e]"*"$cantidadB[$e]";
echo"<tr><td>Bebidas <td> $bebida <td>$cantidadB[$e]</td><td>$ $precioB[$e]</td><td>$ <input type=text disabled size=3 name=total$e value='$totalB[$e]'></td>";
echo"<tr><td>Total bebidas<td><td><td><td>$ <input type=text disabled name=totalesB size=3 value=".array_sum ($totalB).">";
}
}
y eso a la vez de generarme el formulario debería guardarme la venta, me podrán ayudar? gracias desde ya!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:33.