Ver Mensaje Individual
  #11 (permalink)  
Antiguo 17/03/2013, 13:50
Lex_720
 
Fecha de Ingreso: febrero-2013
Mensajes: 7
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Bloquear boton en carrito, condicional del stock.

Lo siento pero soy nuevo en esto de php y bueno es la primera pagina que hago. Si puedo usar el count para ver si hay productos y elimino ese if(isset($error)) que me dijiste estaba demas y queda mejor.

Mi carrito es un array y una variable de sesion (creo que se escribe asi), pero el problema creo que es que los 2 codigos estan muy separados o no se. Mira el codigo completo a ver si me puedes ayudar a encontrar el error porque sigo sin entender :(

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Aqui recupero las variables del formulario
  4. if (isset($_POST['id_txt']))
  5. {
  6. $id=$_POST['id_txt'];
  7. $nombre=$_POST['nombre'];
  8. $precio=$_POST['precio'];
  9. $cantidad=$_POST['cantidad'];
  10.        
  11. $mi_carrito[]=array('id'=>$id,'nombre'=>$nombre,'precio'=>$precio,'cantidad'=>$cantidad);
  12. }
  13.  
  14. //Aqui defino $mi_carrito como una variable de sesion
  15. if (isset($_SESSION['carrito']))
  16. {
  17. $mi_carrito=$_SESSION['carrito'];
  18.        
  19.     if (isset($_POST['id_txt']))
  20.     {
  21.     $id=$_POST['id_txt'];
  22.     $nombre=$_POST['nombre'];
  23.     $precio=$_POST['precio'];
  24.     $cantidad=$_POST['cantidad'];
  25.     $pos=-1;
  26.    
  27. //Aqui recorro el carrito y veo si tiene cantidad predeterminada 1 u otra distinta 
  28.     for($i=0;$i<count($mi_carrito);$i++)
  29.     {
  30.            if($id==$mi_carrito[$i]['id'])
  31.            {
  32.            $pos=$i;
  33.            }
  34.     }
  35.         if($pos<>-1)
  36.             {
  37.         $cuanto=$mi_carrito[$pos]['cantidad']+$cantidad;
  38.  
  39. $mi_carrito[$pos]=array('id'=>$id,'nombre'=>$nombre,'precio'=>$precio,'cantidad'=>$cuanto);
  40.          }
  41.          else
  42.          {
  43.             $mi_carrito[]=array('id'=>$id,'nombre'=>$nombre,'precio'=>$precio,'cantidad'=>$cantidad);
  44.          }
  45.     }
  46. }
  47.  
  48. //Codigo para modificar la cantidad del producto
  49. if (isset($_POST['id2']))
  50. {
  51. $indice=$_POST['id2'];
  52. $cuanto=$_POST['cantidad2'];
  53.  
  54.        if($cuanto<1)
  55.        {
  56.        $mi_carrito[$indice]=NULL;
  57.        }
  58.        else
  59.        {
  60.        $mi_carrito[$indice]['cantidad']=$cuanto;
  61.        }
  62. }
  63.  
  64. //Codigo para eliminar un producto 
  65. if (isset($_POST['id3']))
  66.     {
  67.         $indice=$_POST['id3'];
  68.         $mi_carrito[$indice]=NULL;
  69.     }
  70.  
  71. if (isset($mi_carrito)) $_SESSION['carrito']=$mi_carrito;
  72.  
  73. ?>
  74.  
  75. //Tabla para mostrar los productos que se van agregando
  76. <table width="820" border="0" align="right">
  77. <tr>
  78. <td colspan="5" align="center"><h3>LISTADO DE SUS COMPRAS</h3></td>
  79. </tr>
  80.  
  81. <tr><td height="10"></td></tr>
  82.  
  83. <tr>
  84. <td width="350" align="center" bgcolor="#A3CEFA">Producto</td>
  85. <td width="100" align="center" bgcolor="#A3CEFA">Precio</td>
  86. <td width="140" align="center" bgcolor="#A3CEFA">Cantidad</td>
  87. <td colspan="2" width="50" align="center" bgcolor="#A3CEFA">Subtotal</td>
  88. <td width="180">&nbsp;</td>
  89. </tr>
  90.  
  91. <?php                
  92. //Aqui pregunto si esta definido mi carrito, si no es nulo y hago un for para recorrerlo y mostrarlo en la tabla
  93.         if(isset($mi_carrito))
  94.         {  
  95.             $total=0;
  96.             for($i=0;$i<count($mi_carrito);$i++)
  97.             {
  98.                 if($mi_carrito[$i]<>NULL)
  99.                 {
  100.  ?>
  101.  
  102. <tr>
  103. <td bgcolor="#F7F7F7"><?php echo $mi_carrito[$i]['nombre']; ?></td>
  104. <td align="center" bgcolor="#F7F7F7"><?php echo $mi_carrito[$i]['precio']; ?></td>
  105.    
  106. <td align="center" bgcolor="#F7F7F7">
  107. <table with="140"><tr><td>
  108. <form action="" method="post" name="actualizo">
  109. <input name="id2" type="hidden" value="<?php echo $i ?>" />
  110. <input name="cantidad2" type="text" value="<?php echo $mi_carrito[$i]['cantidad']; ?>" size="3" maxlength="3" />
  111. <input type="image" src="iconos/actualizar.png" align="bottom" width="20" height="17"/>
  112. </form>
  113. </td></tr></table>
  114. </td>
  115.        
  116.  
  117. <?php
  118.         //Aqui calculo el subtotal y el total para mostrarlos
  119.     $subtotal=$mi_carrito[$i]['precio']*$mi_carrito[$i]['cantidad'];
  120.     $total=$total+$subtotal;
  121. ?>
  122.  
  123. <td width="20" align="center" bgcolor="#F7F7F7"><?php echo $subtotal ?></td>
  124.    
  125. <td width="50" align="center" bgcolor="#F7F7F7"><form action="" method="post">
  126. <input name="id3" type="hidden" value="<?php echo $i ?>" />
  127. <input name="" type="image" src="iconos/borrar.png" width="19" height="19"/>    
  128. </form></td>
  129. <td>
  130.    
  131. <?php
  132.    
  133.         //Este es el codigo del stock
  134.     if(isset($mi_carrito))
  135.     {
  136.     $id=$mi_carrito[$i]['id'];
  137.     $can=$mi_carrito[$i]['cantidad'];
  138.     $error='<h8>¡Cantidad en stock superada!</h8>';
  139.    
  140.         $consulta=mysql_query("select * from productos WHERE id='$id'");
  141.         $excedido = false;
  142.         while($filas=mysql_fetch_array($consulta))
  143.         {
  144.         $stock=$filas['cuanto_hay'];
  145.        
  146.             if($stock<$can)
  147.             {
  148.             $excedido = true;
  149.             echo $error;
  150.                     }
  151.         }
  152.     }
  153. ?>
  154.  
  155. </td>
  156. </tr>
  157.  
  158. <?php
  159.             }
  160.         }
  161.     }
  162. ?>
  163.  
  164. //Esto es lo ultimo de la tabla con los espacios en blanco y donde muestro el total si existe
  165. <tr>
  166. <td bgcolor="#F7F7F7">&nbsp;</td>
  167. <td bgcolor="#F7F7F7">&nbsp;</td>
  168. <td align="center" bgcolor="#F7F7F7">&nbsp;</td>
  169. <td colspan="2" align="center" bgcolor="#F7F7F7">&nbsp;</td>
  170. </tr>
  171. <tr>
  172. <td bgcolor="#F7F7F7">&nbsp;</td>
  173. <td bgcolor="#F7F7F7">&nbsp;</td>
  174. <td align="center" bgcolor="#F7F7F7"><strong>Total:</strong></td>
  175. <td colspan="2" align="center" bgcolor="#F7F7F7"><strong><?php if (isset($total)) echo $total ?> Bsf</strong></td>
  176. </tr>
  177. <tr>
  178. <td bgcolor="#F7F7F7">&nbsp;</td>
  179. <td bgcolor="#F7F7F7">&nbsp;</td>
  180. <td align="center" bgcolor="#F7F7F7">&nbsp;</td>
  181. <td colspan="2" align="center" bgcolor="#F7F7F7">&nbsp;</td>
  182. </tr>
  183. <tr>
  184. <td bgcolor="#F7F7F7">&nbsp;</td>
  185. <td bgcolor="#F7F7F7">&nbsp;</td>
  186.    
  187. <td align="center" bgcolor="#F7F7F7">  
  188.  
  189.        
  190. <?php
  191. //Este es el codigo al final para bloquear el boton
  192.     if (isset($error)) //Aqui puedo contar mi carrito como me dijiste en ves de poner este if
  193.     {
  194.         if($excedido)
  195.         {
  196.         echo 'Modifique la cantidad para continuar.';
  197.         }
  198.         else
  199.         {
  200. ?>
  201.    
  202. <form id="form1" name="form1" method="post" action="confirmarpedido.php"><input type="submit" class="button" name="confirmarpedido" id="confirmarpedido" value="Confirmar Pedido" />
  203. </form>
  204.    
  205. <?php
  206.         }
  207.     }
  208.     else
  209.     {
  210.     echo 'No hay productos en su carrito.';
  211.     }
  212. ?>
  213.  
  214. </td>
  215. <td colspan="2" align="center" bgcolor="#F7F7F7">&nbsp;</td>
  216. </tr>
  217. <tr><td colspan="5">&nbsp;</td></tr><tr>
  218. <tr><td><a href="productos.php">Volver</a></td></tr>
  219. </table>

Gracias por tus respuesta y espero puedas ayudarme.

Última edición por Lex_720; 17/03/2013 a las 13:57