Foros del Web » Programando para Internet » PHP »

grabar en una base de datos

Estas en el tema de grabar en una base de datos en el foro de PHP en Foros del Web. Saludos, Logre implementar un carrito de compras por medio de sesiones, a travez de un manual que consegui en internet (funciona correctamente), y ahora estoy ...
  #1 (permalink)  
Antiguo 02/07/2008, 12:51
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta grabar en una base de datos

Saludos,
Logre implementar un carrito de compras por medio de sesiones, a travez de un manual que consegui en internet (funciona correctamente), y ahora estoy en la necesidad de que todos los productos seleccionados se graben en una base de datos, para luego despues poder extraerlos los datos guardados de la compra.

agradesco de antemano su desinteresada colaboracion que me puedan ofrecer,


Aqui envio el codigo:
TABLA: catalogo; CAMPOS: id int not null auto_increment primary key,producto varchar(100),precio decimal(9,2)

VERCARRITO.PHP
<?php
session_start();
error_reporting(E_ALL);
@ini_set('display_errors', '1');
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
?>
<html>
<head>
<title>PRODUCTOS AGREGADOS AL CARRITO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
</style>
</head>

<body>

<h1 align="center">Carrito</h1>
<?php
if($carro){
?>
<table width="720" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#333333">
<td width="105">Producto</td>
<td width="207">Precio</td>
<td colspan="2" align="center">Cantidad de Unidades</td>
<td width="15" align="center">Ver detalle</td>
<td width="15" align="center">Subtotal</td>
<td width="85" align="center">Borrar</td>
<td width="159" align="center">Actualizar</td>
</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
$suma=0;
foreach($carro as $k => $v){
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;
?>
<form name="a<?php echo $v['identificador'] ?>" method="post" action="agregacar.php?<?php echo SID ?>" id="a<?php echo $v['identificador'] ?>">
<tr bgcolor="<?php echo $color[$contador%2]; ?>">
<td><?php echo $v['producto'] ?></td>
<td><?php echo $v['precio'] ?></td>
<td width="43" align="center"><?php echo $v['cantidad'] ?></td>
<td width="136" align="center">
<input name="cantidad" type="text" id="cantidad" value="<?php echo $v['cantidad'] ?>" size="8">
<input name="id" type="hidden" id="id" value="<?php echo $v['id'] ?>"> </td>
<td width="11%" class="texto"><div align="right"><? echo "$" .number_format($subto, 2, '.', ','); ?></div></td>
<td align="center"><a href="borracar.php?<?php echo SID ?>&id=<?php echo $v['id'] ?>"><img src="trash.gif"></a></td>
<td align="center">
<input name="imageField" type="image" src="actualizar.gif"></td>
</tr></form>
<?php }?>
</table>
<div align="center"><span class="prod">Total de Artículos: <?php echo count($carro); ?></span>
</div><br>
<div align="center"><span class="prod">Total: $<?php echo number_format($suma,2); ?></span>
</div><br>
<div align="center"><span class="prod">Continuar la selección de productos</span>
<a href="catalogo.php?<?php echo SID;?>"><img src="continuar.gif"></a>
</div>

<?php }else{ ?>
<p align="center"> <span class="prod">No hay productos seleccionados</span> <a href="catalogo.php?<?php echo SID;?>"><img src="continuar.gif"></a>
<?php }?>
</p>
</body>
</html>
  #2 (permalink)  
Antiguo 02/07/2008, 14:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Tema trasladado a PHP General.
  #3 (permalink)  
Antiguo 03/07/2008, 08:50
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: grabar en una base de datos

Pero.... ¿no deberías intentar hacerlo y preguntar luego si te surjen dudas?
Te recomiendo mirar primero las funciones de MySQL, y aprender un poco de SQL.


Saludos.
  #4 (permalink)  
Antiguo 07/07/2008, 09:00
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

HOLA...ANTEMANO AGRADESCO POR LA AYUDA,

