Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Witam,

Stanąłem na ciężkim problemie, i w dodatku z JS. Mam tabelę, jej nagłówek wygląda tak:

				<thead class='header'>
				<th scope='col' width='20%'><a style='cursor: pointer' onClick='return ipb.FGClass.sortLogs( 1 )'>{$this->lang->words['fg_transaction_date']}</a></th>
				<th scope='col' width='5%'>{$this->lang->words['fg_transaction_type']}</th>
				<th scope='col' width='25%' colspan='2' style='text-align: center'>{$this->lang->words['fg_transaction_amount']}</th>
				<th scope='col' width='30%' colspan='2' style='text-align: center'><a style='cursor: pointer' onClick='return ipb.FGClass.sortLogs( 2 )'>{$this->lang->words['fg_transaction_who']}</a></th>
				<if test="$isModerator">
				<th scope='col' width='6%' style='text-align: center'><a style='cursor: pointer' onClick='return ipb.FGClass.sortLogs( 3 )'>{$this->lang->words['fg_transaction_ip']}</a></th>
				<th scope='col' width='14%'>{$this->lang->words['fg_transaction_comment']}</th>
				<else />
				<th scope='col' width='23%'>{$this->lang->words['fg_transaction_comment']}</th>
				</if>
			</thead>

Jak widać, zwyczajny nagłówek tabeli, ale różni się wywołaniami Ajax. Samo wywołanie jest w porządku, działa dla odpowiednich akcji. Gdzie leży pies pogrzebany? Zapewne w kodzie JavaScript, którego prezentuję poniżej:

	/*
* Method to sort by user type
*
* @param	int		Sort Key
* @retun	string	New HTML
*/
sortLogs: function( sortType )
{
	/* Change indicator! */
	var sortOrder = ipb.FGClass.sortOrder = ( ipb.FGClass.sortKey == sortType ) ? !ipb.FGClass.sortOrder : 0;

	/* Save sort key! */
	ipb.FGClass.sortKey = sortType;

	/* No client Cache? */
	if( !Object.isArray( ipb.FGClass.cacheTable[ ipb.FGClass.sortKey ] ) )
	{
		/* Get Transacions! */
		var _url = ipb.vars['base_url'] + 'app=fg&module=ajax&secure_key=' + ipb.vars['secure_hash'] + '&section=logs&do=getTransactions';

		new Ajax.Request( _url,
								{
									method: 'post',
									evalJSON: 'force',
									parameters:
									{
										'sortType' 			: ipb.FGClass.sortKey,
										'isModeratorSection'	: ipb.FGClass.isModeratorSection,
										'moderatedMember'		: ipb.FGClass.moderatedMember
									},
									onSuccess: function( returnResponse )
									{
										/* Save to Temp */
										tempArray = returnResponse.responseJSON['transactionsCache'];
									}
								}
						);

		/* Update Cache */
		ipb.FGClass.cacheTable[ ipb.FGClass.sortKey ] = tempArray;
	}

	/* Update Table */
	new Ajax.Updater( 'sortable', ipb.vars['base_url'] + 'app=fg&module=ajax&secure_key=' + ipb.vars['secure_hash'] + '&section=logs&do=getTransactionsHTML',
						{
							method: 'post',
							parameters:
							{
								'transactionsData' : ipb.FGClass.cacheTable[ sortType ]
							}
						}
					);
},

I tu mam pewne problemy. Sortowanie ma działać tylko 3 razy, jeżeli człowiek to moderator skryptu, w innym wypadku tylko dla dwóch sytuacji. I to robi, nie da się zaprzeczyć. W czym rzecz? Cache! Jeżeli ominąłbym go, każde jednorazowe kliknięcie oznaczałoby wywołanie Ajax i dosyć ciężkiego zapytania, pomijam fakt wyliczenia paru danych dla samego zapytania. W każdym bądź razie ta sytuacja otwiera lukę DDoS. Muszę więc w składowe klasy dodawać dane, które są aktualizowane przez klucze kryteriów. Problem w tym, że te dane się dziwnie zapisują.

Inny problem o ten, że nie ma sensu sortować wg. kierunków w MySQL, mając dane z kryterium, wystarczy posortować w JS, ale jak? Jakie kryteria sortowania dać?

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.