Foros del Web » Programando para Internet » PHP »

Meter un objeto en base de datos (avanzado)

Estas en el tema de Meter un objeto en base de datos (avanzado) en el foro de PHP en Foros del Web. He seguido el ejemplo de carrito que está en desarrollo web que está hecho sobre un objeto dentro de una sesión. Código: //inicio la sesión ...
  #1 (permalink)  
Antiguo 29/06/2011, 15:30
 
Fecha de Ingreso: octubre-2008
Mensajes: 168
Antigüedad: 11 años, 1 mes
Puntos: 2
Sonrisa Meter un objeto en base de datos (avanzado)

He seguido el ejemplo de carrito que está en desarrollo web que está hecho sobre un objeto dentro de una sesión.

Código:
//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
if (!isset($_SESSION["ocarrito"])){
	$_SESSION["ocarrito"] = new carrito();
}
class carrito {
	//atributos de la clase
   	var $num_productos;
   	var $array_id_prod;
   	var $array_nombre_prod;
	var $array_precio_prod;
	var $array_fecha_prod;	
	//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
	//inicializa el numero de productos a 0
	function carrito () {
   		$this->num_productos=0;
	}
	
	//Introduce un producto en el carrito. Recibe los datos del producto
	//Se encarga de introducir los datos en los arrays del objeto carrito
	//luego aumenta en 1 el numero de productos
	function introduce_producto($id_prod,$nombre_prod,$precio_prod,$fecha_prod){
		$this->array_id_prod[$this->num_productos]=$id_prod;
		$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
		$this->array_precio_prod[$this->num_productos]=$precio_prod;
		$this->array_fecha_prod[$this->num_productos]=$fecha_prod;
		$this->num_productos++;
	}

	//Muestra el contenido del carrito de la compra
	//ademas pone los enlaces para eliminar un producto del carrito
	function imprime_carrito(){
		$suma = 0;
				<p align="center"><img src="images/carro.gif"></p>
		<table border=1 align="center" cellpadding="4">
			   <tr>
			   <td><b>Id</b></td>
				<td><b>Nombre producto</b></td>
				<td><b>Precio</b></td>
				<td><b>Fecha</b></td>
					</tr>';
			 
		for ($i=0;$i<$this->num_productos;$i++){
			if($this->array_id_prod[$i]!=0){
				echo '<tr>';
				echo "<td><b>" . $this->array_id_prod[$i] . "</b></td>";
				echo "<td><b>" . $this->array_nombre_prod[$i] . "</b></td>";
				echo "<td>" . $this->array_precio_prod[$i] . "</td>";
				echo "<td>" . $this->array_fecha_prod[$i] . "</td>";
				echo "<td><a href='?carrito=eliminar&linea=$i'>Eliminar producto</td>";
				echo '</tr>';
				$suma += $this->array_precio_prod[$i];
			}
		}
		//muestro la cantidad total  total
		
		//muestro el total
		echo "<tr><td><b>TOTAL PRECIO:</b></td><td>&nbsp;</td><td><b>$suma</b>€</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
		echo "</table>";
	}
	
	 
	//elimina un producto del carrito. recibe la linea del carrito que debe eliminar
	//no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
	function elimina_producto($linea){
		$this->array_id_prod[$linea]=0;
	}
}
Se muestran los datos del objeto carrito:

He hecho
var_dump( $_SESSION['ocarrito']) de dos registros y sale

Código:
object(carrito)#1 (5) { ["num_productos"]=> int(2) ["array_id_prod"]=> array(2) { [0]=> string(4) "2231" [1]=> string(4) "2222" } ["array_nombre_prod"]=> array(2) { [0]=> string(7) "platano" [1]=> string(7) "manzana" } ["array_precio_prod"]=> array(2) { [0]=> string(1) "5" [1]=> string(1) "3" } ["array_fecha_prod"]=> array(2) { [0]=> string(19) "2011-06-29 22:18:08" [1]=> string(19) "2011-06-29 22:20:43" } }
Me pregunto como meto un objeto dentro de un array, y como meto el array en un insert a una base de datos. Me interearía meter de ese objeto solo los datos del id del producto con eso ya tengo identificado lo demás, ya que el comprador, la fecha los puedo sacar del mismo formulario con otras variables en campos ocultos.

Me interesaría insertar en mysql de ese objeto este dato:

["array_id_prod"]=> array(2) { [0]=> string(4) "2231" [1]=> string(4) "2222" }

Última edición por jordi45; 29/06/2011 a las 15:36
  #2 (permalink)  
Antiguo 29/06/2011, 16:33
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 14 años, 4 meses
Puntos: 36
Respuesta: Meter un objeto en base de datos (avanzado)

Hola

No puedes meter un objeto en la base de datos. En tu caso podrías meter datos tipo string o numéricos.

foreach($_SESSION["ocarrito"]->array_id_prod as $key => $id){
echo $id
}

Este ejemplo te imprimirá todas las ID almacenadas en el array. Para meterlo en una base de datos sólo tienes que poner la variable $id en la parte que toque de la consulta sql que pondrás dentro del bucle.

Saludos.
  #3 (permalink)  
Antiguo 29/06/2011, 16:54
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 8 años, 7 meses
Puntos: 344
Respuesta: Meter un objeto en base de datos (avanzado)

Sí que se puede meter un objeto en una base de datos si antes lo serializas, mediante la función serialize.

Ejemplo:

http://php.net/manual/es/function.serialize.php

Puede ser que el objeto no pueda ser serializable y en este caso, no funcionaría.

Para lo que quieres hacer, seguramente no es necesario meter el objeto sino sólo los datos que te interesan.

Etiquetas: avanzado, objeto
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:39.