Jak na správný dibi sql dotaz, vraci neuplné vysledky
- KillPrd
- Začátečník | 110
Ahojte mám problém snažím se naplnit pole dotazem:
<?php
$items = dibi::query('SELECT id FROM galerie WHERE s_inzerce=%s', $id)->fetch();
?>
v databázy mám 17 výsledků a dibi mi vrati pouze jeden.
Var_dump mi vraci toto:
<?php
object(DibiRow)#35 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "368" } }
?>
Takže to vypada na špatný dotaz, leč když zadám dibi::test tak to dotaz vypíše dobře:
<?php
$items = dibi::test('SELECT id FROM galerie WHERE s_inzerce=%s', $id);
?>
SELECT id
FROM galerie
WHERE s_inzerce='47'
Abych pravdu řekl tak pokud vracím pomoci dotazu informace přímo do šablony tak to funguje bez problému. dá se říci že nejsem schopen naplnit pouze tuto proměnnou ($items) tak aby načetla všechny výsledky.
Pokud změním dotaz na:
<?php
$items = dibi::query('SELECT id FROM galerie WHERE s_inzerce=%s', $id)->fetchAll();
?>
Tak se zdá že počet výsledku je 17 leč prozměnu je špatně načtené pole viz var_dump:
array(17) { [0]=> object(DibiRow)#37 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "368" } } [1]=> object(DibiRow)#51 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "367" } } [2]=> object(DibiRow)#52 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "366" } } [3]=> object(DibiRow)#53 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "365" } } [4]=> object(DibiRow)#54 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "364" } } [5]=> object(DibiRow)#55 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "363" } } [6]=> object(DibiRow)#56 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "362" } } [7]=> object(DibiRow)#57 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "361" } } [8]=> object(DibiRow)#58 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "360" } } [9]=> object(DibiRow)#59 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "359" } } [10]=> object(DibiRow)#60 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "358" } } [11]=> object(DibiRow)#61 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "357" } } [12]=> object(DibiRow)#62 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "356" } } [13]=> object(DibiRow)#63 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "355" } } [14]=> object(DibiRow)#64 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "354" } } [15]=> object(DibiRow)#65 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "353" } } [16]=> object(DibiRow)#66 (1) { ["storage":"ArrayObject":private]=> array(1) { ["id"]=> string(3) "352" } } }
Editoval KillPrd (13. 9. 2010 8:37)
- KillPrd
- Začátečník | 110
Celý kod mám takto:
<?php
$fotky = dibi::query('SELECT id FROM galerie WHERE s_inzerce=%s', $this->params['id'])->fetchAll();
$obra = array();
foreach ($fotky as $ide) {
$dir = WWW_DIR;
$path = $dir.'/files/file/' .$ide . '.thumbnail.jpg';
$image = Image::fromFile($dir.'/files/file/' . $ide . '.jpg');
$image->resize(150, 100);
$image->save($path);
$obra[]=$path;
}//foreach
//var_dump($fotky);
$this->template->pocet = count($fotky);
$this->template->images = $obra;
?>
pak mi to píše chybovou hlášku:
Object of class DibiRow could not be converted to string
v tomto řádku:
$path = $dir.‚/files/file/‘ .$ide .
‚.thumbnail.jpg‘;
Problém je že nevím jak postupovat při odladování s dibi nemám ještě takové zkušenosti…
Editoval KillPrd (13. 9. 2010 8:46)
- iguana007
- Člen | 970
KillPrd napsal(a):
Celý kod mám takto:
Uprav to takto:
<?php
$fotky = dibi::fetchAll('SELECT id FROM galerie WHERE s_inzerce=%s', $this->params['id']);
$obra = array();
foreach ($fotky as $ide) {
$path = WWW_DIR.'/files/file/' .$ide->id . '.thumbnail.jpg';
$image = Image::fromFile(WWW_DIR.'/files/file/' . $ide->id . '.jpg');
$image->resize(150, 100);
$image->save($path);
$obra[]=$path;
}//foreach
//var_dump($fotky);
$this->template->pocet = count($fotky);
$this->template->images = $obra;
?>
Nemůžeš totiž volat samotné $ide, když je to objekt.
A pokud sloupec s_inzerce obsahuje čísla, tj. je typu Integer, tak bys měl
v dotazu použít místo %s toto: %i
Editoval iguana007 (13. 9. 2010 9:06)