HE BUSCADO EN INTERNET UNA MANERA DE GRABAR LA COMPRA EN LA BD MYSQL, DE LA SIGUIENTE MANERA:

vercarrito.php (modificacion: link)
-----------------------------------
<a href="facturar.php">Confirmacion de Compra</a>

tabla: factura
------------------
id(int11, autoincrement, pk)
compra(varchar50)


facturar.php
----------------.
<?php
session_start();
?>
<? include("conec.php");
$carrito=serialize($_session["carro"]);
$qry=mysql_query("insert into factura(compra) values('$carrito')");
echo "facturacion oka";
?>

DANDO COMO RESPUESTA "FACTURACION OKA", PERO NO SE VISUALIZA NADA CDO INGRESO EN EL PHP MYADMIN

LA CONSULTA ES SI ESTOY EN LO CORRECTO O ME FALTA ALGO MAS, POR FAVOR NECESITO QUE ME ORIENTEN PUESTO K RECIEN ESTOY TRABAJANDO CON PHP

GRACIAS...
  #5 (permalink)  
Antiguo 07/07/2008, 09:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Cambia así tu script:
Código PHP:
<?php
session_start
();
?>
<? 
include("conec.php");
$carrito=serialize($_session["carro"]);
$query "insert into factura(compra) values('$carrito')";
$qry=mysql_query($query) or die( "[ERROR] consulta: $query, error: " mysql_error() );
echo 
"facturacion oka";
?>
Saludos.
  #6 (permalink)  
Antiguo 07/07/2008, 09:35
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Agradesco tu ayuda,
me sale el siguiente error:

[ERROR] consulta: , error:Query was empty
  #7 (permalink)  
Antiguo 07/07/2008, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Mmmm y si definiste el $query como te puse en el código?, ya que esta muy raro que te pase eso...

Saludos.
  #8 (permalink)  
Antiguo 07/07/2008, 09:54
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Este el codigo que copie:

<?php
session_start();
?>
<? include("conec.php");
$carrito=serialize($_session["carro"]);
$qry=mysql_query("insert into factura(compra) values('$carrito')");
$qry=mysql_query($query) or die("[ERROR] consulta: $query, error:".mysql_error());
echo "facturacion oka";
?>

saludos,

DISCULPAS, HUBO UN ERROR...QUEDO ASI:

<?php
session_start();
?>
<? include("conec.php");
$carrito=serialize($_session["carro"]);
$qry="insert into factura(compra) values('$carrito')";
$qry=mysql_query($query) or die("[ERROR] consulta: $query, error:".mysql_error());
echo "facturacion oka";
?>

PERO DE TODAS MANERAS SIGUE MOSTRANDO DE NUEVO EL MENSAJE:

[ERROR] consulta: , error:Query was empty

OKA PROBE CON ESTE:

<?php
session_start();
?>
<? include("conec.php");
$carrito=serialize($_session["carro"]);
$qry="insert into factura(compra) values('$carrito')";
$query=mysql_query($qry) or die("[ERROR] consulta: $qry, error:".mysql_error());
echo "facturacion oka";
?>

Y ME SALIO ESTE MENSAJE:

[ERROR] consulta: insert into factura(compra) values('N;'), error:No database selected

AYUDAME POR FAVOR, GRACIAS

Última edición por GatorV; 07/07/2008 a las 20:02
  #9 (permalink)  
Antiguo 07/07/2008, 11:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Hola hoberwilly,

Si te fijas te esta dando el error, no haz seleccionado ninguna base de datos llamando a mysql_select_db.

Saludos.
  #10 (permalink)  
Antiguo 07/07/2008, 17:38
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
NO CREO QUE SEA EL CASO, PUESTO ESTOY COLOCANDO

include("conec.php")

Y EL CODIGO DE CONEC.PHP ES:

