SUM randuri dintr-o coloana SQL

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 285

SUM randuri dintr-o coloana SQL

Salutare,

Am urmatorul cod:

Cod: Selectaţi tot

<?php
include 'bd_cnx.php';

if(isset($_POST['get_an'], $_POST['get_luna'], $_POST['get_reprezentant'], $_POST['get_tip_activitate'])){
  //Array-ul cu datele care vor fi returnate, in format json
  $ret =[['Task', 'Hours per Day']];
  // Interogare SQL
  $sch = $_POST['get_an'];
  $sch_luna = $_POST['get_luna'];
  $sch_reprezentant = $_POST['get_reprezentant'];
  $sch_tip_activitate = $_POST['get_tip_activitate'];

  $sql = "SELECT activitati.ANUL_DATA_ACTIVITATE,
                 activitati.TIP,
                 clase.CLASA,
                 COUNT(activitati.ID_CLASA) AS nb
          FROM activitati
          JOIN clase ON clase.ID = activitati.ID_CLASA
          WHERE activitati.LUNA_DATA_ACTIVITATE = $sch_luna
          AND activitati.ANUL_DATA_ACTIVITATE = $sch
          AND activitati.ID_USER = $sch_reprezentant
          AND activitati.TIP = ('$sch_tip_activitate')
          GROUP BY CLASA";

  // Executa interogarea si retine datele returnate
  $result = $conn->query($sql);

  // daca $result contine cel putin un rand
  if ($result->num_rows > 0){
  // adauga datele din fiecare rand din $result in $ret
    while($row = $result->fetch_assoc()){
      //floatval() transforma sirul numeric in numar
      $ret[] =[$row['CLASA'], floatval($row['TOTAL'])];
    }
  }
  else {
    $ret[] =['', ''];
    echo //<-----------suma valorilor din TOTAL
  }

  //returneaza datele ca json
  echo json_encode($ret);
}
?>
Codul sql returneaza un tabel sub forma:

Cod: Selectaţi tot

anul_activitate | TIP | CLASA | TOTAL
2015 | Vizita | Companii | 15
2015 | Vizita | P.F | 30
Cum pot insuma valorile din coloana TOTAL si sa le afisez cu un echo.

Multumesc!

MarPlo Mesaje: 4343
Poti sa definesti o variabila in care adaugi total-ul din while().
Cam asa:

Cod: Selectaţi tot

$ret =[['Task', 'Hours per Day']];
$total =0;
//...
while($row = $result->fetch_assoc()){
  //floatval() transforma sirul numeric in numar
  $ret[] =[$row['CLASA'], floatval($row['TOTAL'])];
  $total += floatval($row['TOTAL']);
}
- Apoi aplici " echo $total; " unde vrei.

sterica Mesaje: 285
Am omis un lucru, codul de mai sus poarta numele de query.php iar echo $total; vreau sa il pozitionez intr-un div

Cod: Selectaţi tot

<div id="totaluri"><?php include "query.php"; echo $total; ?></div>
Daca il scriu asa imi returneaza datele si pentru json, ceea ce imi este incomod. Cum pot scoate doar echo $total?

Multumesc!

MarPlo Mesaje: 4343
Daca acel select si TOTAL depind de datele primite prin $_POST, nu ai cum sa scoti totalul fara acele date.
Daca vrei total-ul adaugat in <div>, la "else", in loc de: $ret[] =['', '']; faci acolo Select-ul care vrei pentru TOTAL, aduni si aplici "echo".

sterica Mesaje: 285
Si cum voi putea prelua datele daca If-ul va returna intotdeauna TRUE?

MarPlo Mesaje: 4343
Datele pe care vrei sa le afisezi le retii pe fiecare in variabile, si aplici "echo" la ce variabila vrei acolo unde sa fie adaugata in pagina.
In functie de ce combinatii ajax-php vrei sa faci, poate trebuie sa regandesti logica codului.

Subiecte similare