Foros del Web » Programando para Internet » PHP »

Hacer SUM correctamente

Estas en el tema de Hacer SUM correctamente en el foro de PHP en Foros del Web. Cita: O usar array_sum() y ya. Cierto pateketrueke ....

  #31 (permalink)  
Antiguo 22/04/2016, 05:40
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: Hacer SUM correctamente

Cita:
O usar array_sum() y ya.
Cierto pateketrueke.
__________________
Unset($vida['malRollo']);
  #32 (permalink)  
Antiguo 22/04/2016, 05:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Hacer SUM correctamente

Cita:
Iniciado por ivan7 Ver Mensaje
Bueno, aún poniéndolo entre [] me sigue mostrando errores.
Esta vez los siguientes:
Código HTML:
Ver original
  1. Notice: Undefined index: Sueldo in C:\wamp\www\sueldos\action_sueldos.php on line 31
  2. Notice: Undefined index: C_Puesto in C:\wamp\www\sueldos\action_sueldos.php on line 32
Y así con todos los valores.
Lógicamente me muestra estos errores ya que en ningún momento recupero esos valores en el fichero, ya que no se encuentran en el formulario que hace referencia a este fichero, no sé si me explico correctamente.

Volviendo a la duda inicial.
Lo único que falta por hacer es igualar la categoría y el mes escogido a un ID_Nomisferio, es decir, Categoría + Mes = ID_Nomisferio.

Alguna idea de como hacer esto? Tengo la impresión de que es una tarea bastante sencilla, pero estoy atascado y no consigo avanzar.

Gracias.
Esos errores se dan porque, si miras el manual de referencia de PHP, fetch_row() devuelve un array numérico. Para un array asociativo es fetch_asoc() o bien usas fetch_array(), que te devuelve uno con ambas propiedades.

Tienes que prestarle mas atencion a lo que dice el manual y tratar de entender esos conceptos, porque tropezarás con ellos constantemente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #33 (permalink)  
Antiguo 22/04/2016, 05:43
 
Fecha de Ingreso: abril-2016
Mensajes: 36
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Hacer SUM correctamente

Cita:
Iniciado por xerifandtomas Ver Mensaje
Pues eso es algo que debes de determinar tu, por que solo tu sabes como se relacionan esos datos entre si, por lo menos yo desconozco como determinar ID_Nomisferio a raíz de la categoría y el mes, es más me parece una relación un tanto extraña, pero no me atrevo a decir más. En otro hilo te dije, que replantearas tus tablas y como se relacionaban, por que aun que sólo mostraba información de forma parcial y desconozco el fin de todo esto y su estructura, sonaba y suena a inconsistencia.
[/HIGHLIGHT]
A ver, tengo dos tablas en la BBDD, una llamada Categoría que contiene las siguientes columnas:
- ID_Categoría
- Descripción

La otra tabla, llamada Nomisferio, contiene las siguientes columnas:
- ID_Nomisferio
- ID_Categoria
- Tipo_Mes
- Conceptos Fijos (varias columnas)
- Conceptos Variables (varias columnas)

Ambas tablas están relacionadas mediante la columna ID_Categoria.
Lo que se pretende es lo siguiente:
Sabiendo el ID_Categoria que ha escogido el usuario, junto con el tipo_mes, es un ID_Nomisferio.
Es decir, si la categoria es 1 y el mes es de 28 dias, el ID_Nomisferio será el 1.
Si la categoria es 1 y el mes es de 30 dias, el ID_Nomisferio será el 2.
Si la categoria es 1 y el mes es de 31 dias, el ID_Nomisferio será el 3.
Si la categoria es 2 y el mes es de 28 dias, el ID_Nomisferio será el 4.
Si la categoria es 2 y el mes es de 30 dias, el ID_Nomisferio será el 5.
Y así sucesivamente.
Cada ID_Nomisferio tiene unos valores diferentes en cada columna. Lo que se pretende es que dependiendo el ID_Nomisferio resultante, se realice la suma de TODAS las columnas de ESA FILA.

Creo haberme explicado correctamente.
De verdad que gracias por el interés.
  #34 (permalink)  
Antiguo 22/04/2016, 05:48
 
Fecha de Ingreso: abril-2016
Mensajes: 36
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Hacer SUM correctamente

Cita:
Iniciado por xerifandtomas Ver Mensaje
Cierto pateketrueke.
Respecto a esta nueva forma que comentáis, decir que también lo intenté de esta manera, puesto que mi tutor me "ayudó" con esa "pista", pero no conseguí resolverlo.
Así es como lo hice utilizando el array_sum:
Código PHP:
Ver original
  1. $a = array(Sueldo, Antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3,C_Prof_4);
  2. echo "sum(a) = " . array_sum($a) . "\n";
  #35 (permalink)  
Antiguo 22/04/2016, 05:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Hacer SUM correctamente

Caray ivan7, estás intentando código que no es válido ni posible de ejecutar.