<?php
{
function conectarse()
{
if (!($conn=mysql_connect('localhost','root', ''))) /*CONEXION A LA BD*/
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("hoberwilly_es_db",$conn)) /*SELECCIONAMOS LA BD*/
{
echo "Error seleccionando la base de datos.";
exit();
}
return $conn;
}
}
?>

POR FAVOR AYUDAME, GRACIAS...

ESTOY VIENDO UN DETALLE EN LAS LINEAS DE FACTURAR.PHP Y ES QUE NO SE INCLUYO: conectarse();

PARA LO CUAL QUEDARIA FINALMENTE:

<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$carrito=serialize($_session["carro"]);
$query="insert into factura(compra) values('$carrito')";
$qry=mysql_query($query) or die("[ERROR] consulta: $query, error:".mysql_error());
echo "facturacion oka";
?>

LO PROBARE Y LES AVISO, OTRA CONSULTA QUISIERA SABER SI ESTA BIEN CREADO

tabla: factura
------------------
id(int11, autoincrement, pk)
compra(varchar50)


GRACIAS DE ANTEMANO POR LA AYUDA BRINDADA

GRACIAS TODO BIEN, YA ESTA RESUELTO YA INSERTA LOS DATOS EN LA BD...AHORA ESTOY IMPLEMENTANDO PARA LOGRAR VISUALIZARLOS LOS PEDIDOS HECHOS, ENCONTRE UN MANUAL EN INTERNET, Y ME DA SOLAMENTE EL MENSAJE DE EXTRACCION OKA PERO YO NECESITO VISUALIZARLO ESE PEDIDO UBICANDOLOS CON SU ID, NECESITO DE SU AYUDA POR FAVOR

EXTRAER.PHP

<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$id=$_GET['id'];
$qry=mysql_query("select * from factura where id='$id'");
$row=mysql_fetch_assoc($qry);
$_SESSION["carro"]=unserialize($row['compra']);

echo "extraccion oka";

?>

OTRA VEZ GRACIAS POR LA AYUDA BRINDADA

Soy Novato En Esto...necesito Por Favor Una Ayudita...

Por Favor Si Alguien Tuviera Una Sugerencia Como Implementarlo...gracias

tabla: factura
------------------
id(int11, autoincrement, pk)
compra(varchar50)

HOLA A TODOS, ESPERO TENER SUERTE EL DIA DE HOY Y ME PUEDAN AYUDAR...LE AGRADESCO DE ANTEMANO

ACTUALMENTE ESTOY IMPLEMENTANDO YA LA EXTRACCION DE TODOS LOS DATOS DE LA BD, DE MI TABLA FACTURA
tabla: factura
------------------
id(int11, autoincrement, pk)
destinatario(varchar50)
direccion(varchar50)
compra(varchar50)

...ME EXPLICO:

1. TENGO UN FORMULARIO (formularioExtraer.php) EL CUAL EL USUARIO AL INGRESAR EL ID DEL ORDEN DE PEDIDO GENERADO ANTERIORMENTE, SE RECUPERE TODO LOS DATOS DE ESE CARRITO ANTES GENERADO CON ESE NUMERO DE ORDEN

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Imagen a Blob</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="frmimage2" id="frmimage2" method="post" enctype="multipart/form-data" action="extraer.php">
<table border="1" cellpadding="5" cellspacing="0" width="60%" align="center" class="texto_detalle">
<tr>
<td align="right" width="19%">No de Orden: </td>
<td width="61%"><input type="text" size="50" maxlength="40" id="nombre" name="orden"></td>
</tr>
</table>
<center>
<table border=0 cellpadding=15>
<td><input type="submit" name="buscar" id="buscar" value="Buscar"></td>
<td><input type="reset" name="reset" value="Limpiar"></td>
</table>
</form>
</body>
</html>

2. ADEMAS TENGO "extraer.php" EL CUAL AQUI ES EL QUE DEBERIA MOSTRARME SOLO ESE NUMERO DE ORDEN DE PEDIDO SELECCIONADO:

