Avatar
kxmx
Redaktor
Avatar
kxmx:

Ahoj pokračuju dál na devbook mvc, ale asi jsem úplně nepochopil jak se dotazovat na databazi skrze ten wrapper.

Sekce chci vést ve vztahu 1:m takže u článku jen vedu id sekce.

v phpmyadminu naprosto v pořádku funguje tento jednoduchý dotaz

SELECT clanky.titulek, sekce.nazev
FROM clanky
INNER JOIN sekce ON ( sekce.sekce_id = clanky.sekce )
WHERE sekce.url = 'ceske-hry'

který vrátí

titulek nazev
Bakterie České hry
Cheese Mouse České hry
Pacman111 České hry

ovšem na webu to tak nefunguje

url: /sekce/ceske-hry

class SekceKontroler extends Kontroler {

public function zpracuj($parametry) {
$mc = new ManazerClanku();
var_dump($mc->vratClankySek­ce($parametry[0]));
}

}

public function vratClankySek­ce($url) {
return DB::dotazVsechny("SE­LECT clanky.titulek, sekce.nazev
FROM clanky
INNER JOIN sekce ON (sekce.sekce_id = clanky.sekce)
WHERE sekce.url = ?",array($url));
}

výsledek

array(3) { [0]=> array(4) { ["titulek"]=> string(8) "Bakterie" [0]=> string(8) "Bakterie" ["nazev"]=> string(11) "České hry" [1]=> string(11) "České hry" } [1]=> array(4) { ["titulek"]=> string(12) "Cheese Mouse" [0]=> string(12) "Cheese Mouse" ["nazev"]=> string(11) "České hry" [1]=> string(11) "České hry" } [2]=> array(4) { ["titulek"]=> string(9) "Pacman111" [0]=> string(9) "Pacman111" ["nazev"]=> string(11) "České hry" [1]=> string(11) "České hry" } }

sice zpět přijdou 3 řádky ovšem atributy jsou uvnitř 2x jednou s číselným indexem a podruhé správě. předem děkuji za rady

 
Odpovědět 9.12.2013 10:14
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na kxmx
David Čápka:

To je správně, abys mohl přistupovat k výsledkům jak pomocí indexu sloupce, tak pomocí jeho názvu.

Nahoru Odpovědět 9.12.2013 10:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
kxmx
Redaktor
Avatar
kxmx:

ahaa tak to se omlouvám, nevim jestli se zbláznil apache nebo jsem to neuložil nebo neaktualizoval, ale furt mi to psalo, že nemám definovaný index "titulek" jediný výstup, který jsem byl schopný získat byl přes var_dump
tak to asi můžeš smazat, už mi to jde a nikomu dalšímu to asi nepomůže

 
Nahoru Odpovědět 9.12.2013 10:29
Avatar
kxmx
Redaktor
Avatar
kxmx:

Tak mam ještě jeden dotaz. Jak se pracuje s wrapperem když mám 2 parametry v dotazu

např zde bych potřeboval zadat si nazev atributu a podminku

public function vratAtribut($a­tribut,$podmin­ka) {
return DB::dotazSamot­ny("SELECT $atribut FROM sekce WHERE url = $podminka");
}

 
Nahoru Odpovědět 9.12.2013 11:06
Avatar
Kit
Redaktor
Avatar
Odpovídá na kxmx
Kit:
return DB::dotazSamotny("SELECT $atribut FROM sekce WHERE $podminka");

Fuj, zase jsem napsal statiku tam, kam nepatří :)

Nahoru Odpovědět 9.12.2013 11:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
kxmx
Redaktor
Avatar
kxmx:

okay jen mi nebylo jasný jestli se to nedá psát obdobně jako při použití jednoho parametru

např.

public function vratAtribut($url) {
        return DB::dotazSamotny("SELECT nazev FROM `sekce` WHERE url = ?", array($url));
    }
 
Nahoru Odpovědět 9.12.2013 12:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na kxmx
Kit:

Copak mohu tušit, co máš v $podminka? Uživatelský vstup určitě ne, viď? Když vidím proměnnou $podminka, očekávám v ní nějaký booleovský výraz, třeba "url = ?"

Nahoru Odpovědět  +1 9.12.2013 12:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.