dibi select – inputy – array
- masterr
- Začátečník | 141
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)
- westrem
- Člen | 398
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
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)
- masterr
- Začátečník | 141
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
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
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