<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$id=$_GET['nombre'];
$qry=mysql_query("select * from factura where id='$id'");
$query2=mysql_fetch_assoc($qry);
$_SESSION["carro"]=unserialize($query2['compra']);

echo "extraccion oka";

?>

<html>
<head>
<title>EXTRACCION DE DATOS DEL CARRITO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.tit {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 19px;
color: #FFFFFF;
}
.prod {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 19px;
color: #333333;
}
h1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 30px;
color: #990000;
}
-->
</style>
</head>

<body>
<a name="inicio"></a>
<h1 align="left">ORDEN DE PEDIDO</h1>
<HR NOSHADE>

<?php
if($carro){
?>

<table width="85%" border="1" align="center" cellpadding="2" cellspacing="0" class="prod">
<tr>
<th colspan=3>DATOS DE ENVIO
</tr>
<tr>
<td align="right">Apellidos y Nombres: </td>
<td><input type="text" size="50" maxlength="50" name="destinatario">
<tr>
<td>Direcci&oacute;n: <td><input type="text" size="50" maxlength="50" name="direccion">
<tr>
<td>Referencia: <td><input type="text" size="50" maxlength="50" name="referencia">
<tr>
<td>Tel&eacute;fono 1: <td><input type="text" size="25" maxlength="12" name="tel1"></td>
</tr>
</table>
<p>
<table width="85%" border="0" cellspacing="0" cellpadding="2" align="center">
<tr bgcolor="#3399CC" align="center"class="tit">
<td width="50%">Producto</td>
<td width="15%">Precio(S/.)</td>
<td width="10%">Cantidad (pares)</td>
<td width="15%">Subtotal(S/.)</td>
</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
$suma=0;
foreach($carro as $k => $v){
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;
?>
<tr bgcolor="<?php echo $color[$contador%2]; ?>" class='prod'>
<td><?php echo $v['producto'] ?></td>
<td align="right"><?php echo $v['precio'] ?></td>
<td align="center" width="1%"><?php echo $v['cantidad'] ?></td>
<td width="11%" align="right"><? echo "".number_format($subto, 2, '.', ','); ?></td>
</tr>

<?php }?>
</table>

<table width="720" border="0" cellspacing="0" cellpadding="6" align="center" class='prod'>
<p>
<tr>
<td align="right">Total (S/.): </td>
<td align="right"><font color="red"><?php echo number_format($suma,2); ?></font></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right">N&uacute;mero de Items:</td>
<td align="right"><?php echo count($carro); ?></td>
<td width="8%"></td>
<td></td>
</tr>
</table>
<p>
<div align="right"><a href="#inicio"><img src="arriba.gif" width="14" height="15" border="0"></a></div>

<HR NOSHADE>
<?php }else{ ?>
<img src="table_mensaje_carrito_2.jpg" border="0">
<p align="center"><span class="prod">No existe extraccion de datos</span><a href="catalogoItem.php?<?php echo SID;?>">&nbsp&nbsp<img src="continuar.gif" width="13" height="13" border="0" alt="Ir al cat&aacute;logo"></a>

<?php }?>
</p>

</body>
</html>

-----------------
AHORA EL PROBLEMA ES QUE NO ME VISUALIZA ESE NUMERO DE ORDEN, ME SEÑALA:
extraccion oka
...
no existe extraccion de datos

POR FAVOR LES PIDO SU AYUDA...ES MUY IMPORTANTE PARA MI PROYECTO...GRACIAS

Por Favor Les Pido Su Ayuda...es Muy Importante Para Mi Proyecto...

Gracias

Última edición por GatorV; 09/07/2008 a las 14:28
  #11 (permalink)  
Antiguo 09/07/2008, 08:34
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: grabar en una base de datos

