Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

codeigniter+paginacija+ajax?

[es] :: PHP :: PHP za početnike :: codeigniter+paginacija+ajax?

[ Pregleda: 1643 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

despotbg

Član broj: 63968
Poruke: 431
*.dynamic.sbb.rs.



+15 Profil

icon codeigniter+paginacija+ajax?28.02.2012. u 17:53 - pre 147 meseci
Naime
Uradio sam deo sajta na kome se prikazuju komentari. E sad kada se izbace svi komentari sve radi odlicno, i paginacija izlistava lepo 6 po 6 i dovlaci ih tako. medjutim hteo sam da napravim pretragu komentara tako sto ce iz <select> polja da se odabere odredjeni korisnik i da izlista sve poruke samo od njega. U tom trenutku imam dve greske <div> u kome su komentari se prepolovi u sirinu. Naime <div class="cimments" > se odradi ponovo i prepolovi drugi put polje za komentare. Drugi problem je to sto kada odaberem ime i kada izlista po imenu ako iskoristim paginaciju on vraca sve rezultate a ne samo ono sto je uradjeno pretragom.

Da bi vam bilo jasnije sta je problem pogledajte ovde na sajtu kako to izgleda http://despotbg.totalh.com/messages/index
Odaberite ime test1 jer ima dovoljno unosa da radi paginaciju.

VIEW
Code:

<script type="text/javascript">
function showUser(str)
{
*provera browsera odradjena
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","<?php echo base_url(); ?>messages/index?name="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div class="comments" id="txtHint">
<div>
Prikazi poruke od:
    <form>
    <select class="filter" onchange="showUser(this.value)">
        <option value="">Odaberite ime:</option>
        <?php while ($row = mysql_fetch_assoc($just_name)) {
        echo '<option value=' . $row['name'] . '>' . $row['name'] . '</option>';
                } ?>
    </select>
    </form>
    </div>
<br />
    <div>
        <?php
        echo '<br>';
        foreach ($result->result() as $post):
           // echo $post->id, '<br />';
             echo $post->text . "<hr>";
              echo '<font color="blue"> Ime: </font>' . $post->name . ' ';
               echo '<font color="blue"> Vrsta: </font>' . $post->selection, ' ';
            echo '<font color="blue"> Vreme: </font>' . $post->time;
            echo '<br>';
           echo '<br>';
        endforeach;
        echo '<br/>';
        echo $this->jquery_pagination->create_links();
        echo '<br/>';

Controller
Code:

public function index () {
       //$name=NULL;
       if(isset($_GET["name"])){
        $name=$_GET["name"];
       }else{
           $name=NULL;
       }
           $this->load->model('messages_model');
           $per_page = 6;
           $total = $this->messages_model->count_posts($name);
           $data['all_names'] = $this->messages_model->get_posts($total);
           $data['just_name'] = $this->messages_model->just_names();
           $data['result'] = $this->messages_model->get_posts($per_page, $this->uri->segment(3), $name);
           $base_url = base_url() . 'messages/index';
           $config['base_url'] = $base_url;
           $config['total_rows'] = $total;
           $config['per_page'] = $per_page;
           $config['uri_segment'] = '3';
           
           $this->jquery_pagination->initialize($config); 
           if(!isset($_GET["name"])){
           $data['activeMessages']= '';
           $this->load->view('header_view', $data); }
           $this->load->view('messages_home', $data); 
    }

model
Code:

    function get_posts($limit = NULL, $offset = NULL, $name="")
    {
        if(isset($name)){
      $this->db->where('name', $name); }
      $this->db->limit($limit, $offset);
      $this->db->order_by("id", "desc");
      return $this->db->get('messages');
    }
        function count_posts_name($name)
    {
        $this->db->like('name', $name);
      return $this->db->count_all_results('messages');
    }
    



[Ovu poruku je menjao despotbg dana 28.02.2012. u 19:07 GMT+1]
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.rs.



+33 Profil

icon Re: codeigniter+paginacija+ajax?28.02.2012. u 19:42 - pre 147 meseci
Ne znam koji browser koristiš, ali preporučujem ti da to što si uradio isprobaš u nekom koji ima alate za inspecting i debugging JS-a, HTML-a, CSS-a, itd., kao što ti ima Chrome ili Firefox, ako instaliraš Firebug ekstenziju. Tada ćeš u stvari videti šta se dešava i zašto se javlja taj prvi problem kojeg imaš.

Ti tim AJAX pozivom dovlačiš sadržaj cele te stranice koju si već ispisao, tj. šalješ zahtev na npr. messages/index?name=test, a to za rezultat ima isto ono što bi se ispisalo kad bi iz browser-a otvorio tu stranicu - celokupan HTML te stranice. Rešenje je da kad u kontroleru ustanoviš da se radi o AJAX zahtevu (pretpostavljam da CodeIgniter ima neki mehanizam za to), da onda ispisuješ samo to parče HTML-a koje prikazuje komentare, kako bi to onda bio rezultat poziva i kako bi se onda sadržaj tog "comments" div-a osvežio tim novim sadržajem. Dakle najpre bi morao da izmeštiš tu logiku za ispis komentara u neki zaseban view script, pa da onda njega učitavaš u tom glavnom view-u, a i da ga koristiš u svrhe ovog što sam malopre opisao.

Drugi problem kojeg imaš je prouzrokovan time što ti pagination URL-ovi nose samo informaciju o stranici, a ne i o trenutno izabranoj stavci u tom select box-u. Nakon što se odabere ime, kada render-uješ stranicu, pri ispisu tih URL-ova, pored broja stranice, trebalo bi da bude i trenutno izabrano ime. Pretpostavljam da to možeš da dodaš u tom $config nizu, kojim se podešava paginator, u smislu da nekako ubaciš i tu $name promenljivu u URL, naravno samo ako nije NULL.
 
Odgovor na temu

despotbg

Član broj: 63968
Poruke: 431
*.dynamic.sbb.rs.



+15 Profil

icon Re: codeigniter+paginacija+ajax?28.02.2012. u 20:48 - pre 147 meseci
Dovlacim deo stranice... Doduse jednu polovinu posto heder ostaje isti samo telo menjam... probacu nocas jos da napravim ovo...
 
Odgovor na temu

despotbg

Član broj: 63968
Poruke: 431
*.dynamic.sbb.rs.



+15 Profil

icon Re: codeigniter+paginacija+ajax?01.03.2012. u 20:58 - pre 147 meseci
Deo problema je resen. Tj nije bog zna sta jer se ucitava komplet stranica al ajd za sad ovako gura

Code:

public function nameChoice(){
            
        if(isset($_GET["name"])){
        $name=$_GET["name"];
       }else{
           $name=$this->uri->segment(3);
           
       }
              $this->load->model('messages_model');
           $per_page = 6;
           $total = $this->messages_model->count_posts($name);
           $data['all_names'] = $this->messages_model->get_posts($total);
           $data['just_name'] = $this->messages_model->just_names();
           $data['result'] = $this->messages_model->get_posts($per_page, $this->uri->segment(4), $name);
           $base_url = base_url() . 'messages/nameChoice/' . $name;
           $config['base_url'] = $base_url;
           $config['total_rows'] = $total;
           $config['per_page'] = $per_page;
           $config['uri_segment'] = '4';
           $data['name']=$name;
           $this->jquery_pagination->initialize($config);
           $data['pagination']=$this->jquery_pagination->create_links(); 
           if(!isset($_GET["name"])){
           $data['activeMessages']= '';
           $this->load->view('header_view', $data); }
           $this->load->view('messages_home', $data); 
    

        }
        }
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: codeigniter+paginacija+ajax?

[ Pregleda: 1643 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.