Foros del Web » Programando para Internet » PHP »

duda php

Estas en el tema de duda php en el foro de PHP en Foros del Web. Hola! Mi duda es la siguiente estoy cotizando unos productos que selecciono conunos checkbox al elegir solo algunos me tiene q sumar los precios y ...
  #1 (permalink)  
Antiguo 15/06/2011, 11:23
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
duda php

Hola! Mi duda es la siguiente estoy cotizando unos productos que selecciono conunos checkbox al elegir solo algunos me tiene q sumar los precios y darme el total pero no lo hace selecciono dos productos no se uno de 100 y otro de 50 estamos de acuerdo que el resultado seria 150 entonces al mandarme ala pagina de la cotizacion me suba las demas cantidades es decir si no seleccion una que habia de 200 me hace la suma de ese que no seleccione tambien bueno lespongo una parte d mi codigo que es donde se hace la suma para ver si me pueden ayudar. Gracias
<?php

$producto=$_POST['cotizar'];
$valores=$_POST['valores'];
//$suma=$_POST['suma'];

$cont=count($_POST['cotizar']);

$i=0;
$suma=0;

?>
<?php
while($i<$cont)
{

?>
<tr>
<td><?php echo $producto[$i]?></td>

<td><?php echo $valores[$i]?></td>

</tr>

<?php

$i++;
}

?>

<?php foreach ($_POST['valores'] as $val){ $suma=$suma+$val;}
echo $suma;?>
  #2 (permalink)  
Antiguo 15/06/2011, 12:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: duda php

Pues no le veo yo ningún fallo a eso.
No se si el problema está en algo que tengas mal en el resto del código que no has puesto, pero ese trozo que has puesto te debería funcionar.
  #3 (permalink)  
Antiguo 15/06/2011, 19:54
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

estás suando todos los registros de array asocioativo $_POST['valores'] , por eso te suma todo, sería bueno ver la parte del formilario
__________________
la la la
  #4 (permalink)  
Antiguo 16/06/2011, 08:36
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: duda php

Este es el formulario donde pongo el checkbox para la seleccion de los productos de ahi cuando me manda a lista.php que es lapagina donde tengo el codigo de la suma.
<form id="envia" name="form2" method="post" action="lista.php">
<p>&nbsp;</p>
<table width="382" border="1">
<tr>
<td width="46"></td>
<td width="125">nombre</td>
<td width="189">precio_venta</td>
</tr>
<?php do { ?>
<tr>
<td><input name="cotizar[]" type="checkbox" id="cotizar" value="<?php echo $row_cotizacion['nombre']?>" />
<input type="hidden" name="valores[]" id="valores" value="<?php echo $row_cotizacion['precio_venta']?>"/>
<label for="cotizar"></label></td>
<td><?php echo $row_cotizacion['nombre']; ?></td>
<td><?php echo $row_cotizacion['precio_venta']; ?></td>
</tr>
<?php } while ($row_cotizacion = mysql_fetch_assoc($cotizacion)); ?>
</table>
</p>
<input type="submit" name="envia" id="envia" value="Enviar" />
</form>
  #5 (permalink)  
Antiguo 16/06/2011, 09:20
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

En el checkbox estás poniendo como value , el nombre del cliente, y debes poner el valor , entonces haces asi:

Código PHP:
for($i=0;$i<count($_POST['cotizar']);$i++)

      if(isset(
$_POST[$i]['cotizar'])!=''){
          
$suma $suma $_POST[$i]['cotizar'];
      }
}
echo 
$suma
__________________
la la la
  #6 (permalink)  
Antiguo 16/06/2011, 10:14
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: duda php

me regresa 0
  #7 (permalink)  
Antiguo 16/06/2011, 10:15
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

poné el codigo del formulario, otra vez , para verlo
__________________
la la la
  #8 (permalink)  
Antiguo 16/06/2011, 10:25
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

<input name="cotizar[]" type="checkbox" id="cotizar" value="<?php echo $row_cotizacion['precio_venta']?>" />


eso canbiá
__________________
la la la
  #9 (permalink)  
Antiguo 16/06/2011, 10:26
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: duda php

Este es el formulacio de donde hare la seleccion

<form id="envia" name="form2" method="post" action="lista.php">
<p>&nbsp;</p>
<table width="382" border="1">
<tr>
<td width="46"></td>
<td width="125">nombre</td>
<td width="189">precio_venta</td>
</tr>
<?php do { ?>
<tr>
<td><input name="cotizar[]" type="checkbox" id="cotizar" value="<?php echo $row_cotizacion['nombre']?>" />
<input type="hidden" name="valores[]" id="valores" value="<?php echo $row_cotizacion['precio_venta']?>"/>
<label for="cotizar"></label></td>
<td><?php echo $row_cotizacion['nombre']; ?></td>
<td><?php echo $row_cotizacion['precio_venta']; ?></td>
</tr>
<?php } while ($row_cotizacion = mysql_fetch_assoc($cotizacion)); ?>
</table>
</p>
<input type="submit" name="envia" id="envia" value="Enviar" />
</form>

Esto es laparte que va en la pagina lista.php..agregando el codigo que me sugeriste

<?php

$producto=$_POST['cotizar'];
$valores=$_POST['valores'];
//$suma=$_POST['suma'];

$cont=count($_POST['cotizar']);

$i=0;
$suma=0;

?>
<?php
while($i<$cont)
{

?>

<?php echo $producto[$i]?>

<?php echo $valores[$i]?>

<?php

$i++;
}

?>



<?php for($i=0;$i<count($_POST['cotizar']);$i++)
{
if(isset($_POST[$i]['cotizar'])!=''){
$suma = $suma + $_POST[$i]['cotizar'];
}
}
echo $suma; ?>
  #10 (permalink)  
Antiguo 16/06/2011, 10:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: duda php

Tú código está mal, php1.

¿Has visto lo que has puesto?:

while ($row_cotizacion = mysql_fetch_assoc($cotizacion));

Esa instrucción no tiene sentido. Mira el manual de php sobre la función mysql_fetch_assoc() y cual es la manera correcta de usarla.
No la estás poniendo en el lugar adecuado. Además no la puedes terminar con punto y coma sino con llave, y dentro de la llave poner el código para tratar con las variables:

while ($row_cotizacion = mysql_fetch_assoc($cotizacion)){

//Aquí va el código.
}
  #11 (permalink)  
Antiguo 16/06/2011, 10:37
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

Cita:
Iniciado por Nexus10 Ver Mensaje
Tú código está mal, php1.

¿Has visto lo que has puesto?:

while ($row_cotizacion = mysql_fetch_assoc($cotizacion));

Esa instrucción no tiene sentido. Mira el manual de php sobre la función mysql_fetch_assoc() y cual es la manera correcta de usarla.
No la estás poniendo en el lugar adecuado. Además no la puedes terminar con punto y coma sino con llave, y dentro de la llave poner el código para tratar con las variables:

while ($row_cotizacion = mysql_fetch_assoc($cotizacion)){

//Aquí va el código.
}
Es un DO WHILE como lo planteo es CORRECTO


PROBÁ ASI:


Código PHP:
<form id="envia" name="form2" method="post" action="lista.php">
<p>&nbsp;</p>
<table width="382" border="1">
<tr>
<td width="46"></td>
<td width="125">nombre</td>
<td width="189">precio_venta</td>
</tr>
<?php do { ?>
<tr>
<td><input name="cotizar[]" type="checkbox" id="cotizar" value="<?php echo $row_cotizacion['precio_venta']?>" />
<input type="hidden" name="valores[]" id="valores" value="<?php echo $row_cotizacion['precio_venta']?>"/>
<label for="cotizar"></label></td>
<td><?php echo $row_cotizacion['nombre']; ?></td>
<td><?php echo $row_cotizacion['precio_venta']; ?></td>
</tr>
<?php 

while (
$row_cotizacion mysql_fetch_assoc($cotizacion)); ?>
</table>
</p>
<input type="submit" name="envia" id="envia" value="Enviar" />
</form>

Esto es laparte que va en la pagina lista.php..agregando el codigo que me sugeriste

<?php

$producto
=$_POST['cotizar'];
$valores=$_POST['valores'];
//$suma=$_POST['suma'];

$cont=count($_POST['cotizar']);

$i=0;
$suma=0;

?>
<?php
while($i<$cont)
{

?>

<?php echo $producto[$i]?>

<?php echo $valores[$i]?>

<?php

$i
++;
}

?>



<?php for($i=0;$i<count($_POST['cotizar']);$i++)
{
if(isset(
$_POST[$i]['cotizar'])!=''){
$suma $suma $_POST[$i]['cotizar'];
}
}
echo 
$suma?>
__________________
la la la
  #12 (permalink)  
Antiguo 17/06/2011, 09:29
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: duda php

de hecho es asi como lo tenia con un do while y me sigue enviando d resultado O
  #13 (permalink)  
Antiguo 17/06/2011, 09:51
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

Cita:
Iniciado por php1 Ver Mensaje
de hecho es asi como lo tenia con un do while y me sigue enviando d resultado O
SI, pero fijate que le modifique esta linea

<input name="cotizar[]" type="checkbox" id="cotizar" value="<?php echo $row_cotizacion['precio_venta']?>" />


por favor copialo y pegalo asi com ote lo pasé entes y probalo
__________________
la la la
  #14 (permalink)  
Antiguo 17/06/2011, 10:42
 
Fecha de Ingreso: junio-2011
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: duda php

ya lo copie tal cual y aun asi marca cero
  #15 (permalink)  
Antiguo 17/06/2011, 15:49
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: duda php

creo que me equivoque debería se asi

$_POST['cotizar'][$i]

yo lo puse asi

$_POST[$i]['cotizar']

y creo que es incorrecto

probá en cambiar eso, en todo lo que te pase


.
__________________
la la la

Etiquetas: Ninguno
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 22:06.