Hola hoberwilly, si ya tienes el query de tu consulta en un array, basta con acceder a cada uno de sus elementos es a eso lo que te refieres?,:
Código PHP:
<?php 
session_start
();
include(
"conec.php");
conectarse();
$id $_GET['id'];
$qry mysql_query("select * from factura where id = '$id'") or die("Error en consulta:" .mysql_error() );
$row mysql_fetch_array($qry);
$_SESSION["carro"] = unserialize($row['compra']);
echo 
$row['id'];
echo 
$row['destinatario'];
echo 
$row['direccion']; 
echo 
$row['compra'];
echo 
"extraccion oka";
?>
Saludos.
  #12 (permalink)  
Antiguo 09/07/2008, 08:53
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta

Gracias Carlojas, de antemano por la ayuda que me puedas dar...

Si efectivamente debo acceder a cada uno de los elementos (como numero de orden de pedido, destinatario, direccion...hasta aqui oka), pero tambien asi pues tengo que acceder a visualizar los datos del carrito de compra que selecciono el cliente el cual genero un numero de pedido...es aqui donde no se como manejarlo como son:
1. nombre de productos seleccionados(producto)
2. precios por productos (precio)
3. cantidad seleccionados (cantidad)
4. subtotales de cada uno de ellos (subto)
5. suma total de la compra (suma)
...los cuales estan fueron serializados primero y para luego en extraer.php desserializados...

espero alla sido claro... a la espera de una pronta respuesta...gracias otra vez

Por Favor Les Pido Su Ayuda...

Lo he modificado de la siguiente manera;
...
$id=$_GET['nombre'];
$qry=mysql_query("select * from factura where id='$id'");
$query2=mysql_fetch_assoc($qry);
$_SESSION["carro"]=unserialize($query2['compra']);
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];
echo "extraccion oka";
...

pero sigue igual...

Por Favor Les Pido Su Ayuda...es Muy Importante Para Mi Proyecto...

Gracias

Por favor, alguien me puede sugerir que puedo hacer

...gracias de antemano

Por Favor Les Pido Su Ayuda...es Muy Importante Para Mi Proyecto...

Gracias

Por Favor Les Pido Su Ayuda...es Muy Importante Para Mi Proyecto...

Gracias

Por Favor Les Pido Su Ayuda...es Muy Importante Para Mi Proyecto...

Gracias

Por Favor Si Alguien Tuviera Una Sugerencia Como Implementarlo...gracias

Última edición por GatorV; 09/07/2008 a las 14:24
  #13 (permalink)  
Antiguo 09/07/2008, 14:26
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: grabar en una base de datos

Oye, ten un poco de paciencia. No escribas cada pocos minutos esperando respuesta inmediata.

Deberías ir con calma leyendo todas las sugerencias que ya te dieron, revisar todas las páginas del manual de php que correspondan, e intentar arreglar los errores usando el manual y el sentido común.

Si sigues escribiendo de esta forma te ganarás una infracción.


Saludos.
  #14 (permalink)  
Antiguo 10/07/2008, 07:49
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta Respuesta: grabar en una base de datos

Disculpen por las molestias que estoy causando, pero...

Hice unas modificaciones, pero nada...en esta vez me sale el siguiente mensaje:
Warning: Invalid argument supplied for foreach() in C:AppServ/www/ventas/extraer.php on line 52.... (es la linea del foreach)
<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$id=$_POST['orden'];
$qry=mysql_query("select * from factura where id='$id'") or die("Error en consulta:" .mysql_error() );
if($query=mysql_fetch_array($qry));
$_SESSION["carro"]=unserialize($query['compra']);
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];
echo "extraccion oka";
?>

