Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sumar la misma variable

Estas en el tema de Sumar la misma variable en el foro de PHP en Foros del Web. navegando por alli encontre estos dos codigos diferentes y los he implementado a mi forma pero necesito ayuda en el primero codigo es un formulario ...
  #1 (permalink)  
Antiguo 17/04/2014, 13:59
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Sonrisa Sumar la misma variable

navegando por alli encontre estos dos codigos diferentes y los he implementado a mi forma pero necesito ayuda en el primero codigo es un formulario con input dinamicos se van agregando conforme el usuario los necesite este es el codigo

----------------------------------------------------------------------------------------
<?php
if($_POST['concepto']){

$concepto[]=$_POST["concepto"];
$valor[]= $_POST["valor"];

$lista = array($concepto);

for($i=0;$i<count($concepto)-1;$i++){
echo $concepto[$i]."->".$valor[$i]."<br>";
}

}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<meta content="jquery, forumlario dinamico, tutorial" name="keywords"/>

<title>Formulario Dinamico</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.addfield2.js"></script>

<div id="stylized" class="myform" style="margin:20px auto;">
<form id="form" name="form" method="post" action="procesar.php">

<div id="material_comprado"> </div>

<h1>Campos Din&aacute;mico</h1>

<label><span class="small">A&ntilde;ade las conceptos</span>
</label><br />
<div id="div_1">
<label>Codigo de Producto</label>
<input type="text" name="concepto[]" id="concepto" style="width:200px;" /> <br>
<label>Valor</label>
<input type="text" name="valor[]" id="valor" style="width:200px;" />
<input class="bt_plus" id="1" type="button" value="+" /><div class="error_form">
</div>


</div>

<button type="submit" class="boton">Enviar</button>
<div class="spacer"></div>
</form>


y en el otro los recibe
-------------------------------------------------------------------------------------------------------------
<h2>Valores</h2>
<?php
$concepto=$_POST['concepto'];
for ($i=0; $i<=count($concepto); $i++) {

//// aqui grabamos en la base de datos o lo que deseemos

}
$valor=$_POST['valor'];
for ($i=0; $i<=count($valor); $i++) {




echo "Concepto ".$concepto[$i].'<br>';
echo "Valor $".$valor[$i].'<br>';

//// aqui grabamos en la base de datos o lo que deseemos



}
?>


y me muestra lo siguiente
Concepto Camisa
Valor $20
Concepto Jeans
Valor $30
Concepto Pantalon Casual
Valor $15
Concepto
Valor $

Y necesito que no me agrege ese campo vacio en lo que es concepto y valor pero lo mas importante que me sume solo el campo valor y me aparezca un total ayudarme por favor necesito un cerebro amigo
  #2 (permalink)  
Antiguo 17/04/2014, 19:50
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Sumar la misma variable

