Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Losi (nebo kdokoliv :-)), pomoz ještě s jedním problémem, prosím...

Při výpisu poloížek mám definovánu funkci, která zajistí že pokud je položek moc, tak třeba po deseti (nebo po kolika si určím), udělá link na další stránku.
Funkce vypadá takhle:

function makepagenav($start,$count,$total,$range=0,$link=""){
	global $locale;
	if ($link == "") $link = FUSION_SELF."?";
	$res="";
	$pg_cnt=ceil($total / $count);
	if ($pg_cnt > 1) {
		$idx_back = $start - $count;
		$idx_next = $start + $count;
		$cur_page=ceil(($start + 1) / $count);
		$res.="<table cellspacing='1' cellpadding='1' border='0' class='tbl-border'>\n<tr>\n";
		$res.="<td class='tbl2'><span class='small'>".$locale['052']."$cur_page".$locale['053']."$pg_cnt</span></td>\n";
		if ($idx_back >= 0) {
			if ($cur_page > ($range + 1)) $res.="<td class='tbl2'><a class='small' href='$link"."rowstart=0'>&lt;&lt;</a></td>\n";
			$res.="<td class='tbl2'><a class='small' href='$link"."rowstart=$idx_back'>&lt;</a></td>\n";
		}
		$idx_fst=max($cur_page - $range, 1);
		$idx_lst=min($cur_page + $range, $pg_cnt);
		if ($range==0) {
			$idx_fst = 1;
			$idx_lst=$pg_cnt;
		}
		for($i=$idx_fst;$i<=$idx_lst;$i++) {
			$offset_page=($i - 1) * $count;
			if ($i==$cur_page) {
				$res.="<td class='tbl1'><span class='small'><b>$i</b></span></td>\n";
			} else {
				$res.="<td class='tbl1'><a class='small' href='$link"."rowstart=$offset_page'>$i</a></td>\n";
			}
		}
		if ($idx_next < $total) {
			$res.="<td class='tbl2'><a class='small' href='$link"."rowstart=$idx_next'>&gt;</a></td>\n";
			if ($cur_page < ($pg_cnt - $range)) $res.="<td class='tbl2'><a class='small' href='$link"."rowstart=".($pg_cnt-1)*$count."'>&gt;&gt;</a></td>\n";
		}
		$res.="</tr>\n</table>\n";
	return $res;
}

Pro hledání fulltextového výrazu to funguje bez problémů takhle:

$items_per_page = 10;
if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;

volání databáze obsahuje

LIMIT $rowstart,$items_per_page

a samotná navigace pak vypadá takhle:

if ($rows_entries > $items_per_page) echo"<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,$items_per_page,$rows_entries,3,"?&volltext=$volltext&")."\n</div>\n";

Mám ale problém, jak zadat adresu pro navigaci v případě, že nepoužívám hledání výrazu, který vepíšu, ale když potřebuju seřadit výsledky hledání podle nějakého kritéria z rozbalovacího menu - tzn <select></select>. Zkoušel jsem všechny možné varianty toho linku ve vlastní navigaci, ale odkaz na další stránku s výsledky nefunguje...

Nedokázal bys určit, jak má ta adresa, tedy to, co nahradí "?&volltext=$volltext&" vypadat?

Předmět Autor Datum
Veď tam by nemal byť žiaden problém - pošleš si tam navyše tú hodnotu z rozbaľovacieho menu, aby si…
los 27.09.2007 10:12
los
Pomaleji, prosím... :)) Formulář, ze kterého posílám ta data se jmenuje 'selectform', rozbalovací me…
Drbo 05.10.2007 20:44
Drbo
Řekl bych, že $sort bude obsahovat zvolenou hodnotu select_option. A význam urlencode si snad můžeš…
host 05.10.2007 21:37
host
OK, urlencode jsem si mohl najít, sorry... navíc nevím, kam to urlencode vložit, ale myslím, že to n…
Drbo 05.10.2007 22:05
Drbo
A předají se ty parametry? Metodou $_GET? Zkoušel jsi je vypsat pomocí echo?
host 05.10.2007 22:10
host
Teď to píšu... :-) EDIT: Ale předchozí příspěvek už nešel upravit... Přidal jsem tam tohle: EDIT -…
Drbo 05.10.2007 22:12
Drbo
A používaš tie parametre v PHP skripte? Usporiadavaš tie výsledky podľa nich? Ak si ich tam iba posi…
los 08.10.2007 00:45
los
Řadím to takhle: elseif ($select_option == "1") { $items_per_page = 10; if (!isset($rowstart) || !…
Drbo 08.10.2007 01:36
Drbo
Dostane sa to do tej podmienky? Tie premenné obsahujú to, čo majú? (Je zapnuté register_globals?) Ke…
los 08.10.2007 08:31
los
Nevím, jestli odpovím na to, na co se ptáš, ale zkusím :-) Dostane sa to do tej podmienky? Snad ano… poslední
Drbo 08.10.2007 09:01
Drbo

Veď tam by nemal byť žiaden problém - pošleš si tam navyše tú hodnotu z rozbaľovacieho menu, aby si na tej stránke vedel, podľa čoho to máš usporiadať.

Napr. "?volltext=$volltext&sort=$sort" (samozrejme inicializuješ premenné volltext a sort podľa zvolených hodnôt, pričom použiješ urlencode).

Pomaleji, prosím... :)) Formulář, ze kterého posílám ta data se jmenuje 'selectform', rozbalovací menu v něm se jmenuje 'select_option', odesílací tlačítko se jmenuje 'select1'. 1) Co z toho je to tvé 'sort'? 2) Kdybych chtěl parafrázovat majora Terazkyho, zeptal bych se, co si představuješ pod slovem "urlencode"... Já jsem vážně laik...:-|

