[ laleb @ 16.11.2011. 19:15 ] @
Imam problem prilikom prelamanja podataka iz baze. U pitanju je pretraga artikala.

view
Code:

<?php $attributes = array('class' => 'form_search','name' => 'submit_search'); ?>
<?php echo form_open('index',$attributes);?>

<select name="art">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>

<input type='hidden' name='search' value='search'>
<input type='submit' value='trazi'>
<?php echo form_close(); ?>

<?php foreach($list as $rows){

echo $rows->ime . "<br>";
echo $rows->cena . "<br>";

}



controller
Code:


function index(){

if(isset($_POST['search'])){

$select['vrsta'] = $this->input->post('art');

if($select['vrsta']!=null){    

        $where['vrsta'] = $select['vrsta'];
   }

$where['activno'] = '1';

$this->load->library('pagination');
        $config['base_url'] = base_url(). "index.php/index";
        $config['total_rows'] = $this->search_model->count($where);
        $config['per_page'] = 10;
        $config['uri_segment'] = 3;
        $this->pagination->initialize($config);
 
$query = $this->search_model->search($where, $config['per_page'], $this->uri->segment(3));
    
        $art['list'] = $query;
        $art['links']=$this->pagination->create_links();

}else {

$where['activno'] = '1';

$this->load->library('pagination');
        $config['base_url'] = base_url(). "index.php/index";
        $config['total_rows'] = $this->search_model->count($where);
        $config['per_page'] = 10;
        $config['uri_segment'] = 3;
        $this->pagination->initialize($config);
 
$query = $this->search_model->search($where, $config['per_page'], $this->uri->segment(3));
    
        $art['list'] = $query;
        $art['links']=$this->pagination->create_links();

}
}


model
Code:

function search($where, $row, $uri){
    
    $query = $this->db->get_where('artikli',$where,$row,$uri);
        
    return $query->result();
    
}

function count($where){
    
     $query = $this->db->get_where('artikli', $where);
     $count = $query->num_rows();    
     
     return $count;
    
}



Posle pretrage artikla i odabiranja vrste iz padajuceg menija sve je OK, izbaci dobar broj stranica, ali kada prebacim na sledecu stranicu vrati mi kao da nije pokrenuta pretraga, znaci izlista mi sve iz baze.
Problem je sto na sledecoj stranici ne prosledjuje podatke iz padajuceg menija.

Moze li mi neko pomoci
[ dakipro @ 16.11.2011. 19:28 ] @
Dampuj post na drugoj strani, deluje kao da nemas setovan post kad odes na stranu 2 a samim tim ti ovaj if ne prolazi


if($select['vrsta']!=null){

vec ide u else, gde nemas WHERE uslov
[ s4djan @ 16.11.2011. 20:03 ] @
Codeigniter u formama prosledjuje podatke kroz POST metod, što znači da bi ta forma radila sa paginacijom, moraš da te podatke proslediš kroz URL, tipa http://example.com/index.php/index/art/1/search/search_term/ i da ih tako i preuzimaš kroz Codeigniter URI class.

Imaš dva rešenja:

1.PHP - Kada šalješ POST zahtev kroz formu prosledi ga do neke medju funkcije da ih prihvati i konstruiše URL i izvrši redirekciju na tu adresu.

2.Javascript - Efikasniji ali manje elegantan način, blokiraj "submit" i kostruiši URL adresu uz pomoć javscripta i prosledi poziv pomoću "window.location". Ovim izbegavaš jedan poziv.

Samo obrati pažnju da ćeš morati dinamički konstruisati $config['base_url'].