<html>
<head>
<title>PRODUCTOS AGREGADOS AL CARRITO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h1 align="left">ORDEN DE PEDIDO</h1>
<HR NOSHADE>
<table>
<tr>
<td>Apellidos y Nombres:</td><td><?php echo $query['destinatario'] ?></td>
<tr>
<td>Direcci&oacute;n:</td><td><?php echo $query['direccion'] ?></td>
<tr>
<td>Referencia:</td><td><?php echo $query['referencia'] ?></td>
<tr>
<td>Tel&eacute;fono 1:</td><td><?php echo $query['tel1'] ?></td>
</tr>
</table>
<p>
<table>
<tr bgcolor="#3399CC" align="center"class="tit">
<td width="50%">Producto</td>
<td width="15%">Precio(S/.)</td>
<td width="10%">Cantidad (pares)</td>
<td width="15%">Subtotal(S/.)</td>
</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
$suma=0;
foreach($carro as $k => $v){
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;
?>
<tr bgcolor="<?php echo $color[$contador%2]; ?>" class='prod'>
<td><?php echo $v['producto'] ?></td>
<td align="right"><?php echo $v['precio'] ?></td>
<td align="center" width="1%"><?php echo $v['cantidad'] ?></td>
<td width="11%"><? echo "".number_format($subto, 2, '.', ','); ?></td>
</tr>
<?php }?>
</table>
<p>
<table width="720" border="1">
<tr>
<td align="right">Total (S/.): </td>
<td align="right"><font color="red"><?php echo number_format($suma,2); ?></font></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right">N&uacute;mero de Items:</td>
<td align="right"><?php echo count($carro); ?></td>
<td width="8%"></td>
<td></td>
</tr>
</table>
</p>
</body>
</html>


ojo...se visualizan los datos de la cabecera(como son nombre del destinatario, direccion, referencia, telefono, etc) pero lo que no trato de visualizar son los datos del carrito de compra que selecciono el cliente (nombre del producto, precio, subtotal, etc)

agradesco la ayuda brindada, y esperando una respuesta positiva...gracias
  #15 (permalink)  
Antiguo 10/07/2008, 08:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: grabar en una base de datos

El error te dice que no le estás pasando una matriz a foreach().


Código PHP:
include("conec.php");
conectarse();
$id=$_POST['orden'];

$qry=mysql_query("select * from factura where id='$id'") or die("Error en consulta:" .mysql_error() ); 