Básicamente te estás inventando soluciones sin entender cómo funcionan las cosas, y si sigues así podrás durar así por mucho tiempo y no todos tiene el tiempo de seguirte el paso.

Código PHP:
Ver original
  1. $a = array(Sueldo, Antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3,C_Prof_4);
  2. echo "sum(a) = " . array_sum($a) . "\n";

Ese código no es correcto por varias razones:

¿De dónde sacas las constantes?

Sí, "Sueldo, Antiguedad, etc." son constantes, no es ninguna variable ni cadena de texto, si lees el manual verás que a menos que definas dichas constantes no existirán.

Se supone que ya habías obtenido un array con $row, pero de algún modo te gusta ahogarte en un vaso de agua:
Código PHP:
Ver original
  1. // MAL (sólo tu sabes lo que haces con estas constantes)
  2. $a = array(Sueldo, Antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3,C_Prof_4);
  3. echo "sum(a) = " . array_sum($a) . "\n";
  4.  
  5. // BIEN (pues ya tienes un array en $row ¿no?)
  6. echo "sum(a) = " . array_sum($row) . "\n";
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #36 (permalink)  
Antiguo 22/04/2016, 06:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Hacer SUM correctamente

OK...
Volvamos atrás un momento, y planteemos una posibilidad mas sencilla, basado sólo en el ejemplo que pusiste en el primer post, y sin tener en cuenta todolo siguiente:
Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($_POST['enviar'])) {
  4.     $con = mysqli_connect("localhost", "sueldos", "sueldos", "sueldos")
  5.             or die("ERROR. No se ha podido conectar  a la BBDD.");
  6.     echo "<br/>";
  7.     $categoria = mysqli_real_escape_string($con, $_POST['categoria']);
  8.  
  9.     $dias_trabajados = mysqli_real_escape_string($con, $_POST['dias_trabajados']);
  10.     $compfestdia = mysqli_real_escape_string($con, $_POST['compfestdia']);
  11.  
  12.     $trienio = mysqli_real_escape_string($con, $_POST['trienio']);
  13.  
  14.     if (isset($_POST['enviado'])) {
  15.         $qry = "SELECT
  16.                    (SUM(sueldo) + SUM(antiguedad) + SUM(Dif_Ant) + SUM(Turnicidad) +
  17.                    SUM(C_Puesto) + SUM(C_Niv_Retr) + SUM(C_Destino) + SUM(C_Prof_1) +
  18.                    SUM(C_Prof_2) + SUM(C_Prof_3) + SUM(C_Prof_4)) TotalSueldo
  19.                FROM
  20.                    nomisferio";
  21.         if (isset($categoria) && !empty($categoria)) {
  22.             $qry.= " WHERE id_categoria = " . $categoria;
  23.         }
  24.         $resultado = mysqli_query($con, $qry);
  25.         $row = mysql_fetch_assoc($resultado);
  26.  
  27.         echo "Su salario es: " . $row['TotalSueldo'] * $dias_trabajados;
  28.     }
  29. }
  30. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 22/04/2016 a las 07:10 Razón: Correcion de variable
  #37 (permalink)  
Antiguo 26/04/2016, 00:39
 
Fecha de Ingreso: abril-2016
Mensajes: 36
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Hacer SUM correctamente

Muy buenas!
Siento no haber podido contestar estos días atrás, no he tenido tiempo.

Respecto a la última solución ofrecida por gnzsoloyo decir que de esa manera se consigue que el ejercicio saque un importe por pantalla.
Ese importe siempre es el mismo, dando igual la categoría que escoja el usuario.
Aunque ese importe realmente no sé de qué fila de la tabla nomisferio se trata.

El problema es que lo que falta es especificar el mes también, es decir, el usuario escoge su categoría y un tipo de mes, y, en base a esas dos elecciones será un ID_Nomisferio u otro.

Ahora mismo tengo el fichero modificado. He creado una nueva columna llamada TotalFijo en la tabla nomisferio que recoge la SUMA de TODOS los valores fijos, con la intención de multiplicar esa cantidad por el número de días del mes escogido y dividirlo entre el número de días trabajados especificados por el usuario, no sé si se entenderá bien. Adjunto código.
Código PHP:
Ver original
  1. if (isset($_POST['enviado'])){
  2.         $qry = "SELECT TotalFijo FROM nomisferio";
  3. if (isset($categoria) && !empty($categoria)) {
  4.             $qry.= " WHERE id_categoria = " . $categoria;
  5.         }
  6.         $resultado = mysqli_query($con, $qry);
  7.         $row = mysqli_fetch_assoc($resultado);
  8.        
  9.         echo "Su salario es: " . $row['TotalFijo'];
Alguien sabe como podría conseguir ese ID_Nomisferio sabiendo la categoría y el tipo de mes escogido por el usuario??
Gracias.

Etiquetas: correctamente, mysql, select, sum, 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 10:27.