[ verodostojan @ 14.03.2013. 12:55 ] @
Dakle imam tabelu sa vise redova koja se prikazuje kroz view. Na kraju svakog reda treba da stoji link "BRISI". Kada kliknem na kraju reda na link "BRISI", hocu da se izbrise ceo red iz tabele. Tu nastaje problem.

Controller:
Code:
function delete()
 {
     
     $this->load->model('LoginModel');
     
     if ($this->LoginModel->delete_item())
     {
         redirect("NewsController/index");
         return TRUE;
     }
 else {
         echo "Brisanje nije uspelo";  
         return FALSE;
     }
 }



Model:
Code:
function delete_item()
    {
                
        $this->db->where('id', $this->input->post('id'));
        $result = $this->db->delete('pregled');
        if ($result)
        {
            return TRUE;
        }
        else            return FALSE;     
}


i view:
Code:
<a href = "<?php echo site_url("NewsController/delete/".[red]/////////////////[/red]); ?>Delete</a>


Sta treba staviti na mesto ////////////////////?
Da li je uopste cela ova logika ispravna?

Hvala
Srdacan pozdrav.
[ Nemke_BG @ 14.03.2013. 14:41 ] @
Prosledi parametar kao deo url-a, na primer kao poslednji segment. Pa ga onda izvuci sa URI klasom i iskoristi kao ID, mislim ako vec hoces da ti delete dugme bude <a>.

Ili mozes i da se prikacis na click event na taj <a> pomocu JS-a pa da onda simuliras neki submit ili ajax zahtev sa POST-om.

Ili mozes da prebacs da taj <a> bude post forma na primer.

Choose you destiny
[ g_maestroo @ 14.03.2013. 16:58 ] @
Codeigniter ima podrsku za ajax tako da url moze biti Controller/method sto je kul. Problem kod toga je sto kad obrises red, stranica ti se nece osveziti tako da ce izbrisani red i dalje stajati tu. U tvom slucaju $_GET ili u CI-u $this->uri->segment() je bolje resenje. Kad ispisujes iz baze povuci i id reda, napravi funkciju u modelu koja brise po id-u, napravi funkciju u kontroleru u kojoj se poziva model za brisanje. Onda napravis link u view-u <a href = "controller/funkcijazabtisanje/<?php echo $red_iz_baze->id ?>">Obrisi</a> i to je to.
[ verodostojan @ 14.03.2013. 17:03 ] @
A kako izvesti ovo sa $this->URI->segment(); ?

[Ovu poruku je menjao verodostojan dana 14.03.2013. u 18:18 GMT+1]
[ g_maestroo @ 15.03.2013. 08:05 ] @
Kad ispisujes iz baze povuci i id reda, napravi funkciju u modelu koja brise po id-u, napravi funkciju u kontroleru u kojoj se poziva model za brisanje. Onda napravis link u view-u <a href = "controller/funkcijazabtisanje/<?php echo $red_iz_baze->id ?>">Obrisi</a> i to je to.
[ verodostojan @ 15.03.2013. 11:01 ] @
Razumem ali kako bi trebala da izgleda funkcija u modelu koja brise red gde je id jednak necemu?
Cemu polje ID u tabeli treba biti jednako u upitu?

Nesto ovako:
Code:
function delete_item()
    {
                
        $this->db->where('id', $this->input->post('id'));
        $result = $this->db->delete('pregled');
        if ($result)
        {
            return TRUE;
        }
        else            return FALSE;     
}


ili:

Code:
function delete_item($session)
    {
                
        $this->db->where('id', $session['id']); // promenljiva $session['id] je je dobijena iz kao red tabele u obliku niza
        $result = $this->db->delete('pregled');
        if ($result)
        {
            return TRUE;
        }
        else            return FALSE;     
}


ili:

Code:
function delete_item($session)
    {
                
        $this->db->where('id', $session->id); 
        $result = $this->db->delete('pregled');
        if ($result)
        {
            return TRUE;
        }
        else            return FALSE;     
}
[ eBojan @ 15.03.2013. 11:54 ] @
Evo kako je odprilike radim, ne znam da li je najbolje resenje ali meni vrsi posao:

View
Code:

<table class="table table-hover">
    <thead>
        <tr>
            <th>Naslov</th>
            <th>Akcija</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($redovi as $red): ?>
            <tr>
                <td><?php echo $red->naslov; ?></td>
                <td>
                    <a href="<?php echo $url . '/strana/izmeni/' . $red->id_red; ?>" title="">izmeni</a> 
                    <a href="<?php echo $url . '/strana/brisi/' . $red->id_red; ?>" title="">brisi</a>                      
                </td>
            </tr>
                 <?php endforeach; ?>                
    </tbody>
