Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
A fost lansat Ubuntu 24.04 LTS

Free streaming SkyShowtime

Skoda Fabia 1.0 TSI (110 CP)- 19 ...

Mezina familiei, Merida BigNine
 The Tattooist of Auschwitz (2024)

Se poate recupera numar de telefo...

Upgrade de la MacBook Pro M1 cu 8...

Ce tip de monitor am nevoie pt of...
 Resoftare camera supraveghere

Laptop Gaming

Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...
 Exista vreun plan de terorizare p...

Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024
 

[Script] Paginatie conditionata in CodeIgniter

- - - - -
  • Please log in to reply
2 replies to this topic

#1
republicall

republicall

    Senior Member

  • Grup: Senior Members
  • Posts: 2,211
  • Înscris: 26.02.2008
Paginatia conditionata in CodeIgniter se poate face in doua moduri: folosind variabile de sesiune sau construind un url complicat. Eu va prezint a treia metoda folosind persistenta form-ului.

Pe langa paginatia obisnuita se adauga urmatorii pasi:

In controller:
- se asigura persistenta input-ului
$this->form_validation->set_rules('input_name', 'Nume produs: ', 'trim|xss_clean');

- se citeste numarul paginii dintr-un input hidden setat in prealabil pe partea de javascript
$hidden_page_number = ($this->input->post('hidden_page_number')!==FALSE ? $this->input->post('hidden_page_number') : 1);

- se citesc produsele din baza de date pe baza unui calcul numeric; nu se mai foloseste $this->uri->segment(3) pentru calcularea offset-ului
$result = $this->product_database->read_product_all($data, $config['per_page'], (($hidden_page_number-1)*$config['per_page']));

- pe partea de view nu exista schimbari; link-urile se genereaza folosind pagination library

- pe partea de javascript:
- oprim functionalitatea link-ului de la pagini deoarece vrem sa retrimitem formularul; link-ul ar strica deoarece redirectioneaza la un url fara a trimite si input-urile.
e.preventDefault();

-setam in input-ul hidden valoarea paginii care a fost apasata; $(this) este acel <a href...
$('#hidden_page_number').val( $(this).text().toLowerCase());

-modificam url-ul pentru atributul form action pentru ca pagina sa se modifice ulterior
  var xxx = $('#hidden_page_number').val();
$('#search_result_form').attr("action", "http://localhost/.../" + ((xxx-1)*3));

- si important trimitem formularul simuland apasarea butonului submit si nu cu form.submit();
$("#submit_button").trigger("click");



In acest fel se ocolesc doua probleme: incarcarea url-ului si complicarea codului pe partea de pagination library si evitarea utilizarii variabilelor de sesiune cu algoritmul aferent. Probabil am intrat in altele Posted Image dar poate ca unii vor prefera varianta asta.

Edited by republicall, 02 June 2015 - 23:57.


#2
republicall

republicall

    Senior Member

  • Grup: Senior Members
  • Posts: 2,211
  • Înscris: 26.02.2008
Se pare ca de fapt nici nu trebuiesc atatea modificari, ieri fiind tarziu n-am observat ca aveam link-ul paginii la indemana. Ajunge doar un simplu js:
$(document).on("click", "#pagination>a", function(e){
  e.preventDefault();
  $('#search_result_form').attr("action", $(this).attr("href"));
  $("#submit_button").trigger("click");
});


Deci pe partea de controller si view nu exista nimic in plus fata de varianta simpla de pagination.

#3
republicall

republicall

    Senior Member

  • Grup: Senior Members
  • Posts: 2,211
  • Înscris: 26.02.2008
Cine se pricepe la CI? E ok ce am facut?

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate