Autor Zpráva
Adam1999
Profil
Dobrý den,
Mám takto rozvrženou databázi:

A potřeboval by jsem sečíst všechna čísla ve sloupci ,,price".
Zde je můj kod:
<?php

  include_once __DIR__.'/../config/database.php';

  $result = dibi::query('SELECT * FROM [sold] WHERE [id_user] = %s', $_SESSION['login_id']);
  if ($all = $result->fetchAll())
  foreach($all as $row) {
    echo $row->price;
  }
Už si s tím vůbec nevím rady vím že je to nějaká opakování pomocí for nebo while ale vůbec mi nedochází jak to udělat.
Budu rád za každou radu.
Děkuji.
lionel messi
Profil
Adam1999:
Už si s tím vůbec nevím rady vím že je to nějaká opakování pomocí for nebo while ale vůbec mi nedochází jak to udělat.
Toto sa rieši bežne už na úrovni SQL pomocou funkcie SUM. Dotaz bude vyzerať zhruba takto:

$result = dibi::query('SELECT SUM(price) price FROM [sold] WHERE [id_user] = %s', $_SESSION['login_id']);

Malá poznámka: To druhé price nie je omyl, ale tzv. alias.
Alphard
Profil
Jestli jde jen o součet, bylo by nejlepší napsat to přímo do dotazu
select sum(price) soucet_ceny from ... whre ...

Pokud jde mj. o součet, tzn. stejně je třeba ty řádky vytáhnout, není problém si v cyklu příčítat hodnoty
$sum = 0;
foreach ($all as $row )
{
  $sum += $row->price;
}
Adam1999
Profil
Použil jsem:
$result = dibi::query('SELECT SUM(price) price FROM [sold] WHERE [id_user] = %s', $_SESSION['login_id']);
Funguje to dokonale všem moc děkuji.
Adam1999
Profil
ještě se chci jen zeptat,
Dá se nějak určit zda je hodnota prázdná proto při použití SUM() klasický else nefunguje.
Děkuji.
Keeehi
Profil
Pokud nebude existovat žádný záznam, tak výsledek funkce sum bude null
if ($result->fetchSingle() === null) {
    // žádné řádky neodpovídají id_user = $_SESSION['login_id']
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: