dibi select – inputy – array

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
masterr
Začátečník | 141
+
0
-

Zdravim,
mám uplně lamáckej dotaz, jak dostanu ty data do toho pole v presenteru?

GoodsModel.php:

...
    public function findParametrs()
    {
        return dibi::query('SELECT * FROM [shopmaster_goods_parametrs] inner join [shopmaster_goods_hodnota]  where [shopmaster_goods_parametrs].id=[shopmaster_goods_hodnota].id_parametru')
                ->setRowClass('Goods')
                ->fetch();
    }
...
	protected function createComponentAddgoodsForm()
	{
   ........
		$form = new AppForm;
$parametry=array(ktery nwm jak sem dostat);

    $form->addSelect('parametr', 'Parametr:', $parametry);
}

THX

Editoval masterr (14. 10. 2010 18:03)

jtousek
Člen | 951
+
0
-
<?php
$model = new GoodsModel;
$parametry = $model->findParametrs();
?>

…anebo jsem špatně pochopil co vlastně chceš. :)

westrem
Člen | 398
+
0
-

V prvom rade si este oprav model ;)

public function findParametrs()
    {
        return dibi::query('SELECT * FROM [shopmaster_goods_parametrs] inner join [shopmaster_goods_hodnota]  where [shopmaster_goods_parametrs.id]=[shopmaster_goods_hodnota.id_parametru]')
                ->setRowClass('Goods')
                ->fetchAll();
    }
masterr
Začátečník | 141
+
0
-

Chci udelat formular v nem parametr zbozi (velikost, barva) jako select box na jeden kliknes rozjede se box s checkboxama tam zaskrtas hodnoty(bila, cerna, modra) + 1 input tam napises dalsi hodnoty oddeleny carkou nebo lépe víc inputů, podle toho kolik si jich naklikas.(pomocí js asi)

A potřebuji z databaze vybrat parametr udelat z nej ten select a k nemu priradit pak ten chcek box…rozumíš tomu?

Editoval masterr (14. 10. 2010 19:57)

PJK
Člen | 70
+
0
-

Když už jsme u toho pyskování, plurál od parametr je parameters, ne parametrs

masterr
Začátečník | 141
+
0
-

:D to je uplne jedno o to tu nejde. Nemělo to vyznít drze, doufám, že nevyznělo.

masterr
Začátečník | 141
+
0
-

1)

Recoverable Error

Object of class DibiRow could not be converted to string
public function findParametrs()
    {
        return dibi::query('SELECT parametr FROM [shopmaster_goods_parametrs]')
                //->setRowClass('Goods')
                ->fetchAll();
    }

2)

DibiException

SQL translate error
public function findParametrs()
    {
        return dibi::query('SELECT parametr=%s FROM [shopmaster_goods_parametrs]')
                //->setRowClass('Goods')
                ->fetchAll();
    }

Presenter

	protected function createComponentAddgoodsForm()
	{
		$form = new AppForm;
$parametry=$this->model->findParametrs();
    $form->addSelect('parametr', 'Parametr:', $parametry);

		return $form;
	}
 public function getModel() {
        if(!isset($this->goods))
          $this->goods = new Goods;
       return $this->goods;



    }

Co s tim? Jak to rozjet?

Editoval masterr (15. 10. 2010 21:40)

Pavel S.
Člen | 24
+
0
-

masterr napsal(a):

return dibi::query('SELECT parametr=%s FROM [shopmaster_goods_parametrs]')

Neměl jsi na mysli spíš něco jako tohle?

query('SELECT parametr FROM [shopmaster_goods_parametrs] WHERE [parametr]=%s', $parametr)

EDIT: Jo, pěkná blbost, díky za upozornění. Ale syntakticky by to už mělo sedět, takže stačí odpovídajícím způsobem upravit parametry.

Editoval Pavel S. (16. 10. 2010 19:44)

westrem
Člen | 398
+
0
-

Mno, takze chyba pri 1. pokuse jasne vravi, ze chyba nebude v modeli ;) (tam sa ziadna konverzia na string nekona).

Chyba je v presenteri, ked vytvaras select:

$parametry=$this->model->findParametrs();
$form->addSelect('parametr', 'Parametr:', $parametry); // <- tu dojde ku chybe

Ak chces tie parametry pouzit tak ako tu pises oprav si ten model na toto:

return dibi::query('SELECT parametr FROM [shopmaster_goods_parametrs]')
                ->fetchAssoc('parametr|parametr');
// hodilo by sa to fetchovat podla nejakeho id, ale kedze neviem aku mas strukturu DB tak tu nepomozem

Ad 2. pripad – to je predsa do oci bijuce, ze je to zle, to co si napisal do select klauzule sa dava do where klauzule.

Pavel S. napsal:

Chapem, ze si to myslel v dobrom a chcel si ukazat ako prepisat query, ale este raz sa detailne pozri na to co si napisal ;) Neviem ako ty ale ja napr nemam dovod zbytocne zamestnavat DB server na zistenie niecoho co uz mam v premennej :P