Vyhledávání v databázi MySQL
- plasmo
- Člen | 66
Ahoj,
narazil jsem na drobný problém, jenž mi nejde vyřešit. V klasickém PHP to
je bez problémů, ale pokulhávám s použitím Nette.
O co tedy jde, potřebuji vyrobit fultextové vyhledávání z databáze. V presenteru mám klasicky vytvořený formulář, ale nevím jak dál. Defakto potřebuju z formuláře předat hodnotu pole hledany výraz presenteru seacrh akci vysledek, modelem nacist data a vypsat je šabloně.
Dále jak v DIBI nejlépe zapsat MySQL dotaz pro fultext?
V případě kdybych chtěl hledání AJAXOVé, tak že se vásledek začne zobrazovat po začátku psaní, defakto to co má teď google. Jak na to? Děkuji za rady .
- plasmo
- Člen | 66
22 napsal(a):
co tohle?
https://componette.org/search/?…
Tak na to se podívám. Hlavně bych potřeboval poradit s předešlou částí mého příspěvku.
- plasmo
- Člen | 66
22 napsal(a):
napřed se na to podívej, je tam i dotaz v DIBI, jinak v tom žádný velký rozdíl mezi PHP a Nette nehledej. Nebo to ber jako inspiraci pro vlastní suggest input.
Dota z v DIBI tam vidím, ale to není fultext :( Zkoušel jsem Dibi::Query a zapsat Select from match … ale neprošlo to :(
Editoval plasmo (7. 10. 2010 16:35)
- 22
- Člen | 1478
Tak SQL dotaz do DB si musíš udělat podle sebe. DIBI ho za tebe
nevymyslí.
https://dibiphp.com/
Editoval 22 (7. 10. 2010 16:39)
- plasmo
- Člen | 66
na1k napsal(a):
Ach jo, jak už jsem psal zkoušel jsem to a přes DIBI mi to neprošlo … tak jsem myslel že na to má DIBI svůj vlastní příkaz …
Jak mám přesměrovat ten formuláře na presenter? Konkrétně jen předat hodnotu políčka hledaný výraz metodě presenteru search? Děkuji
- arron
- Člen | 464
No tak chlapi, vzdyt je to v tom vlakne v podstate napsane…
public function formSubmitted(Form $form)
{
//predpokladam, ze jsem v nejakem presenteru
$this->redirect('Foo:bar', array('search' => $form->values['search']));
$this->terminate();
}
No a pak v prezenteru neco jako:
class FooPresenter extends Presenter {
{
private $searchResults;
public function actionBar($search) {
//provedu nejake vyhledani a vysledky si ulozim do $this->searchResults
}
public function renderBar() {
$this->template->results = $this->searchResults;
}
}
Ale tak tohle snad napisete uz kazdy ne, v tom neni zadna veda…
Editoval arron (7. 10. 2010 22:43)
- arron
- Člen | 464
Tak otazka znela, jak preposlu data z formulare na akci presenteru…presne takhle…co je na tom tak nepochopitelneho?
Kdyz potrebuju zpracovat vsechna data z formulare (napr. ulozit neco do databaze), tak je asi nejlepsi to udelat primo v submit metode. V tomhle konkretnim pripade mi osobne prijde vyhodny tento zpusob. Taky nerikam, ze je to jedine mozne reseni.
Editoval arron (8. 10. 2010 0:23)
- PetrP
- Člen | 587
arron napsal(a):
Udelal bych to tak, ze v obsluzne metode toho formulare bych zavolal redirect nebo forward na presenter a akci, ktera ma provadet samotne vyhledani a zobrazeni vysledku. Jako parametr bych si predal hledanou frazi.
OT: forward by tady byl nevhodnej, protože by se uživateli nezměnila url. Takže by F5 znovu zpracovával formulař.