Vyhledávání $publish = [‚0‘ =>‚Není skladem‘, ‚1‘ ⇒ ‚Skladem‘];

vanaveno
Člen | 144
+
0
-

Ahojte,
řeším takový nejspíše banální problém. Mám vytvořený filtrační zařízení, v databázi rozdělený jako 0 nepublikovaný 1 publikovaný. Když vyberu 1 vyfiltrují se mi produkty, které jsou publikované, ale když vyberu 0 vyberou se mi obojí, kde dělám chybu.

$publish = [‚0‘ =>‚Není skladem‘, ‚1‘ ⇒ ‚Skladem‘];

//ukázka část funkce

public function Search($publish = NULL, …)

tabulka v databázi publish tinyint(1)

Díky za pomoc

Editoval vanaveno (4. 3. 2020 17:18)

Felix
Nette Core | 1247
+
+1
-

Moc to podle popisku nepoznam, ale nepreklada se ti 0 na neco jineho? Treba na false nebo null? Jenom hadam, potreboval bych vetsi popisek. Napr. jaka verze Nette, jaka DB, kod z modelove tridy.

vanaveno
Člen | 144
+
0
-

Taky mně to napadlo, že se 0 překládá na null, ve funkci mám $publish = null, filtrační zařízení je nastaveno, tak že tam mám více hodnot, jak $text = null, $category = null, protože občas vyberu jen například kategorii, někdy kategorii a publikování a ve filtraci mám podmínky if($text){…} if($category){…} if($publish) {…}.

Felix napsal(a):

Moc to podle popisku nepoznam, ale nepreklada se ti 0 na neco jineho? Treba na false nebo null? Jenom hadam, potreboval bych vetsi popisek. Napr. jaka verze Nette, jaka DB, kod z modelove tridy.

Editoval vanaveno (4. 3. 2020 17:38)

Michal Hlávka
Člen | 190
+
+3
-

Podivej se jakej dotaz ti jde do databaze.

vanaveno
Člen | 144
+
0
-
<?php
    //Category Filter
    public function CategoryFilter($supId= NULL, $published = NULL)
    {
		// ZDE MI TO HODÍ 0
        bdump($published);
        $selection = $this->getCategories();
        if($supId)
        {
            $selection = $selection->where('supId2', $supId);
            $this->supId = $supId;
        }
        if($published)
        {
			// ZDE UŽ MI NIC BDUMP NEUKAZUJE
            bdump($published);
            $selection = $selection->where('published', $published);
            $this->published = $published;
        }
        return $selection;
    }

?>
David Matějka
Moderator | 6445
+
+3
-

no ten if($published) se pro hodnotu 0 vyhodnoti jako false. asi to chces kontrolovat, ze to neni null pomoci if($published !== null)

vanaveno
Člen | 144
+
0
-

David Matějka napsal(a):

no ten if($published) se pro hodnotu 0 vyhodnoti jako false. asi to chces kontrolovat, ze to neni null pomoci if($published !== null)

Super :) Díky

CZechBoY
Člen | 3608
+
+1
-

Doporučuju si přečíst https://www.php.net/…parisons.php a potom doporučuju v podmínkách používat vždy jen booleany (např. $published !== null, count($abc) > 0, atd.).

Editoval CZechBoY (5. 3. 2020 19:32)