Foros del Web » Programando para Internet » PHP »

Ayuda con Carro de Compras

Estas en el tema de Ayuda con Carro de Compras en el foro de PHP en Foros del Web. hola a todos, estoy haciendo un carro de compras pero las sessiones no se guardan bien, por ejemplo, si se fijan en la case confproducto, ...
  #1 (permalink)  
Antiguo 03/01/2011, 00:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 148
Antigüedad: 15 años, 6 meses
Puntos: 7
Ayuda con Carro de Compras

hola a todos, estoy haciendo un carro de compras
pero las sessiones no se guardan bien, por ejemplo, si se fijan en la case confproducto, cuando el if(empty($pn)) da falso el form no aparece, y creo que es porque las sesiones no estan grabadas.
Código PHP:
<?php
include 'config.php';
session_start();

$a trim(htmlentities($_GET['a']));
$gid trim(htmlentities($_GET['gid']));
    if(empty(
$gid))
    {
        
$gid 1;
    }
?>
<html>
<head>
<!--deje solo las etiquetas html necesarias porque no entraba el msj-->
<title><?php echo $titulo?> - Carro de Pedidos</title>
  <script type="text/javascript">
  <!--
  function tipodominio1()
  {
   document.getElementById('div2').style.display = 'none';
   document.getElementById('div1').style.display = 'inherit';
  }
  function tipodominio2()
  {
   document.getElementById('div2').style.display = 'inherit';
   document.getElementById('div1').style.display = 'none';
  }
  -->
  </script>