</table>


Controller
Code:

function strana() {
        
    $akcija = $this->uri->segment(2);
    $id     = $this->uri->segment(3);

    if (isset($id) and $id > 0) {
        if($akcija == 'izmeni'){
        
        } elseif ($akcija == 'brisi'){
            $this->nekiModel_model->brisi($id);
            redirect(site_url() . 'strana/', 'refresh');
        }
        
    } 


Model
Code:

function brisi($id){        
    $this->db->delete('tabela', array('id' => $id));         
}
[ g_maestroo @ 15.03.2013. 12:21 ] @
Cekaj, slabo te razumem. Zasto bi setovao sesiju kad mozes da preneses podatak get metodom?

Code:

function delete_item($id_item)
{
   $q = "DELETE FROM pregled WHERE id = '$id_item'";
   $this->db->query($q);

}


Gde je $id_item id koji si mu prosledio preko uri sermenta 3 sa view-a. Mozes i da koristis active record ako hoces, ja vise volim da sam pisem query.
[ verodostojan @ 21.03.2013. 13:05 ] @
Veliko hvala @eBojan za delete.

Nisam znao kako funkcionise uri->segment(); ali sada znam :)
Sada se na zalost javio problem za "edit", ili u mom slucaju "izmena".
Dakle treba promeniti red u tabeli.

View:

Code:
 ...
    <?php echo form_open('MyController/verify_editing/'.$this->uri->segment(3)); ?>
      
                        Name*:&nbsp;&nbsp;
                        <input type='text' name='name' value=""> <br><br>
                       Street:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='text' name='street' value="">  <br><br>
                       Town: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type='text' name='town' value="">  <br><br>
                        Phone*:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        <input type='text' name='phone' value=""> <br><br>
         
                        
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            <input background:url('images/login-btn.png') no-repeat; border: none; width='103' height='42' style='margin-left:90px;'  type='submit' value='Edit'>
                                   <?php echo form_close(); ?>
    ...


Controller:

Code:
 ...
    function verify_editing()
        {
            if ($this->session->userdata('logged_in'))
            {
                if ($this->session->userdata('admin') == 1)
                {
                    
                    $this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean');               
                    $this->form_validation->set_rules('phone', 'Phone', 'trim|required|xss_clean');
                    
                    if ($this->form_validation->run() == TRUE)
                    {
                        $id = $this->uri->segment(3);
                        if (isset($id) and $id > 0)
        {
          $this->load->model('LoginModel');
          $this->LoginModel->edit_item($id);
           
          redirect(site_url().'MyController/', 'refresh');
       
     
                    }
                    }
             else {
                        $temp = $this->session->userdata('logged_in');
                        $obj['id'] = $temp['id'];
                        $data['records'] = $this->LoginModel->get_Username($obj);
                        $this->load->view('ErrorEditing', $data);
       
     }
        }
                    
                    else {
                    $this->load->view('restricted_admin');
     }
     
                }
     else {
                    $this->load->view('restricted');
     }
        
    }


Model:

Code:
 function edit_item($id)
        {
            $data = array ('name' => $this->input->post('name'), 
                'street' => $this->input->post('street'),
                'town' => $this->input->post('town'),
                'phone' => $this->input->post('phone'));
            
           $this->db->where('id', $id);
         $this->db->update('pregled', $data);        
        }


Ovako nesto ne radi
Dobijam URL: localhost/myproject/MyController/verify_editing_phonebook
I samo bela prazna strana se dobija <---Tabula Rasa--->
[ eBojan @ 21.03.2013. 18:26 ] @
Evo ja cu nastaviti sa mojim primerom i na moj nacin... dakle kad kliknes na link za izmenu iz spiska
Code:
<a href="<?php echo $url . '/strana/izmeni/' . $red->id_red; ?>" title="">izmeni</a> 


Ides na view
Code:

<?php
$attributes = array('class' => 'form-horizontal', 'name' => 'form_question');
echo form_open('', $attributes);
?>

<input type="text" name="imepolja" id="imepolja" value="<?php if (isset($polje['imepolja'])) { echo $polje['imepolja'];} ?>">

<button type="submit" >Snimi / Izmeni</button>

<?php echo form_close(); ?>


Controller moze ovako
Code:

