Foros del Web » Programando para Internet » PHP »

Que codigo poner?

Estas en el tema de Que codigo poner? en el foro de PHP en Foros del Web. Hola, tengo un carrito de compras en php el cual para agregar el producto se le indica de esta manera: < form action="agregar_producto.php?id=1&nombre=Nombre+De l+Producto&cantidad=1&precio=125$" method="post" ...
  #1 (permalink)  
Antiguo 07/05/2008, 11:06
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Que codigo poner?

Hola, tengo un carrito de compras en php el cual para agregar el producto se le indica de esta manera:

<form action="agregar_producto.php?id=1&nombre=Nombre+De l+Producto&cantidad=1&precio=125$" method="post" name="form1">
<table width="164" border="0" align="left">
<tr>
<td width="61">Cantidad:</td>
<td width="29"><input name="cantidad" type="text" id="cantidad" value="1" size="4" maxlength="3"></td>
<td width="96"><input name="submit" type="submit" id="submit" value="Agregar"></td>
</tr>
</table>
</form>

Bueno como podrán ver en la propiedad "form action" en una parte dice "cantidad=1"... esto quiere decir que al apretar el boton "Agregar" del formulario se agrega el producto en cantidad "1" (siempre)...
Lo que yo quiero es algún codigo php para relacionar el texbox "Cantidad" del formulario con eso, entonces se agregaría siempre la cantidad indicada en el texbox y no siempre "1".

Yo intente poniendo:
<form action="../agregar_producto.php?id=1&nombre=Nombre+Del+Produc to&cantidad=<? echo "cantidad" ?>&precio=125$" method="post" name="form1">
</form>
Pero como siempre no funcionó :D. ja...
Muchas gracias.
__________________
Salu2
  #2 (permalink)  
Antiguo 07/05/2008, 11:10
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 18 años
Puntos: 18
Re: Que codigo poner?

No creo que con PHP puedas hacer eso. PHP trabaja en el servidor, y lo que tú necesitas es algo que se actualice en el lado del cliente.

Yo probaría con Javascript. Supongo que con Javascript no será muy difícil cambiar el Cantidad=1 por Cantidad=X, pero no sé nada de Javascript .
  #3 (permalink)  
Antiguo 07/05/2008, 11:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Que codigo poner?

Hola:

Con php no puedes hacer modificaciones cuando la página está en el navegador, para eso necesitas javascript... de todos modos, veo que envías tanto información por url y por post, no creo que sea aconsejable, pero si el número lo pones en un control del formulario, podrías recibirlo sencillamente con las variables propias del formulario ($:POST)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 07/05/2008, 11:32
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Que codigo poner?

Hola a los dos, gracias por responder...

Me cuesta creer que no se pueda hacer con PHP jaja... porque yo antes tenia otro carrito de compras que hacia lo mismo que estoy intentando hacer yo, pasa que ahora cuando lo quiero implementar no funciona por eso recurrí acá...

El código del carrito que usaba anteriormente es esta en este post que una vez hice, se los dejo para que se fijen a lo que me refiero.
Ver código de carrito anterior para referencia (se encuentra en el post Nº 9)
__________________
Salu2

Última edición por sette15; 07/05/2008 a las 11:38
  #5 (permalink)  
Antiguo 07/05/2008, 11:37
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 18 años
Puntos: 18
Re: Que codigo poner?

No es necesario que uses Javascript, como ya ha dicho Caricatos, puedes leer el valor del campo cantidad usando $_POST['cantidad'], en lugar de $_GET['cantidad'].

Dejando de lado el tema de la cantidad, creo que es muy inseguro enviar el precio del producto a través del formulario. El precio debería estar almacenado en una base de datos o en un archivo externo, porque el código HTML puede ser editado usando WebDeveloper Toolbar sin mucha dificultad, y podría ocasionar muchos problemas de seguridad.
  #6 (permalink)  
