Autor Zpráva
wiz
Profil *
Dobrý den, potřebuji na web aplikaci, která vyhodnotí zadané informace a vrátí nejvhodnější výsledek. Například uživatel bude muset vyplnit otázky:

a,
1, Světlé barvy
2, Tmavé barvy

b,
1, Teplé barvy
2, Studené barvy

Pokud uživatel vybere a2, b1, tak aplikace mu vrátí "oranžová, červená, atd.", ale pokud zadá a2, b2, dostane zpět "modrá, fialová, atd". Aplikace bude obsahovat více otázek, takže potřebuji aby uživatel dostal vždy nejbližší výsledek (například pokud zadá a1, b1 a žádná světlá, teplá barva nebudá přidána, tak dostane nejbližší výsledek "oranžová". Příklad který jsem uvedl je jen popis. Děkuji
BuGeR
Profil
http://cz2.php.net/manual/en/control-structures.if.php
Tori
Profil
wiz:
například pokud zadá a1, b1 a žádná světlá, teplá barva nebudá přidána, tak dostane nejbližší výsledek "oranžová".
Takže jednotlivá zadání mají různou prioritu? Podle čeho se bude rozhodovat, když není k dispozici kombinace a1+b1, jestli se má použít a2+b1 nebo a1+b2?
Jinak hledáte konkrétní aplikaci, nebo chcete názor na aspoň zčásti vymyšlený způsob řešení, nebo to chcete od někoho napsat celé? Z [#1] to není moc jasné.

edit: [#4] Aha, zajímavé - odkázaná stránka mi připadá spíš jako stromová struktura - na každém uzlu se rozhoduje, kterou větví se bude pokračovat, případně se (pokud větev chybí) přejde na jiný (přednastavený) uzel. Podle zmíněné procentuální shody jsem si představila spíš něco jako klíč rostlin, (100% rozlišovacích znaků ukazuje na mrkev, 82% (=neshoda barvy) na petržel apod.). (keďže nemám nápad na řešení, tak jsem to radši dopsala sem, než nový post)
wiz
Profil *
Děkuji, ale větvení umím, omlouvám se za špatný popis. Mě spíše zajímalo, jak najdu nejvhodnější výsledek pokud aplikace bude obsahovat například 40 otázek, takže v databázi nebudu mít nic co by úplně odpovídalo na 100%, takže bych chtěl zobrazit podle nejvyšší procentuální shody.
wiz
Profil *
[#3] Tori Měl jsem na mysli něco takového: http://www.zegeniestudios.net/ldc/index.php?lang=cz
WMPopi
Profil
wiz:
Asi bych to řešil tabulkou se seznamem barev, ve sloupcích bych měl jednotlivé podmínky (teplá, světlá,..) a do těch bych vyplňoval na kolik procent tomu ta daná barva odpovídá.

barva, světlá, tmavá, teplá, studená
---
červená, 30, 70, 100, 0

Z toho pak jednoduše vytáhneš podle relevance.

Pokud by bylo podmínek víc nebo by se měly přidávat, rěšil bych to tabulkou s barvama a tabulkou s pravidly.
wiz
Profil *
Děkuji za odpovědi, ale není to přesně to co hledám. Problém je v tom, že když jsem pokládal otázku, neměl jsem jí pořádně promyšlenou, takže otázka by měla znít nějak takto.

Mám tabulku, ve která jsou uložené informace co která věc umí:
---------------------------------------------------------------
| id | nazev | volat | kalendar | video | audio | 3G |
|-------------------------------------------------------------|
| 1 | Tel 1 | 1 | 1 | 1 | 0 | 0 |
| 2 | Tel 2 | 1 | 1 | 0 | 0 | 0 |
| 3 | Tel 3 | 1 | 0 | 0 | 0 | 0 |
--------------------------------------------------------------

Pokud uživatel bude chtít najít telefon, který umí volat, kalendar, audio a video, systém vybere a setřídí podle procentuální shody.

Výsledek by měl vypadat takto:
1, Tel 1 - 75%
2, Tel 2 - 50%
3, Tel 3 - 25%

Chci, ale aby jsem do databáze mohl libovolně přidávat nový produkt a aplikace s ním počítala (aby aplikace byla dynamická). Děkuji všem za pomoc
Tori
Profil
wiz:
Šlo by to celkem dobře s datovým typem BIT. Přidáte si navíc do tabulky sloupeček, kde budou všechny schopnosti telefonu dohromady jako bitmask (Tel 1 = 11100, Tel 2 = 11000 atd.). Při vyhledávání si přeložíte výběr "volat=1, kalendář=1,audio=1,video=1,3G=0" jako 11110 a převedete na celé číslo (30). Pak můžete použít dotaz
SELECT id, nazev, BIT_COUNT(bitmask & 30) AS 'shoda' FROM tabulka ORDER BY shoda DESC, nazev
Ale nevím, nakolik je MySQL schopné ("schopná"? Jakého je to vlastně rodu?) využít indexy při takovém dotazu, nebo jak pomalé to bude u např. stovek/tisíců řádků.
wiz
Profil *
Moc Vám děkuji. Databáze by měla obsahovat okolo 200 řádků. Mimochodem, co znamená číslo 30 v MySQL dotazu? Zkusím to udělat Vašim způsobem, pokud ale někoho napadlo ještě nějaké řešení a napíše ho sem tak budu jedině rád.
Tori
Profil
wiz:
co znamená číslo 30 v MySQL dotazu
Zvýraznila jsem. Zkusila jsem použít
b'11110' 
aby se nemuselo číslo převádět do desítkové soustavy, ale vyhazovalo to chybu.
wiz
Profil *
Aha, takže teď už to opravdu celé chápu. Ještě jednou Vám děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0