</head>
<body>
<?php
switch($a)
{
    default:
    
?>
<ul>
    <?php
    $qry 
mysql_query("SELECT * FROM grupos ORDER BY id");
    while(
$grupo mysql_fetch_array($qry))
    {
    
?>
    <li><a href="carrito.php?gid=<?php echo $grupo['id']; ?>"><?php echo $grupo['nombre']; ?></a></li>
    <?php
    
}
    
?>
</ul>
<table width="800" border="0">
  <?php
  $qry 
mysql_query("SELECT * FROM productos WHERE gid='$gid' ORDER BY orden");
  while(
$producto mysql_fetch_array($qry))
  {
  
?>
  <tr>
    <td><?php echo $producto['nombre']; ?><br />
        <?php echo $producto['comentarios']; ?></td>
    <td>
    <?php
    
if($producto['preciomensual'] != "0.00")
    {
        
$preciomensual $producto['preciomensual'];
        echo 
"$preciomensual $moneda mensual<br>";
    }
    if(
$producto['preciotrimestral'] != "0.00")
    {
        
$preciotrimestral $producto['preciotrimestral'];
        echo 
"$preciotrimestral $moneda trimestral<br>";
    }
    if(
$producto['preciosemestral'] != "0.00")
    {
        
$preciosemestral $producto['preciosemestral'];
        echo 
"$preciosemestral $moneda semestral<br>";
    }
    if(
$producto['precioanual'] != "0.00")
    {
        
$precioanual $producto['precioanual'];
        echo 
"$precioanual $moneda anual<br>";
    }
    
?>
    </td>
    <td><a href="carrito.php?a=agregar&pid=<?php echo $producto['id'];?>">Pedir Ahora</a></td>
  </tr>
  <?php
  
}
  
?>
</table>
<?php
    
break;
    case 
"agregar":
    
    
$pid trim(htmlentities($_GET['pid']));
    
?>
    <form action="carrito.php?a=confproducto" method="post">
<p>El Producto/Servicio que has elegido requiere de un nombre de dominio. Elija la opción que desee de las siguientes e introduzca un nombre de dominio.</p>
<p><input type="radio" name="opcion" value="tipodominio1" onClick="(this.checked) ? tipodominio1() : tipodominio2();" >
Registrar dominio</p>
<p><input type="radio" name="opcion" value="tipodominio2" onClick="(this.checked) ? tipodominio2() : tipodominio1();" >Usar dominio existente</p>
<div id="div1" style="display:none">
<p>www.<input type="text" name="nomdominio" size="30" >
<select name="extdominio">
<?php
$qry 
mysql_query("SELECT * FROM dominios ORDER BY id");
while(
$extensiondominio mysql_fetch_array($qry))
{
?>
<option value="<?php echo $extensiondominio['extension']; ?>"><?php echo $extensiondominio['extension']; ?></option>
<?php
}
?>
</select></p><p>Tenga en cuenta que los dominios .com.ar solo admiten hasta 19 carácteres.</p></div>
<div id="div2" style="display:none">
<p>www.<input type="text" name="nomdominioex" size="30">.<input type="text" name="extdominioex" size="8" ></p>
</div>
<input type="hidden" name="pid" value="<?php echo $pid?>" />
<input type="submit" name="Enviar" value="Hacer Clic para Continuar > >" />
</form>
<?php
    
break;
    case 
"confproducto":
    
        if(
$_SESSION['productocomprado'] != true)
    {
        
$_SESSION['productoscomprados'] = 0;
    }
    
$pid trim(htmlentities($_POST['pid']));
    
$pn trim(htmlentities($_GET['pn']));
if(empty(
$pn))
{
?>
<h2>Configuraci&oacute;n de Productos</h2>
<p>El Producto/Servicio que ha elegido tiene las opciones de configuracion siguientes. Modifique las que le interesen.</p>
<h3>Producto/Servicio</h3>
<?php
$qry 
mysql_query("SELECT * FROM productos WHERE id='$pid'");
if(
$producto mysql_fetch_array($qry))
{
    
$gid $producto['gid'];
    
$qry mysql_query("SELECT * FROM grupos WHERE id='$gid'");
    if(
$grupo mysql_fetch_array($qry))
    {
?>
<p><?php echo $grupo['nombre']; ?> - <?php echo $producto['nombre']; ?><br />
<?php echo $producto['comentarios']; ?></p>
<h3>Ciclo de Facturaci&oacute;n</h3>
<form action="carrito.php?a=actualizar" method="post">
<select name="ciclodefacturacion">
    <?php
    
if($producto['preciomensual'] != "0.00")
    {
        
$preciomensual $producto['preciomensual'];
        echo 
"<option value=\"mensual\">$preciomensual $moneda mensual</option>";
    }
    if(
$producto['preciotrimestral'] != 0.00)
    {
        
$preciotrimestral $producto['preciotrimestral'];
        echo 
"<option value=\"trimestral\">$preciotrimestral $moneda trimestral</option>";
    }
    if(
$producto['preciosemestral'] != 0.00)
    {
        
$preciosemestral $producto['preciosemestral'];
        echo 
"<option value=\"semestral\">$preciosemestral $moneda semestral</option>";
    }
    if(
$producto['precioanual'] != 0.00)
    {
        
$precioanual $producto['precioanual'];
        echo 
"<option value=\"anual\">$precioanual $moneda anual</option>";
    }
    
?>
</select>
<input type="hidden" name="accion" value="1" />
<input type="hidden" name="pid" value="<?php echo $pid?>" />
<input type="hidden" name="gid" value="<?php echo $gid?>" />
<input type="hidden" name="pn" value="<?php echo $_SESSION['productoscomprados']; ?>" />
<input type="submit" value="Actualizar Carro" />
</form>
<?php
    
}
}

}
else
{
    
    
$pn trim(htmlentities($_GET['pn']));
    
$pid $_SESSION[$pn]['pid'];
    
$gid $_SESSION[$pn]['gid'];
?>
<h2>Configuraci&oacute;n de Productos</h2>
<p>El Producto/Servicio que ha elegido tiene las opciones de configuracion siguientes. Modifique las que le interesen.</p>
<h3>Producto/Servicio</h3>
<?php
$qry 
mysql_query("SELECT * FROM productos WHERE id='$pid'");
if(
$producto mysql_fetch_array($qry))
{
    
$qry mysql_query("SELECT * FROM grupos WHERE id='$gid'");
    if(
$grupo mysql_fetch_array($qry))
    {
?>
<p><?php echo $grupo['nombre']; ?> - <?php echo $producto['nombre']; ?><br />
<?php echo $producto['comentarios']; ?></p>
<h3>Ciclo de Facturaci&oacute;n</h3>
<form action="carrito.php?a=actualizar" method="post">
<select name="ciclodefacturacion">
    <?php
    
if($producto['preciomensual'] != "0.00")
    {
        
$preciomensual $producto['preciomensual'];
        echo 
"<option value=\"mensual\">$preciomensual $moneda mensual</option>";
    }
    if(
$producto['preciotrimestral'] != 0.00)
    {
        
$preciotrimestral $producto['preciotrimestral'];
        echo 
"<option value=\"trimestral\">$preciotrimestral $moneda trimestral</option>";
    }
    if(
$producto['preciosemestral'] != 0.00)
    {
        
$preciosemestral $producto['preciosemestral'];
        echo 
"<option value=\"semestral\">$preciosemestral $moneda semestral</option>";
    }
    if(
$producto['precioanual'] != 0.00)
    {
        
$precioanual $producto['precioanual'];
        echo 
"<option value=\"anual\">$precioanual $moneda anual</option>";
    }
    
?>
</select>
<input type="hidden" name="accion" value="2" />
<input type="hidden" name="pn" value="<?php echo $pn?>" />
<input type="submit" value="Actualizar Carro" />
</form>
<?php
    
}
}
}
    break;
    case 
"actualizar":
    
    
$accion $_POST['accion'];
    if(
$accion == 1)
    {
        
$_SESSION['productocomprado'] = true;
        
$pn $_POST['pn'];
        
$ciclodefacturacion $_POST['ciclodefacturacion'];
        
$pid $_POST['pid'];
        
$gid $_POST['gid'];
        
        
$qry mysql_query("SELECT * FROM productos WHERE id='$pid'");
        if(
$producto mysql_fetch_array($qry))
        {
            if(
$ciclodefacturacion == "mensual")
            {
                
$precio $producto['preciomensual'];
            }
            if(
$ciclodefacturacion == "trimestral")
            {
                
$precio $producto['preciotrimestral'];
            }
            if(
$ciclodefacturacion == "semestral")
            {
                
$precio $producto['preciosemestral'];
            }
            if(
$ciclodefacturacion == "anual")
            {
                
$precio $producto['precioanual'];
            }
        }
        
        
$_SESSION[$pn] = array
        (
        
"pn"=>$pn,
        
"ciclodefacturacion"=>$ciclodefacturacion,
        
"pid"=>$pid,
        
"gid"=>$gid,
        
"precio"=>$precio,
        );
        
        
$productoscomprados $_SESSION['productoscomprados']+1;
        
$_SESSION['productoscomprados'] = $productoscomprados;
        
    }
    else
    {
        if(
$accion == 2)
        {
        
$ciclodefacturacion $_POST['ciclodefacturacion'];
        if(
$producto mysql_fetch_array($qry))
        {
            if(
$ciclodefacturacion == "mensual")
            {
                
$precio $producto['preciomensual'];
            }
            if(
$ciclodefacturacion == "trimestral")
            {
                
$precio $producto['preciotrimestral'];
            }
            if(
$ciclodefacturacion == "semestral")
            {
                
$precio $producto['preciosemestral'];
            }
            if(
$ciclodefacturacion == "anual")
            {
                
$precio $producto['precioanual'];
            }
        }
        
        
$_SESSION[$pn] = array
        (
        
"ciclodefacturacion"=>"$ciclodefacturacion",
        
"precio"=>"$precio",
        );
        
        echo 
$_SESSION[$pn]['pn'];
        echo 
"<br>";
        echo 
$_SESSION[$pn]['ciclodefacturacion'];
        echo 
"<br>";
        echo 
$_SESSION[$pn]['pid'];
        echo 
"<br>";
        echo 
$_SESSION[$pn]['precio'];
        }
        else
        {
            echo 
"<script type=\"text/javascript\">";
                echo 
"location.href=\"carrito.php\";";
            echo 
"</script>";
        }

    }

    break;
    case 
"ver":
    
?>
<table width="800" border="0">
  <tr>
    <td>Descripci&oacute;n</td>
    <td>Precio</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Subtotal:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Importe a la fecha:</td>
    <td>&nbsp;</td>
  </tr>
</table>
<?php
    
break;
}
?>
</body>
</html>
__________________
Noticias sobre Informatica
  #2 (permalink)  