OK, urlencode jsem si mohl najít, sorry... navíc nevím, kam to urlencode vložit, ale myslím, že to nepotřebuji, protože všechny hodnoty select_option jsou pouze jednociferná čísla...
Nicméně klíčový problém zůstává - postup nefunguje, druhá stránka se zobrazí jako by v té adrese za '?' nebylo nic...

Teď to píšu... :-)

EDIT:
Ale předchozí příspěvek už nešel upravit... Přidal jsem tam tohle:

EDIT - teď jsem se pokusil ještě o jednu věc - změnil jsem ve formuláři method z 'post' na 'get', abych viděl, jak přesně vypadá ta syntaxe... vypadá takhle:

... search.php?select_option=1&select1=Se%F8adit&select_option2=0&fulltext=&rowstart=10

Zkopíroval jsem to takhle do toho odkazu (samozřejmě bez 'rowstart=10', to přidává ta funkce makePageNav, ale ani takhle natvrdo nakódováno to nefunguje...

Řadím to takhle:

	elseif ($select_option == "1")
	    {
        $items_per_page = 10;
        if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
        $result = dbquery("SELECT * FROM ".DB_PREFIX."dbmovies ORDER BY movie_title ASC LIMIT $rowstart,$items_per_page");
        echo "<table width='100%' class='tbl-border' cellpadding='0' cellspacing='1'>";
        echo "<tr><td align='center' class='tbl2'>";
        echo "<strong>".$locale['dbm_042']."</strong>";
        echo "</td></tr>";
        echo "</table>";
        tablebreak();
        $rows_entries = dbcount("(movie_id)", "dbmovies");
        echo "<table width='100%' class='tbl-border' cellpadding='0' cellspacing='1'>";
	    while ($data = dbarray($result))
		    {
            movieitem(d);
		    }
        echo "</table>";
// Navigace
	    if ($rows_entries > $items_per_page) echo"<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,$items_per_page,$rows_entries,3,"?select_option=1&select_option2=0&fulltext=&")."\n</div>\n";
	    }

Dostane sa to do tej podmienky?
Tie premenné obsahujú to, čo majú? (Je zapnuté register_globals?)
Keď si zobrazíš SQL príkaz, ktorý chceš vykonať, obsahuje to, čo má?
Keď vykonáš ten SQL príkaz v PHPMyAdmin, vykoná sa?
Máš zapnuté chybové hlásenia?

(Otázky sú zoradené podľa dôležitosti.)

Nevím, jestli odpovím na to, na co se ptáš, ale zkusím :-)

Dostane sa to do tej podmienky?
Snad ano, všechno řadí se to po deseti jak má, zobrazí to tu navigaci, jen při kliknutí na link v navigaci se to tváří, jako by za otazníkem v linku nic nebylo.

Tie premenné obsahujú to, čo majú? (Je zapnuté register_globals?)
Předpokládám, že ano, když to funguje pro hledání ve fulltextu, který má stejnou syntaxi pro navigaci, jen to řadí podle jiného kritéria - respektive tady se stala zvláštní věc - v rámci experimentování jsem z toho odkazu vyndal & po otazníku - přestalo to fungovat a nefunguje to, ani když jsem ho tam vrátil ::) ???

Keď si zobrazíš SQL príkaz, ktorý chceš vykonať, obsahuje to, čo má?
Keď vykonáš ten SQL príkaz v PHPMyAdmin, vykoná sa?
Máš zapnuté chybové hlásenia?
Teď už se trochu ztrácím... Pomohlo by , kdybych ti někam poslal komplet ten skript? Jedná se o rozšíření pro redakční systém php-fusion je to celkem asi deset souborů, ale pro tuhle funkci jsou, myslím, klíčové dva - jeden, který obsahuje funkci pro zobrazení tabulky na vyhledávání a druhý, který obsahuje skript pro vykonání toho příkazu a vyhledávání... nicméně mám to komplet hezky zabalené a mohu ti to dát do mailu který máš tady... Já tomu vážně moc nerozumím a jediné, čeho jsem schopen je aspoň rámcově odhadnout, co dělá skript, který si někde najdu a pak různé kousky zkombinovat tak, aby to dělalo co má... Nebo ti můžu dát do mailu ftp přístup na můj testovací web, kde se to pokouším odladit, to by bylo možná ještě jednodušší...

Zpět do poradny Odpovědět na původní otázku Nahoru