function strana() {

    $akcija = $this->uri->segment(2);
    $id = $this->uri->segment(3);

    if (isset($id) and $id > 0) {
        if ($akcija == 'izmeni') {

            $data['polje'] = $this->polje_model->jedan($id);

            if ($this->input->server('REQUEST_METHOD') === 'POST') {
                $this->nekiModel_model->izmena($id);

            $this->load->view('izmena', $data);

            }
        } elseif ($akcija == 'brisi') {
            $this->nekiModel_model->brisi($id);
            redirect(site_url() . 'strana/', 'refresh');
        }
    } else {
        $this->load->view('index', $data);
    }



I model
Code:

function izmena($id) {

    if (isset($_POST['imepolja'])) {
        $imepolja = $_POST['imepolja'];
    } else {
        $imepolja = '';
    }

    $this->imepolja = $imepolja;

    $this->db->update('tabela', $this, array('id' => $id));
}


Opet ponavljam, mozda ima bolje resenje, ali ja sam ovako naucio i meni je ok... :)
[ verodostojan @ 21.03.2013. 19:06 ] @
@eBojan svaka cast...
Znam da je glupo ovo sto sto cu napisati ali meni je nekako ovaj moj primer malo "lepsi", iako ne radi :(

U svakom slucaju ti hvala na odgovoru!

Gledao sam na Stack Overflow slicne probleme.
Po odgovorima vidim da je kljucno ovo <?php echo form_open('MyController/verify_editing/'.$this->uri->segment(3)); ?>

Medjutim, meni opet nesto ne radi...

Bas sam se smorio...
Ko Velja Ilic na posnoj slavi.
[ g_maestroo @ 21.03.2013. 22:44 ] @
Veljo, Veljo :))) Ne bih da te obeshrabujem ali mislim da bi prvo trebao da peglas proceduralno a tek onda kad se uhodas da se bacis na OOP i izaberes neki framework.

Code:
<?php echo form_open('MyController/verify_editing/'.$this->uri->segment(3)); ?>


Dakle, ovo gore treba da ti bude ovako bez uri segmenta
Code:
<?php echo form_open('MyController/verify_editing/'); ?>


@eBojan ti je lepo napisao kako da napravis link za izmenu
Code:
<a href="<?php echo $url . '/strana/izmeni/' . $red->id_red; ?>" title="">izmeni</a> 


Ovo gore ti je view
----------------------------------
Sada u kontroleru koristis uri segment 3 da bi uhvatio
Code:
$red->id_red
iz linka, sto ti je ID od ispisane informacije. To ti treba da bi mogao modelu da kazes koji red da izmeni.
Desava se sledece, kada kliknes na link, poziva se funkcija u kontroleru koja sluzi za izmenu. Ista proverava da li u URL-u ima promenjive koje treba da uhvati.

Sada kad imas ID u kontroleru, radi sa njim sta hoces

Npr :
http://localhost/home/izmena/78

uri segment 1 = home
uri segment 2 = izmena
uri segment 3 = 78

Razumes?
[ verodostojan @ 22.03.2013. 09:18 ] @
Razumem ali ne vidim View, ili Controller koji ga poziva, u kome se edituje ono sto je potrebno.

Moja zamisao je bila.

1. Opcija "izmena" je linkovana u Controller1
2. Controller1 poziva poziva View u kojem se vrsi editovanje (View je u obliku forme)
3. Provera validnosti tog view-a se vrsi u Conntroller2
4. Ukoliko je validacija uspesna (popunjena su sva trazena polja), poziva se Model koji update-uje tabelu.
5. Poziva se refresh-ovan View koji prikazuje celu tabelu sa prethodnom izmenom.
[ g_maestroo @ 22.03.2013. 12:36 ] @
Onda u view-u napravis ovaj link
Code:
<a href="<?php echo $url . '/conroller2/ime_funkcije/' . $red->id_red; ?>" title="">izmeni</a> 

a u controller2 hvatas uri segment 3 i standardno vrsis validaciju. Ako prodje, samo modelu koji radi update prosledis ID koji si uhvation malo pre sa uri segment-om

Formu otvori ovako
Code:

<?php echo form_open('/conroller2/ime_funkcije//'); ?>


Pogledaj ove klipove, sigurno ce ti pomoci, ja sam ucio iz njih
http://net.tutsplus.com/sessions/codeigniter-from-scratch/

Imas i ovde, skoro sam naleteo na ovaj sajt
http://codeigniter.tv/
[ verodostojan @ 22.03.2013. 21:17 ] @
Konacno sam uspeo nekako...

Citat:
@g_maestroo
<?php echo form_open('/conroller2/ime_funkcije//'); ?>


forma se mora otvoriti ovako:
Code:
<?php  echo form_open('controller2/ime_funkcije/'.$this->uri->segment(3)); ?>


Samo sto sad mi view za editovanje ne ucitava css. To sad nije nesto bitno, ali ako neko zna zasto, slobodno neka odgovori.

Hvala.
[ kelja @ 01.04.2013. 11:59 ] @
Koristi base_url() za link do css fajla.