Skocz do zawartości

Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zdjęcie

funkcja na liście rekordów


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1
towkoncukto@op.pl

towkoncukto@op.pl

    Nowy na forum

  • Zarejestrowani
  • Pip
  • 1 postów
Witam
Chciałbym na liście rekordów mieć pole które będzie sumować wartości z pola ilość w innej tabeli
wstawiam funkcję:
public function getIloscTowaru()
{
  $query = $this->Database->execute("SELECT SUM(ilosc) FROM tl_faktury_magazyn_pz_pozycje WHERE id_towaru=47;");
  $IloscTowaru = mysql_result($query);
  return $IloscTowaru;
}
w ustawieniach pola daję:
'ilosc' => array
(
  'label'				   => &$GLOBALS['TL_LANG']['tl_towary']['ilosc'],
  'exclude'				 => true,
			'inputType'			   => 'text',
			'search'				  => true,
			'eval'					=> array('mandatory'=>true, 'maxlength'=>10),
  'options_callback'  => array('tl_faktury_magazyn_pz_pozycje', 'getIloscTowaru'),
 
),
nijak nie chce mi to działać

mimo iż dałem pojedynczy towar

chcę mieć zliczanie ilosci każdego towaru

chcę zrobić na liście rekordów coś w rodzaju stanów magazynowych

najpewniej coś namieszałem, będę wdzięczny za uwagi bym trafił na właściwą drogę
  • 0

#2
gutenbergus

gutenbergus

    Znawca

  • Zarejestrowani
  • PipPipPipPip
  • 189 postów
Raczej nie tak. Tu chodzi o listę rekordów a nie pole w samym rekordzie. A zatem:
'label' => array(
  
   'fields'	=> array('nazwa produktu', 'pole_id', 'ilosc'),
   'format'				=> '%s%s',
   'label_callback'		=> array('tl_faktury_magazyn_pz_pozycje', 'getIloscTowaru')
  ),

a funkcja w klasie:

 
public function getIloscTowaru($row, $label)
{
  $ile = $this->Database->prepare("SELECT SUM(ilosc) FROM tl_faktury_magazyn_pz_pozycje WHERE id_towaru=?;")->execute($row['pole_id']);
  
$label .= " pozycji: $ile";
 
  return $label;
}

nie wiem tylko czy $ile nie będzie tablicą (jednoelementową) jeśli tak, to jeszcze pętla foreach.

p.s. mogą być błędy więc nie przeklejaj tylko potestuj.
  • 2




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych użytkowników