Codeigniter löscht mehrere Zeilen mit Kontrollkästchen

  • Ich versuche, mehrere private Nachrichten aus meiner Datenbank zu löschen, indem Sie mehrere Ankreuzfelder im Posteingang markieren und auf "Senden" klicken, um sie zu löschen. Ich habe den folgenden Code, aber nichts passiert. Ich bin nicht sicher, was mir fehlt.

    Ansicht:

     <?php echo form_open('pm/remove_checked'); ?>
    
    <?php foreach ($query as $row): ?>   
        <input type="checkbox" name="msg[]" value="<?php echo $row->id; ?>" />
        <?php echo $row->from; ?>
        <?php echo $row->subject; ?>    
        <?php echo date("m/d/Y",strtotime($row->msg_date)); ?>          
    <?php endforeach; ?>
    
    <?php echo form_submit('delete', 'Delete'); ?>
    
    </form>
     

    Controller:

     function remove_checked()
    {
            //validation rules
            $this->form_validation->set_rules('msg[]', 'Private Message', 'required|xss_clean'); 
    
            if ($this->form_validation->run() == FALSE) 
            {
                $data['query'] = $this->Pm_model->received_msg(); 
                $this->load->view('pm/inbox', $data);   
            }
            else //success
            {
                $checked_messages = $this->input->post('msg'); //selected messages
                $this->Pm_model->delete_checked($checked_messages);
    
                //redirect to inbox                                     
            }
    
    }
     

    Modell:

     function delete_checked($checked_messages) 
    {
        $checked_messages = array();
        foreach ($checked_messages as $msg_id):
    
              $this->db->select('id');
              $this->db->from('user_msg');
              $this->db->where('id', $msg_id);
              $this->db->limit(1);
              $query = $this->db->get();
    
              if ($query->num_rows() > 0) //if message exists
              {             
                $this->db->where('id', $msg_id);
                $this->db->where('recipient', $this->users->get_user_id()); //verify if recipient id is equal to logged in user id
                $this->db->delete('user_msg');
    
              }
              else 
              {
                    return FALSE;
              } 
    
        endforeach;
    }
     
    24 August 2011
    CyberJunkie
1 answer
  • Sie weisen den überprüften Eingaben $checked_msg zu, übergeben jedoch eine andere Variable mit dem Namen $checked_messages an das Modell. Sie müssen die $checked_msg var an das Modell übergeben.

    Außerdem deklarieren Sie in Ihrem Modell die $checked_messages var und setzen sie auf ein leeres Array. Sie müssen das entfernen, da sonst die Informationen, die Sie an die Methode übergeben, überschrieben werden.

    24 August 2011
    Chris Schmitz