No estoy seguro de haber entendido. lo que deseas es simplemente validar que no te inserte un campo vacio?
En ese caso seria algo asi:
Código PHP:
Ver original
  1. $valor=$_POST['valor'];
  2. for ($i=0; $i<=count($valor); $i++) {
  3.  
  4.     if(!empty($concepto[$i]) and !empty($valores[$i]){
  5.              //// aqui grabamos en la base de datos o lo que deseemos
  6.     }
  7. }
  8. ?>

No sé si con eso respondo tu pregunta, en caso negativo puedes explicarte mejor. Tambien puedes usar un foreach para recorrer el arreglo en vez del for.

Otra recomendación usa el "highlight" para colocar los códigos, permite que se lean mejor.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #3 (permalink)  
Antiguo 17/04/2014, 21:46
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Sumar la misma variable

Gracias por tu respuesta pero lo que necesito es sumar el campo valor osea que si la persona agrego tres valores saber el total de estos es lo que mas me interesa me puedes dar una luz
  #4 (permalink)  
Antiguo 18/04/2014, 07:02
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Sumar la misma variable

Vale vale. en ese caso es esto a ver si entendi:

Código PHP:
Ver original
  1. $total = 0;
  2. $valor=$_POST['valor'];
  3. for ($i=0; $i<=count($valor); $i++) {
  4.     //toda la lógica tuya
  5.  
  6.    //sumas el valor
  7.     $total = $total+$valor[$i];
  8. }


Alli total va a ir guardando la suma de todo.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #5 (permalink)  
Antiguo 18/04/2014, 09:59
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Sumar la misma variable

O mas facil en 1 sola linea:

Código PHP:
Ver original
  1. $total = array_reduce($_POST['valor'],  function($v, $w){$v += $w; return $v; });

Aca como funciona (puedes probarlo)

Código PHP:
Ver original
  1. <?php
  2. // Simulo valores en $_POST  << solo para probar
  3. $_POST['valor'] = [1,3,5,500,10];
  4.  
  5. $total = array_reduce($_POST['valor'],  function($v, $w){$v += $w; return $v; });
  6. echo "Total: ".$total;

eso imprime:

Cita:
Total: 519
__________________
Salu2!
  #6 (permalink)  
Antiguo 18/04/2014, 11:03
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Sumar la misma variable

Buen aporte esa.
__________________
Lo imposible es lo posible visto por los ojos de un incapaz.
Si te sirve la respuesta. dale + al karma.
Saludos
  #7 (permalink)  
Antiguo 19/04/2014, 01:21
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Sumar la misma variable

<?php
$concepto=$_POST['concepto'];
for ($i=0; $i<=count($concepto); $i++) {

//// aqui grabamos en la base de datos o lo que deseemos

}
$valor=$_POST['valor'];
for ($i=0; $i<=count($valor); $i++) {


// echo'Impresion de array'. implode($valor).'<br>';


$total = array_reduce($_POST['valor'], function($v, $w){$v += $w; return $v; });


echo "<table border 1>";

echo "<th>Concepto</th>";
echo "<td>".$concepto[$i]."</td>";
echo "</tr>";
echo "<th>Valor</th>";
echo "<td>".$valor[$i]."</td>";
echo "</tr>";
echo "<th>Valor</th>";
echo "<td>".$total."</td>";
echo "</tr>";
echo "</table>";



}
?>

Gracias aquí esta como he implementado la ayuda de ustedes indagando por alli me di cuenta que como tengo un array puedo sumar las cantidades que trae la variable valor y se puede usar el array_sum pero esta implementacion es mejor pero si no es molestia me surge otra situacion el campo valor se me repite varias veces y solo necesito que se repita una vez como puedo hacer para evitar eso por que he tratado y no lo he logrado conseguir
  #8 (permalink)  
Antiguo 19/04/2014, 06:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Sumar la misma variable

Cita:
Iniciado por sarrhen Ver Mensaje
Gracias aquí esta como he implementado la ayuda de ustedes indagando por alli me di cuenta que como tengo un array puedo sumar las cantidades que trae la variable valor y se puede usar el array_sum pero esta implementacion es mejor pero si no es molestia me surge otra situacion el campo valor se me repite varias veces y solo necesito que se repita una vez como puedo hacer para evitar eso por que he tratado y no lo he logrado conseguir
'valor[]' es un array y lo veo una sola vez en el formulario........
__________________
Salu2!
  #9 (permalink)  
Antiguo 19/04/2014, 10:40
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Sumar la misma variable

si es verdad pero cuando lo muestro en pantalla la variable me la repite ejemplo algo rustico pero eso lo muestro en tablas

Valores

Concepto camisa
Valor 12
Valor 34 aqui me repite el valor total
Concepto jeans
Valor 12
Valor 34 aqui me repite el valor de nuevo
Concepto corbata
Valor 10
Valor 34 y aqui tambien
Concepto y esto es lo que les comento
Valor me crea otra celda sin valores
Valor 34
  #10 (permalink)  
Antiguo 20/04/2014, 09:09
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Sonrisa Respuesta: Sumar la misma variable

Estuve pensando y hoy lo manejo con un foreach y no me repite el valor en cada vez que lo genero pero si tengo problemas para darle forma a las tablas no se si me pueden ayudar ya que al imprimirlos en pantalla no puedo visualizarlos de forma ordenada

como seria asi

concepto valor
camisa 10
jeans 10
corbata 10
total 30

Código PHP:
Ver original
  1. <h2>Valores</h2>
  2. <?php
  3.  
  4. echo "<table border 1>";
  5.   echo "<tr>";
  6.        echo "<th>Concepto</th>";
  7. //        echo "</tr>";
  8. //   echo "<tr>";
  9.        echo "<th>Valor</th>";
  10. //        echo "</tr>";
  11. //$concepto=$_POST['concepto'];
  12.    foreach($_POST['concepto'] as $valor1) { // Recorremos los valores que nos llegan
  13. //            echo $valor1."<br>"; // imprimimos el valor
  14.     echo "<tr>";
  15.         echo "<td>".$valor1."</td>";
  16.             echo "</tr>";
  17.              
  18.       }
  19.    
  20.    foreach($_POST['valor'] as $valor2) { // Recorremos los valores que nos llegan
  21. //            echo $valor2."<br>"; // imprimimos el valor
  22.    
  23.         echo "<tr>";
  24.                     echo "<td>".$valor2."</td>";
  25.                         echo "</tr>";
  26.                      
  27.       }
  28.  
  29. $total = array_reduce($_POST['valor'],  function($v, $w){$v += $w; return $v; });
  30.  
  31.                             echo "<th>Total</th>";
  32.                                 echo "<td>".$total."</td>";
  33.                                     echo "</tr>";
  34.                                     echo "</table>";
  35.  
  36. ?>

Última edición por sarrhen; 20/04/2014 a las 09:10 Razón: olvida valores
  #11 (permalink)  
Antiguo 20/04/2014, 09:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Sumar la misma variable

Lo primero que deberias hacer es separar la logica de la vista :

- Consiguete una libreria que genere tablas... le pasas los datos y ya tu codigo sera mas claro
__________________
Salu2!
  #12 (permalink)  
Antiguo 20/04/2014, 23:03
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Sumar la misma variable

aqui de la solucion si se pueden dar cuenta la suma la termino haciendo con una funcion de array_sum, Gracias por el apoyo y por la ayuda dejo el codigo por si otro lo necesita y no pase los apuros que yo pase

Formulario

Código PHP:
Ver original
  1. <?php
  2. if($_POST['concepto']){
  3.  
  4. $concepto[]=$_POST["concepto"];
  5. $valor[]= $_POST["valor"];
  6.  
  7. $lista = array($concepto);
  8.  
  9. for($i=0;$i<count($concepto)-1;$i++){
  10. echo $concepto[$i]."->".$valor[$i]."<br>";
  11. }
  12.  
  13. }
  14. ?>
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml">
  17. <head>
  18. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  19.  
  20. <meta content="jquery, forumlario dinamico, tutorial" name="keywords"/>
  21.  
  22. <title>Formulario Dinamico</title>
  23. <script type="text/javascript" src="jquery.min.js"></script>
  24. <script type="text/javascript" src="jquery.addfield2.js"></script>
  25.  
  26. <div id="stylized" class="myform" style="margin:20px auto;">
  27.     <form id="form" name="form" method="post" action="procesar.php">
  28.  
  29. <div id="material_comprado"> </div>  
  30.  
  31. <h1>Campos Din&aacute;mico</h1>
  32.  
  33. <label><span class="small">A&ntilde;ade las productos y su valor</span>
  34. </label><br />
  35.     <div id="div_1">
  36.     <label>Producto</label>
  37.         <input  type="text"  name="concepto[]" id="concepto" style="width:200px;" /> <br>
  38.     <label>Valor</label>
  39.         <input  type="text"  name="valor[]" id="valor" style="width:200px;" />
  40.             <input class="bt_plus" id="1" type="button" value="+" /><div class="error_form">
  41.     </div>
  42.    
  43.    
  44. </div>
  45.  
  46. <button type="submit" class="boton">Enviar</button>
  47. <div class="spacer"></div>
  48. </form>

el otro archivo que se llamara procesar

Código PHP:
Ver original
  1. <table border="1" bordercolor="#FFCC00" style="background-color:#FFFFCC" width="100%" cellpadding="3" cellspacing="3">
  2.     <tr>
  3.         <th>concepto</th>
  4.         <th>valor</th>
  5.     </tr>
  6.            
  7.             <?php
  8.  
  9.  
  10. $FirstArray = ($_POST['concepto']);
  11. $SecondArray = ($_POST['valor']);
  12. foreach($FirstArray as $index => $value) {
  13.     echo "<tr>";
  14.         echo "<td>".$FirstArray[$index]."</td>";
  15.            
  16.         echo "<td>".$SecondArray[$index]."</td>";
  17.             echo "</tr>";
  18.  
  19. }
  20.  
  21.  
  22.    echo "<th>Total</th>";
  23.                                 echo "<td>". array_sum($SecondArray) ."</td>";
  24.                                     echo "</tr>";
  25.                                     echo "</table>";
  26. ?>

Etiquetas: formulario, html, variable
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 02:05.