tablesort_sql probléma

Bálint képe

Sziasztok!

Sajnos újabb problémába ütköztem. Az egyik oldalamon szeretném kilistázni a felhasználókat. Tudok keresni (többek közt) a nevükben. A tablesort_sql-lel viszont meggyűlik a bajom. Konkrétan, ha a fejléc feliratára kattintok, akkor "elvesznek" a formból kapott adatok, azaz, ha pl. szűrtem valamire, és ezt rendeztem, akkor már nem a szűrt adatokat rendezi, hanem ismét az egészet. (Alapértelmezett, hogy ha nincs megadva szűrési feltétel, akkor az összes usert látom.)
Jónéhány embernek előjött ez a probléma, egyetlen igazi megoldásnak tűnhet(ne) ez:
http://drupal.org/node/91603

Itt azt írják, ez megoldja a problémát. De sajnos nem. Ugyanazt tapasztalom, mint eddig.
Tud valaki segíteni?

Pasqualle képe

konkret kod kellene, hogy hogyan szursz a tablan, es hogyan (milyen sql select-el) hasznalod a tablesort_sql fuggvenyt..

0
0
Bálint képe

<?php
//keresési minta:
$pattern=$form_values['search_pattern'];
...
//táblázat fejlécét itt adom meg:
$header=array(...);
//a lekérdezésem:
$query= "SELECT u.uid, u.name, u.mail, v.value FROM users u LEFT JOIN " .
			"(profile_values v, profile_fields f) " .
			"ON (u.uid=v.uid AND v.fid=f.fid) " .
			"WHERE u.name LIKE '%$pattern%' OR u.mail LIKE '%$pattern%' " .
			"OR v.value LIKE '%$pattern%' AND u.uid=v.uid";
$queryResult = db_query($query. tablesort_sql($header));	
 	...
 
while ($object = db_fetch_object($queryResult)) {    		
    	//itt áll össze a táblázat
        ...
}
...
?>

Körülbelül ennyi lenne a releváns kód. De a táblázat jó, meg minden, a fejléc is jól áll össze. A probléma azzal van, mikor rákattintok valamelyik fejléc-feliratra, akkor újratölti az egész oldalt, és nem marad meg a szűrés eredménye, és nem azt rendezi, hanem az egészet. Ha nincs szűrés, nincs is semmi gondom, működik szépen.
Meg persze kipróbáltam simán form nélkül, hogy tudok-e rendezhető táblázatot létrehozni, és úgy ment a dolog...
0
0
Pasqualle képe

ez a hook_submit-ban van?

szurd be ezt a kodot a $pattern ertekadas moge, ha a fejlecre kattintas utan megjelenik ez az uzenet, akkor nyilvanvalo a hiba..

if (empty($pattern)) {
  drupal_set_message('ez igy nem jo');
}
0
0
Bálint képe

Nem ez a baj, mondtam, hogy teljesen jól működik a szűrés! Csak a rendezéssel van bajom.

0
0
Pasqualle képe

de a rendezes utan mar nem mukodik jol a szures. igaz?

azzal, hogy rakattintasz a rendezesre, ujratoltod az oldalt, a form_values-ben mar nem lesz semmi..

0
0
Bálint képe

Igen, pontosan ez történik! De ezt eddig is tudtam! Erre kellene valamilyen megoldás!
Van valamilyen ötleted?

0
0
Pasqualle képe

nezd meg a peldat a watchdog modulban.

$_SESSION['watchdog_overview_filter'] = $form_values['filter'];

a $fom_values erteket lementi a $_SESSION valtozoba, es ezt hasznalja szuronek a tablazat megjelenitesenel..
0
0
Bálint képe

Köszönöm, ez még jónak is tűnik. De azt a kérést kaptam, hogy ne használjak SESSION-t. :( Úgyhogy mást kell kitalálnom.

0
0
pp képe

A webes alkalmazás emlékezet nélküli ezért valahova (session vagy url) bele kell tenned azokat az adatokat amikre szükséged van.

Az url-be úgy teheted bele ha
1. átírod a rendező linkeket. Ehhez a sminkedbe meg kell valósítani a theme_table-t( http://api.drupal.org/api/function/theme_table/5 ) és a $cell = tablesort_header($cell, $header, $ts); sor után hozzá kell még adnod a linkhez a Te paramétereidet is. Ezt egy egyszerű regexp-el megteheted.

2. az útvonalba belekódolod a keresési paramétereket. (http://kerekparpiac.hu/ -n láthatsz erre példát, de rendezni nem lehet, mert végül azt már nem kérték, de az is menne, ha kéne.)

Session-ba pedig nem érdemes beletenni, mert lehet, hogy a júzer nem egy böngészőpéldányt futtat, hanem kettőt, esetleg többet. És akkor aztán vannagykavar.
Session felhasználó állapotát tárolja nem a böngészés állapotát(azt az url tárolja). Ezért erre használni mondjuk úgy - és most igyekszem maximálisan visszafogni magamat - nem ajánlott.

pp

0
0
Bálint képe

Nagyon köszönöm, sikerült megoldanom.

0
0