Egoblog.cz - Petr Kobelka

PHP Mysql a vychytávka aktivní položky

V krátkém postu Vám ukážu uplatnění základních matematických znalostí jak jednoduše spočítat aktivní/neaktivní položku.


PHP | Komentáře (0) | Shlédnuto 966 × | Vloženo: 15. dubna 2014

Dnes Vám ukážu jak jednoduše a efekticně spočítat příznak aktivní/neaktivní položky.

Dnes a deně se programátoři setkávají se záznamy které chtějí na webu zneaktivnit - tedy schovat. Když máte takové záznamy v databázi, pravděpodobně u nich máte atribut viditelnosti záznamu na webu. Někteří použijí BIT sloupec, jiní použijí CHAR, nebo ENUM (Y,N). Já osobně používám Tinyint. To proto, že operace nad celými čísly jsou výrazně rychlejší, než operace např. nad sloupci typu CHAR.

Viditelnost příspěvku na webu při výpisu PHP z databáze

V modelovém příkladu tedy vyberu z databáze z nějaké tabulky všechny záznamy, které mají atribut is_active (tinyint) = 1. To je jednoduché a nyní již dost teorie a dostáváme se k jádru věci.

Jak jednoduše spočítat viditelnost příspěvku a invertovat ji v PHP

Základem je vytáhnout si aktuální informace o záznamu z databáze. jelikož píšu v Nette budu používat takovou syntaxi, ale jednoduše si z toho dokážete odvodit operace i pro pole.

Tedy do proměnné $oldData uložím původní záznam z databáze.

Někteří z vás nyní vytvoří něco takového

$newActiveSign = 0;
if ($oldData->is_active == 0)
{
  $newActiveSign = 1;
}

Nebo maliko pokročilejší programátoři použijí ternární operátor ? - otazník:

$newActiveSign = $oldData->is_active == 0 ? 1 : 0;

Proč to dělat jednoduše, když to jde složitě

Osobně používám matematiku. Hodně věcí mi usnadní. Můj zapis tedy je

$newActiveSign = abs($oldData->is_active - 1);

Jednoduché a elegantní řešení. proč by měl programátor neustále psát nějaké větvení, když stačí jednoduchá matematická operace. To že toto řešení skutečně funguje si dokážeme následovně:

Základní premisou je, že viditelnost příspěvku nabývá hodnot 0,1.  0 - není vidět, 1 - je vidět. Abs je PHP funkce absolutní hodnoty - tady je "ta" matematika.

Pro případ že $oldData->is_active == 1: //příspěvek je viditelný

$oldData->is_active - 1 = 0

Abs z nuly je nula. //příspěvek je schovaný

Pro případ že $oldData->is_active == 0:  //příspěvek je schovaný

$oldData->is_active - 1 = -1

Abs z -1 je 1. //příspěvek je nyní viditelný

 

 

Podobné články jako "PHP Mysql a vychytávka aktivní položky"

Petr Kobelka | Egoblog.cz | Tvorba www stránek - www.petrkobelka.cz

Petr Kobelka
Autor je zkušeným web developerem a programátorem s více než 10 letými zkušenostmi. Pracuje jako programátor pro známou Olomouckou společnost zabývající se tvorbou internetových a intranetových řešení. Spolu se zaměstnáním pracuje na volné noze a zabývá se tvorbou internetových stránek. Ve volném čase rád fotí, jezdí na kole, plave a cestuje.

Komentáře

E-mail je potřeba pouze pro vygenerování Gravataru!

Oups, žádné komentáře? Buďtě první !!!

Blog píše Petr Kobelka

Petr Kobelka - egoblog.cz

Žádám všechny, kteří mají zájem vkládat komentáře, aby se řídili pravidly NETikety. Komentáře, porušující tato pravidla můžou být bez varování smazány.