Antiguo 07/05/2008, 11:47
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Que codigo poner?

Cita:
Iniciado por sumolari Ver Mensaje
No es necesario que uses Javascript, como ya ha dicho Caricatos, puedes leer el valor del campo cantidad usando $_POST['cantidad'], en lugar de $_GET['cantidad'].

Dejando de lado el tema de la cantidad, creo que es muy inseguro enviar el precio del producto a través del formulario. El precio debería estar almacenado en una base de datos o en un archivo externo, porque el código HTML puede ser editado usando WebDeveloper Toolbar sin mucha dificultad, y podría ocasionar muchos problemas de seguridad.
Si tenes razón pero una vez finalizada la elección del/los productos cuando completan el formulario este se envía a mi email y yo antes de enviárselo al comprador para que este lo confirme me fijo que todos los datos estén bien, y si no, los modifico yo como deberían ir y ahí si le envío el email al comprador...

EDIT: Volviendo al tema:

Vamos a hacer una cosa para hacerlo más simple yo les dejo el codigo y ustedes me dice que debería modificar para que funcione de esa manera:

"pagina_del_producto.php"
Cita:
<?
include("lib_carrito.php");
?>
<form action="agregar_producto.php?id=1&nombre=Nombre+De l+Producto&cantidad=<? $_POST['cantidad'] ?>&precio=125$" method="post" name="form1">
<table width="164" border="0" align="left">
<tr>
<td width="61">Cantidad:</td>
<td width="29"><input name="cantidad" type="text" id="cantidad" value="1" size="4" maxlength="3"></td>
<td width="96"><input name="submit" type="submit" id="submit" value="Agregar"></td>
</tr>
</table>
</form>
"agregar_producto.php"
Cita:
<?
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"], $_GET["cantidad"]);
?>
"lib_carrito.php"
Cita:
<?
class carrito {
var $num_productos;
var $array_id_prod;
var $array_nombre_prod;
var $array_precio_prod;
var $cantidad;
function carrito () {
$this->num_productos=0;
}
function introduce_producto($id_prod,$nombre_prod,$precio_p rod,$cantidad){
$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->cantidad[$this->num_productos]=$cantidad;
$this->num_productos++;
}

function imprime_carrito(){
$suma = 0;
$articulos = 0;
echo '<table width="487" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#333333" class="tit">
<td width="124">Producto</td>
<td width="121">Precio</td>
<td width="128" align="center"><div align="left">Unidades</div></td>
<td width="70" align="center"><div align="left">Borrar</td>
</tr>';
for ($i=0;$i<$this->num_productos;$i++){
if($this->array_id_prod[$i]!=0){
echo '<tr>';
echo "<td>" . $this->array_nombre_prod[$i] . "</td>";
echo "<td>" . $this->array_precio_prod[$i] . "</td>";
echo "<td>" . $this->cantidad[$i] . "</td>";
echo "<td><a href='eliminar_producto.php?linea=$i'><img src='trash.gif' width='12' height='14' border='0'></a></td>";
echo '</tr>';
$suma += $this->array_precio_prod[$i] * $this->cantidad[$i];
$articulos += $this->cantidad[$i];
}
}
echo '</table>';
if($articulos==0){
echo "No hay productos";
}
else{
echo "Cantidad de articulos: $articulos |
Total: $suma$";
}
}
function elimina_producto($linea){
$this->array_id_prod[$linea]=0;
}
}

session_start();
if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}
?>
__________________
Salu2

Última edición por sette15; 07/05/2008 a las 12:04
  #7 (permalink)  
Antiguo 07/05/2008, 13:27
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 18 años
Puntos: 18
Re: Que codigo poner?

Tienes un par de errores, mira, los corrijo y así ves que es lo que tenías mal:

