2017-07-21 3 views
0

Je suis nouveau à code-allumeur, et je suis confronté à des problèmes inconnus dans la mise à jour et la suppression de rows dans database. Mon code pour le contrôleur est:Impossible de mettre à jour ou supprimer des lignes dans la base de données en utilisant codeigniter

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Nhome extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->Model('N_model'); 
     $data['r'] = $this->N_model->getdata(); 
     $this->load->view('Homeview',$data); 
    } 
    public function edit() 
    { 
     $id = $this->input->get('id'); 
     $this->load->Model('N_model'); 
     $data['s'] = $this->N_model->editdata(); 
     $this->load->view('Neditview',$data); 
    } 
    public function loadEdit() 
    { 
     $id = $this->input->get('id'); 
     $this->load->view('Neditview'); 
    } 
    public function insertdata() 
    { 
     $eID = isset($_POST['Id'])?$_POST['Id']:''; 

     $arr['Name'] = $_POST['Name']; 
     $arr['Gender'] = $_POST['Gender']; 
     $arr['Email'] = $_POST['Email']; 

     $this->load->Model('N_model'); 
     $res = $this->N_model->updatedata($arr , $eID); 
     if($res){ 
      header('location:'.base_url()."index.php/Nhome/".$this->index()); 
     } 
    } 
    public function delete(){ 
     $this->load->Model('N_model'); 
     $id = $this->input->get('Id'); 
     $this->N_model->deletedata($id); 
     $this->index(); 
    } 
} 

et mon code pour le modèle est:

<?php 
class N_Model extends CI_Model{ 

    public $Id; 
    public $Name; 
    public $Gender; 
    public $Email; 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function getdata() 
    { 
     $va = $this->db->get('newprac'); 
     $res = $va->result(); 
     return $res; 
    } 
    public function editdata($id) 
    { 
     $vr = $this->db->where('Id',$id); 
     return $vr; 
    } 
    public function updatedata($data , $id){ 
     $this->db->where('newprac.Id',$id); 
     $res = $this->db->update('newprac', $data); 
     return $res; 
    } 
    public function deletedata($id) 
    { 
     $this->db->where('newprac.id',$id); 
     $this->db->delete('newprac'); 
     if($this->db->affected_rows()>0) 
     { 
      return true; 
     } 
     else { return false; } 
    } 
} 
+0

Alors, à quelle difficulté faites-vous face? Une erreur est survenue? Si oui, veuillez également fournir cette erreur. –

+0

non il n'y a littéralement aucune erreur .. je pense qu'il est une erreur logique, comme lors de l'édition de la ligne, l'editview apparaît et je peux également entrer des informations, après avoir appuyé sur le bouton soumettre, il redirige vers la page d'accueil .. mis à jour ou même supprimé. pouvez-vous s'il vous plaît dites-moi pourquoi est-ce le cas? – Ayesha

+0

Si vous transmettez vrai ou faux à partir de votre modèle, alors pourquoi ne pas vérifier auprès de votre contrôleur s'il est vrai si vrai alors vous appelez la page d'affichage ou vous passez la même page. et aussi pouvez-vous s'il vous plaît mourir dans votre modèle et echo $ this-> db-> last_query(); et voir quelle requête vous êtes généré et exécutez cette requête dans votre phpmyadmin et ensuite vous comprenez ce qui se passe. – rowmoin

Répondre

0

changement

$this->db->where('newprac.id',$id)

à

$this->db->where('id',$id);

+0

cela n'a pas fonctionné. Je pense que c'est une erreur logique. pouvez-vous s'il vous plaît le résoudre? – Ayesha

+0

Quel est le nom de la variable obtenue avec GET id ou Id? Dans votre contrôleur, vous utilisez les deux. Peut-être que c'est de l'aide. Changez $ this-> input-> get ('Id') en $ this-> input-> get ('id'); –

0

Simplifiez votre code:

$this->db->where('id',$id)->update('newprac', $data); 
+0

je l'ai essayé, ça n'a pas marché non plus. Ce n'est pas une question de simplification. Je ne peux pas trouver d'erreur. c'est juste un problème logique – Ayesha

0

Remplacez votre contrôleur par ce code. Parce que je pense que vous transmettez des données en tant que méthode de publication, vous devez donc utiliser la publication lorsque vous récupérez des données.

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Nhome extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->load->Model('N_model'); 
     $data['r'] = $this->N_model->getdata(); 
     $this->load->view('Homeview',$data); 
    } 
    public function edit() 
    { 
     $id = $this->input->post('id'); 
     $this->load->Model('N_model'); 
     $data['s'] = $this->N_model->editdata(); 
     $this->load->view('Neditview',$data); 
    } 
    public function loadEdit() 
    { 
     $id = $this->input->post('id'); 
     $this->load->view('Neditview'); 
    } 
    public function insertdata() 
    { 
     $eID = isset($_POST['Id'])?$_POST['Id']:''; 

     $arr['Name'] = $_POST['Name']; 
     $arr['Gender'] = $_POST['Gender']; 
     $arr['Email'] = $_POST['Email']; 

     $this->load->Model('N_model'); 
     $res = $this->N_model->updatedata($arr , $eID); 
     if($res){ 
      header('location:'.base_url()."index.php/Nhome/".$this->index()); 
     } 
    } 
    public function delete(){ 
     $this->load->Model('N_model'); 
     $id = $this->input->post('Id'); 
     $this->N_model->deletedata($id); 
     $this->index(); 
    } 
} 
0

Avez-vous essayé de déboguer en utilisant le débogueur Chrome. Vous pourriez obtenir l'erreur exacte dans le débogueur. Je vous suggère d'essayer une fois de me faire connaître le nom de l'erreur.