// OJO: tu IF original no sirve para nada debido al punto y
// coma que le pusiste al final.
// Si querés que solamente se inicialize $_SESSION['carro']
// si la consulta es exitosa, borrá el punto y coma del final 
// de la línea
// De todas formas, siguiendo la lógica de la aplicación podés
// juntar los 2 if en uno solo.
// Te pongo código equivalente y que funciona :-D
if($query=mysql_fetch_array($qry)) {
    
$_SESSION["carro"]=unserialize($query['compra']); 
    
    
// haz var_dump($_SESSION['carro']); en este punto para
    // ver qué es lo que realmente contiene
    
$carro=$_SESSION['carro'];

    echo 
"extraccion oka";
} else {
    echo 
"fallado";

Te recomiendo leer el manual y leer bien el código, hacerte un pequeño diagrama de lo que querés hacer explicado con tus propias palabras, y luego empezar a programar. De otra forma, terminás con código como éste muy difícil de leer y con inconsistencias lógicas.


Saludos.

Última edición por AlvaroG; 10/07/2008 a las 08:34
  #16 (permalink)  
Antiguo 10/07/2008, 13:55
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Saludos alvlin, agradesco tus observaciones...

realize las modificaciones indicadas,

include("conec.php");
conectarse();
$id=$_POST['orden'];
$qry=mysql_query("select destinatario,direccion,compra_serializada from factura where id='$id'") or die("Error en consulta:" .mysql_error() );
if($query=mysql_fetch_array($qry))
{
$_SESSION['carro']=unserialize($query['compra_serializada']);
var_dump($_SESSION['carro']);
$carro=$_SESSION['carro'];
echo "extraccion oka";
}
else{
echo "fallado";
}
?>

...y nada amigo no me visualiza los campos de $carro el cual ya fue desserializado (descripcion del producto,precio)

...ademas se incluyo lo sgte: var_dump($_SESSION['carro']);
el cual da el sgte msje: NULL

y otra vez gracias por la ayuda que me puedas brindar
  #17 (permalink)  
Antiguo 10/07/2008, 13:59
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: grabar en una base de datos

Si var_dump() te devuelve NULL, quiere decir que el desserializado del campo no funciona, o que el campo está vacío.

Revisá que la consulta se esté haciendo bien, y revisá que $query['compra'] tenga lo que debería tener.


Saludos.
  #18 (permalink)  
Antiguo 10/07/2008, 14:10
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Oka...
visualize en phpadmin de mi tabla factura, en el campo compra_serializada se visualiza: N;, ah ademas este lo declare con varchar(40)

pd: y el archivo donde se serializo es el siguiente (facturar.php):

<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$carro=serialize($_session['carro']);

$destinatario = $_POST["destinatario"];
$direccion = $_POST["direccion"];

$query="insert into factura(destinatario,direccion,compra_serializada) values('$destinatario','$direccion','$carro')";
$qry=mysql_query($query) or die("[ERROR] consulta: $query, error:".mysql_error());
echo "facturacion oka";
?>
...el cual da el msje: "facturacion oka"

gracias por tu apoyo
  #19 (permalink)  
Antiguo 10/07/2008, 14:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Debes de serializar $_SESSION['carro'] no $_session['carro'], ya que PHP es sensible a las mayúsculas y minúsculas.

Saludos.
  #20 (permalink)  
Antiguo 10/07/2008, 14:51
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Ok GatorV,
efectivamente cuando se modificó en "FACTURAR.PHP", en el campo compra_serializada se observa asi:

a:1:{s:32:"c4ca4238a0b923820dcc509a6f75849b";a:5:{

de tal manera que en "EXTRAER.PHP" cambio el mensaje de var_dump($_SESSION['carro']); el cual se observa:

bool(false)
extraccion oka...

agradesco de antemano sus colaboraciones
  #21 (permalink)  
Antiguo 10/07/2008, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Ahora por lo que puedo ver es que tienes problemas al deserializar, y es por que el contenido de tu campo es muy pequeño, cambialo de un varchar(40) a un text para que almacenes todo el contenido.

Saludos.
  #22 (permalink)  
Antiguo 10/07/2008, 15:18
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Excelente amigos, no saben cuanto de alegria me da haber solucionado...

claro eso gracias a todos ustedes, agradesco de manera especial a GatorV, alvlin y Carlojas que de no brindarme su apoyo desinteresado estaria en apuros...

Hober Willy Siccha Vega

ah...
les dejo el codigo para que si a alguien le sirviera...porque se que 'CONOCIMIENTO NO ES CONOCIMIENTO SI NO SE COMPARTE'

FACTURAR.PHP
------------------
<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$carro=serialize($_SESSION['carro']);

$destinatario = $_POST["destinatario"];
$direccion = $_POST["direccion"];
$fecha = date("Y-m-d H:i:s");

$query="insert into factura(fecha,destinatario,direccion,compra_serial izada) values('$fecha','$destinatario','$direccion','$car ro')";
$qry=mysql_query($query) or die("[ERROR] consulta: $query, error:".mysql_error());
echo "facturacion oka";
?>

FORMULARIO.PHP
------------------------
<html>
<head>
<title>Imagen a Blob</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="extraer.php">
<table>
<tr>
<td>No de Orden: </td>
<td><input type="text" id="nombre" name="orden"></td>
</tr>
</table>
<center>
<table>
<td><input type="submit" name="buscar" id="buscar" value="Buscar"></td>
</table>
</form>
</body>
</html>

EXTRAER.PHP
-----------------
<?php
session_start();
?>
<?
include("conec.php");
conectarse();
$id=$_POST['orden'];
$qry=mysql_query("select id,destinatario,direccion,compra_serializada from factura where id='$id'") or die("Error en consulta:" .mysql_error() );
if($query=mysql_fetch_array($qry))
{
$_SESSION['carritodesserializado']=unserialize($query['compra_serializada']);
$carro=$_SESSION['carritodesserializado'];
echo "extraccion oka";
}
else{
echo "fallado";
}
?>

<html>
<head>
</head>

<body>
<table>
<tr>
<td>Apellidos y Nombres:</td><td><?php echo $query['destinatario'] ?></td>
<tr>
<td>Direcci&oacute;n:</td><td><?php echo $query['direccion'] ?></td>
</table>
<p>
<table>
<tr bgcolor="#3399CC" align="center"class="tit">
<td width="50%">Producto</td>
<td width="15%">Precio(S/.)</td>
<td width="10%">Cantidad (pares)</td>
<td width="15%">Subtotal(S/.)</td>
</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
$suma=0;
foreach($carro as $k => $v){
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;
?>
<tr bgcolor="<?php echo $color[$contador%2]; ?>"'>
<td><?php echo $v['producto'] ?></td>
<td align="right"><?php echo $v['precio'] ?></td>
<td align="center" width="1%"><?php echo $v['cantidad'] ?></td>
<td width="11%" align="right"><? echo "".number_format($subto, 2, '.', ','); ?></td>
</tr>
<?php }?>
</table>
<p>
<table>
<tr>
<td align="right">Total (S/.): </td>
<td align="right"><?php echo number_format($suma,2); ?></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right">N&uacute;mero de Items:</td>
<td align="right"><?php echo count($carro); ?></td>
<td width="8%"></td>
<td></td>
</tr>
</table>
</body>
</html>

me despido y hasta otra oportunidad
  #23 (permalink)  
Antiguo 14/07/2008, 08:43
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta Respuesta: grabar en una base de datos

Saludos,
Actualmente estoy implementando que el usuario (primeramente debe loguearse) visualize sus transacciones (ORDEN DE PEDIDO) que ha realizado en el tiempo.

1. Primero el usuario debe loguearse : (LOGINORDEN.PHP)

session_start();
$username = $_POST['username'];
$password = $_POST['password'];
...
if($data['password'] != $password){
header("location: error.php?nro=3");
}else
{
$_SESSION["s_username"] = $data['username'];
header("location: misOrdenes.php");
return;
}...

2. En este caso el usuario una vez logueado, este puede visualizar todo su historial de compras desserializada que ha realizado en el tiempo (pero solo la que corresponde a ESE usuario)...
(MISORDENES.PHP):
<?php
session_start();
include("conec.php");
conectarse();
$id=$_POST['s_username'];
$qry=mysql_query("select idFactura,compra_serializada from factura where idUsername='$id'") or die("Error en consulta:" .mysql_error() );
if($query=mysql_fetch_array($qry))
{
$_SESSION['carritodesserializado']=unserialize($query['compra_serializada']);
$carro=$_SESSION['carritodesserializado'];
}
?>
<html>
<head>
<title>MIS ORDENES</title>
</head>

<body>
ORDEN DE PEDIDO Nº <?php echo $query['idFactura'] ?><p>
<table >
<tr >
<td>Producto</td><td>Precio(S/.)</td>
</tr>
<?php
foreach($carro as $k => $v){
?>
<tr>
<td><?php echo $v['producto'] ?></td>
<td><?php echo $v['precio'] ?></td>
</tr>
<?php }?>
</table>
</body>
</html>

Es aqui donde esta mi problema, pero no me sale lo que yo quiero...por favor necesito de su ayuda...espero haber sido claro.

gracias de antemano por su colaboracion y esperando una respuesta positiva...
  #24 (permalink)  
Antiguo 14/07/2008, 11:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: grabar en una base de datos

Usa $_SESSION['s_username'] en lugar de $_POST['s_username'];

Saludos.
  #25 (permalink)  
Antiguo 15/07/2008, 07:41
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: grabar en una base de datos

Muchas gracias, implementacion oka
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 20:47.