Antiguo 03/01/2011, 09:19
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Ayuda con Carro de Compras

prueba colocando el inicio del archivo asi...
Código PHP:
<?php
ob_start
();
session_start(); 
include 
'config.php';
.
.
.
y el final asi:

Código PHP:
</html>
<?php end_flush(); ?>
  #3 (permalink)  
Antiguo 03/01/2011, 09:25
 
Fecha de Ingreso: enero-2003
Mensajes: 38
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Ayuda con Carro de Compras

la función de session_start(); debe ir antes de todo o te mostrará errores, por lo cual no podrás guardar los datos de sesión.

Código PHP:
<?php 
session_start
(); 
include 
'config.php';
?>
  #4 (permalink)  
Antiguo 03/01/2011, 11:31
 
Fecha de Ingreso: octubre-2008
Mensajes: 148
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: Ayuda con Carro de Compras

probe como me decian, pero sigue sin funcionar
hice var_dump a las sesiones que paso en el else del if(empty($pn)) y me da NULL
ademas, todo lo que escribo despues de
Código PHP:
Ver original
  1. <?php
  2. $qry = mysql_query("SELECT * FROM productos WHERE id='$pid'");
  3. if($producto = mysql_fetch_array($qry))
  4. {
  5.     $qry = mysql_query("SELECT * FROM grupos WHERE id='$gid'");
  6.     if($grupo = mysql_fetch_array($qry))
  7.     {
  8. ?>
(tambien en el else del if(empty($pn))
no aparece
__________________
Noticias sobre Informatica

Etiquetas: compras, carrito
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 05:28.