Archivo: "pagina_del_producto.php"
Código PHP:
<?
include("lib_carrito.php");
?>
<form action="agregar_producto.php?id=1&nombre=Nombre+Del+Producto&precio=125$" method="post" name="form1">
  <table width="164" border="0" align="left">
    <tr>
      <td width="61">Cantidad:</td>
      <td width="29"><input name="cantidad" type="text" id="cantidad" value="1" size="4" maxlength="3"></td>
      <td width="96"><input name="submit" type="submit" id="submit" value="Agregar"></td>
    </tr>
  </table>
</form>
Archivo: "agregar_producto.php"
Código PHP:
<?
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"], $_POST["cantidad"]);
?>
Con ese cambio debería funcionar.
  #8 (permalink)  
Antiguo 07/05/2008, 20:10
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Que codigo poner?

Siii... muchas gracias hace tiempo que vengo tratando de encontrarle solución a este problema...
__________________
Salu2
  #9 (permalink)  
Antiguo 13/05/2008, 16:01
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Que codigo poner?

Hola de nuevo, en base al código que publiqué anteriormente... como puedo hacer para mandar los datos de los productos seleccionados a mi mail??
Lo que yo ise hasta ahora y que funciona es esto:

comprar.php
Cita:
Un formulario con campos de texto (texbox), listas (listbox o parecido ja) y un botón de envio que hace que el formulario se dirija a engranes
engranes.php
"Lo que se encarga de hacer es validar el formulario y en caso de que sea correcto que se dirija a motor.php, de lo contrario a error.php"
Cita:
<?php
if ($nombre == "" or $apellido == "" or $ciudad == "" or $provincia == "0" or $pais == "0" or $cpostal == "" or $direccion == "" or $telefono == "" or $email == "" or $pago == "0"){
include ("error.php");
} else {
include("motor.php");
}
?>
error.php
Cita:
No tiene código, solamente una imagen de error :d
motor.php
Cita:
<?
include("lib_carrito.php");
$mi_correo = "[email protected]";
$asunto = "Compra Realizada";
mail ($mi_correo,$asunto,"Como estas, "mi nombre".\n

Nombre: $nombre\n
Apellido: $apellido\n
País: $pais\n
Provincia: $provincia\n
Ciudad: $ciudad\n
Código Postal: $cpostal\n
Dirección: $direccion\n
Telefono: $telefono\n
Email: $email\n
Método de pago: $pago\n
$nombre realizó la siguiente compra:\n

","From: [email protected]");
?>
Vieron que en la penúltima linea del código dice "$nombre realizo la siguiente compra", bueno ahí debajo yo ¿que código debería poner para que en mi mail figuren los productos elegidos? obviamente siempre teniendo en cuenta el código anteriormente publicado en el post Nº6... Yo se que la cosa esta por "lib_carrito.php" pero la verdad que no se que poner... Ah aclaro que lo otro anda todo bien no hace falta tocarlo

Gracias...
__________________
Salu2
  #10 (permalink)  
Antiguo 20/05/2008, 18:04
Avatar de sette15  
Fecha de Ingreso: noviembre-2007
Ubicación: Rosario, Argentina
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Que codigo poner?

Hola, estoy teniendo otro problema, ahora lo que quiero hacer es agregar un par de datos en otra página que no es donde se muestra el carrito (ver_carrito.php), es decir, en una página aparte (productos.php) quiero agregar un link que sólo se muestre si en el carrito hay productos.
El codigo que puse y que no me tira errores pero que no funciona es este:

productos.php
Cita:
<? "
require('productos/carrito/lib_carrito.php');
if($articulos==0){
echo ' ';
}
else{
echo <a href='productos/carrito/comprar.php'>Comprar</a>;
}" ?>
Fíjense en el código que publique anteriormente en la página de "lib_carrito.php" casi abajo de todo van a ver que también hice lo mismo pero en vez de mostrar ese link se muestra "No hay productos" o si hay se muestra la cantidad y el precio total más un botón de comprar. Ahí si funciona y el "productos.php" no...
¿Alguien sabe porque?
__________________
Salu2
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 15:41.