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

Paginacja rekordów.


Rekomendowane odpowiedzi

Cześć,
 
Mam mały problem. Chciałbym zrobić paginację, która sortuje wyniki z tabeli, która ma inny prefix niż forum.
Tworzę zapytanie za pomocą $this->DB->build, jednak domyślnie IP.Board dodaje do zapytania prefix tabel, pobierany z konfiguracji.
Czy jest możliwość obejścia tego?

 

		$this->DB->build( array(
							'select' => '*',
							'from' => 'm_tabela',
							'order' => 'id ASC',
							'limit'  => array( $this->request['st'], 10 )
							)
						);

 

 

Powyższy kod zamienia na ipb_m_tabela.

 

Odnośnik do komentarza
Udostępnij na innych stronach

No cóż...

Więc tak, otwierasz plik ips_kernel\classDbMysql.php

Szukaj:

	protected function _buildSelect( $get, $table, $where, $add_join=array(), $calcRows=FALSE )
	{

Zamień na:

	protected function _buildSelect( $get, $table, $where, $add_join=array(), $calcRows=FALSE, $prefix = null )
	{

Szukaj:

$_calcRows = ( $calcRows === TRUE ) ? 'SQL_CALC_FOUND_ROWS ' : '';

Dodaj PO:

$prefix = ($prefix == null ? $this->obj['sql_tbl_prefix'] : $prefix); 

Szukaj:

$_tables[] = $this->obj['sql_tbl_prefix'] . $tbl . ' ' . $alias;

Zamień na:

$_tables[] = $prefix . $tbl . ' ' . $alias;

Szukaj:

			else
			{
				$table	= $this->obj['sql_tbl_prefix'] . $table;
			}

Zamień na:

			else
			{
				$table	= $prefix . $table;
			}

Zapisz plik i wyślij.

Otwórz plik ips_kernel\classDb.php

Szukaj:

    public function build( $data )
    {

Zamień na:

    public function build( $data, $prefix = null )
    {

Szukaj:

$this->_buildSelect( $data['select'], $data['from'], isset($data['where']) ? $data['where'] : '', isset( $data['add_join'] ) ? $data['add_join'] : array(), isset( $data['calcRows'] ) ? $data['calcRows'] : '' );

Zamień na:

$this->_buildSelect( $data['select'], $data['from'], isset($data['where']) ? $data['where'] : '', isset( $data['add_join'] ) ? $data['add_join'] : array(), isset( $data['calcRows'] ) ? $data['calcRows'] : '', $prefix );
Zapisz plik i wyślij.

Teraz przy zapytaniu:

		$this->DB->build( array(
							'select' => '*',
							'from' => 'm_tabela',
							'order' => 'id ASC',
							'limit'  => array( $this->request['st'], 10 )
							)
						);

Dodajesz argument do funkcji np:

		$this->DB->build( array(
							'select' => '*',
							'from' => 'm_tabela',
							'order' => 'id ASC',
							'limit'  => array( $this->request['st'], 10 )
							), 'moj_nowy_prefix'
						);
Edytowane przez Macsch15
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Mogłeś to dać w tablicę data, a nie tworzyć nową zmienną:

public function build( $data )
 

Powinno spełniać swoje zadanie.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

To sprawdź jakie wartości przyjmuje st, debuguj. Samo się to nie zrobi. To PHP, nie ma cudów - albo działa albo nie i trzeba szukać fragment po fragmencie powodu.

 

P.s. jak się ma tytuł tego wątku do aktualnie omawianej sprawy? :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

W sumie to jest powiązane właśnie z paginacją, jednak problem mam z zapytaniem do bazy.

St nie przyjmuje żadnej wartości "LIMIT ,10". A gdy zrobione jest przez $this->DB->build, działa jak należy. Ale to mi nie odpowiada, ponieważ chcę posiadać inny prefix tabeli.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę.