Pager gondok

Sweetchuck képe

Sziasztok (Szia Hojtsy Gábor :) )

Tartalmat oldalakra bontva jelenítek meg. Ez müködik is rendesen a rendezéssel együtt.

$header = array(
array('data'=> ''),
array('data'=> t('Caption1'), 'field'=>'myfield1')
array('data'=> t('Caption2'), 'field'=>'myfield2'),
....
);
$pager_select_sql='SELECT * FROM...';
$pager_select_sql .= tablesort_sql($header);

Ha a cimkékre kattintok akkor rendezi ahogy kell, de a problémám a következő:
Erre a listázó oldalra el lehet jutni sima linkről illetve ürlapról. Mind a két módszer átad egy azonosítót, hogy mit kell listázni. Ha linkről megyek akkor semmi gond, de ha ürlapról akkor nem jók a linkek amik az előző/következő oldalakra mutatnak illetve a fejlécen a rendező linkek sem jók.
Probáltam már azt csinálni hogy:
If(IsSet($edit['listazando'])){
$_GET['listazando']=$edit['listazando'];
}
de nem jó így sem.

Hogy lehet ezt megoldani?

Továbbá szeretném még azt is, hogy ne csak 1 mezőt lehessen megadni rendezési feltételnek.
Az nem baj ha nincsen hozzá az oldalon kezelőfelület, csak ha felhasználó rányomott az "Egyik" oszlopra akkor az "Egyik" és a "Másik" legyen a rendezés iránya.
(ORDER BY egyik ASC, masik ASC)

Most csak ennyi :)

Már letölttötem egy csomó modult, de a forráskódakat nézegetve sem találtam megoldást. :-/

Sweetchuck képe

$pager_select_sql .= tablesort_sql($header);
Switch($_GET['order']){
	Case $cimkek['irany']:$pager_select_sql.=', kuldesideje '.StrToUpper($_GET['sort']);Break;
	Case $cimkek['partner']:$pager_select_sql.=', kuldesideje '.StrToUpper($_GET['sort']);Break;
}//Switch

Gondoltam hogy ezt lesz egyszerübb.

0
0
Hojtsy Gábor képe

A pager valóban a GET változókat őrzi meg, ha feltöltöd a GET változókba az űrlapból jött POST változókat, akkor jó lesz, de pontosan olyan indexekkel kellene megtenni a másolást.

0
0
Sweetchuck képe

A témanyító hozzászólásomban említettem hogy már probáltam
Feltölteni a $_GET tömböt az ürlapról jött adatokkal
If(IsSet($edit['listazando'])){
$_GET['listazando']=$edit['listazando'];
}

a hook_page függvény eleje táján történik mindez
még mindenféle pager, theme és egyéb dolgok elött

0
0
Hojtsy Gábor képe

Úgy tűnik nem ment át jól, az $edit Drupalban jellemzően POST['edit'] alapján jön, te pedig ennek egy indexét GET['index']-be teszed be, tehát POST['edit']['listazando']-bol csinalsz GET['listazandot']. Hát én nem erről beszéltem. Úgy kellene átadni, ahogy a program várja, az, hogy hogyan az eddigiekből nem derült ki, meg kell nézni.

0
0
Sweetchuck képe

De már a kérdés feltevésénél is írtam hogy rendesen belerakom (figyelve az indexekre), a $GET változóba az ürlapról jött cuccot.

A pager valóban a GET változókat őrzi meg, ha feltöltöd a GET változókba az űrlapból jött POST változókat, akkor jó lesz, de pontosan olyan indexekkel kellene megtenni a másolást.


az $edit Drupalban jellemzően POST['edit'] alapján jön, te pedig ennek egy indexét GET['index']-be teszed be, tehát POST['edit']['listazando']-bol csinalsz GET['listazandot']. Hát én nem erről beszéltem.

amúgy pedig itt a megoldás
$_SERVER["REQUEST_METHOD"]='GET';
sajnos elég kézenfekő ahoz hogy szégyeljem magam amiért nem jutott eszembe már rögtön az elején.

0
0
Hojtsy Gábor képe

Van magamat vezettem félre, vagy egymás mellett beszéltünk el. $edit = $_POST['edit'] szokott lenni, és te $_GET['valami'] = $edit['valami']-t emlegettél folyamatosan, ami így nem őrzi meg az edit tömböt, hanem abból kitör. Ezt nem összeegyeztethetőnek gondoltam, bár az sem volt egyértelmű, hogy hol és mi használja majd fel, úgyhogy... Azért örülök, hogy sikerült felfedezni a megoldást :)

0
0
Sweetchuck képe

Jó írányba indultam el az elején azzal amikor ezt csináltam:
$_GET['valami'] = $edit['valami']
hiszen a pager a $_GET tömbből készíti a linket és ezért kell az ürlap adatokat berakni a $_GET-be.
Azt nem írtam hogy az én $edit -em honnan van, de erősen gyanítható volt, hogy a $_POST['edit'] -tel megegyezik.
Csak zt felejetettem ki az egészből hogy a pager csak akkor készíti el a linket ha a
$_SERVER["REQUEST_METHOD"]=='GET'

-------------

$edit = $_POST['edit'];
....
$_SERVER["REQUEST_METHOD"]='GET';
$_GET['ListazandoMappa']=$edit['ListazandoMappa'];
 
$sql .= tablesort_sql($header);
If(IsSet($_GET['order'])){
  If(!IsSet($_GET['sort'])){$_GET['sort']='ASC';}
    Switch($_GET['order']){
      Case $cimkek['partner']:$sql.=', masikmezo '.StrToUpper($_GET['sort']);Break;
    }//Switch
  }
$rekordok=pager_query($sql, ......);
 
theme('pager'.....);
$out .= theme('table', $header, $tableRows);

Csak azért írtam ide, hogy ha valaki veszi a fáratságot, és pont ezt keresi mert neki is ez a hasfájása akkor megtalálja.

Itt jegyezném meg hogy a
theme('table'...);
theme('pager'...);
és társairól nem sok leírásvan. Használati javaslat vagy ilyesmi

0
0
Hojtsy Gábor képe

A theme('table', ...) és társai a theme_table() alapfüggvényből indulnak ki, annak a dokumentációját kell nézni, annak pedig van rendesen.

0
0
Sweetchuck képe

elképzelhető hogy valahol mélyen nem a $_GET tömböt olvassa, hanem a QUERY_STRING -et

0
0