Как обновить данные в базе данных, используя указанный идентификатор (воспламенитель кода) - PullRequest
0 голосов
/ 10 апреля 2011

это моя страница просмотра в разделе view / company / companyview.php Я очень новичок в PHP и codeigniter.

Я написал ниже код и выполняю.без результата и не обновляется.где я ошибся?.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Welcome to Home page</title>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>/css/topmenu.css">
</head>
<body>
<div class="container">
<br>
<p></p>
<div class="left">
<?php $this->load->view('company/sidemenu.php');?>
</div>
<div class="content">
<!-- <table border="1" cellpadding="3" cellspacing="0" bgcolor="white" id="table_style"> -->
<table id="table_style" border="1" cellpadding="3" cellspacing="0">
  <tr>
    <th>ID</th>
    <th>code</th>
    <th>name</th>    
    <th>address</th>    
    <th>tel</th>    
    <th>fax</th>
    <th>email</th>
  </tr>
<?php
$this->load->library('table');

foreach ($query as $row) 
{
    echo "<tr>";
    echo "<td>" . $row->id . "</td>";
    echo "<td>" . $row->code . "</td>";
    echo "<td>" . $row->name . "</td>";
    echo "<td>" . $row->address . "</td>";
    echo "<td>" . $row->tel . "</td>";
    echo "<td>" . $row->fax . "</td>";
    echo "<td>" . $row->email . "</td>";
    echo "<td>" . anchor('company/inputco/' . $row->id, 'Edit') . "</td>";
    echo "<td>" . anchor('company/del/' . $row->id, 'Delete') . "</td>";  // delete function OK
    //echo anchor('books/input/'. $row->id,'Edit');
    echo "</tr>";
}
?>
</table>
</div>
</div>


</body>
</html>

тогда будет звонить

CI_Controller

function inputco($id)
{
        $this->load->helper('form');
        $this->load->library('table');
        $this->load->helper('html');
        $this->load->view('menu_top.php');
        $this->load->model('company_model');

        $query = $this->company_model->get($id);


        $data['id']['value'] = $query['id'];
        $data['code']['value'] = $query['code'];
        $data['name']['value'] = $query['name'];
        $data['address']['value'] = $query['address'];
        $data['tel']['value'] = $query['tel'];
        $data['fax']['value'] = $query['fax'];
        $data['email']['value'] = $query['email'];
        $data['business']['value'] = $query['business'];
        $data['url']['value'] = $query['url'];
        $data['rocno']['value'] = $query['rocno'];

        $this->load->view('company/companyinput', $data);
}

view / company / companyinput.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


<head>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>/css/topmenu.css">
<title>company input</title>
</head>

<body>
<div class="container">
<br>
<p></p>
<div class="left">
<?php $this->load->view('company/sidemenu.php');?>
</div>
<div class="content">
<?php //echo form_open('company/input'); ?>
<?php echo form_open('company/updateco');?>
<?php echo form_hidden('id', $id['value']);?>

<table id="table_style">
<tr>
    <td>ID:</td>
    <td><input size="10"<?php echo form_input($id);?></td> 
</tr>
<tr>
    <td>Code:</td>
    <td><input size="10"<?php echo form_input($code);?></td>
</tr>
<tr>
    <td>Name:</td>
    <td><input size="30"<?php echo form_input($name);?></td>
</tr>
<tr>
    <td>Address:</td>
    <td><input size="50"<?php echo form_input($address);?></td>
</tr>
<tr>
    <td>Tel:</td>
    <td><input size="30"<?php echo form_input($tel);?></td>
</tr>
<tr>
    <td>Fax:</td>
    <td><input size="30"<?php echo form_input($fax);?></td>
</tr>
<tr>
    <td>Email:</td>
    <td><input size="30"<?php echo form_input($email);?></td>
</tr>
<tr>
    <td>Business:</td>
    <td><input size="30"<?php echo form_input($business);?></td>
</tr>
<tr>
    <td>URL:</td>
    <td><input size="30"<?php echo form_input($url);?></td>
</tr>
<tr>
    <td></td>
    <td><input size="30"<?php echo form_submit('mysubmit', 'Update');?></td>
</tr>
<?php echo form_close(); ?>
</table>
</Div>
</Div>
</body>
</html>

код обновления

function updateco()
{
    $this->load->helper('form');
    $this->load->library('form_validation');
    $this->load->helper('html');
    //$this->load->library('Activerecord');
    $this->load->model('company_model');
    if ($this->input->post('mysubmit'))
    {   
        if ($this->input->post('id')) 
        {
            $this->load->database();   
            $data = array
            (
                'code' => $this->input->post('$code'), 
                'name' => $this->input->post('$name'), 
                'address' => $this->input->post('$address'), 
                'tel' => $this->input->post('$tel'), 
                'fax' => $this->input->post('$fax'), 
                'email' => $this->input->post('$email'),
                'business' => $this->input->post('$business'), 
                'url' => $this->input->post('$url'),
                'rocno' => $this->input->post('$rocno')
            );
            $this->db->where('id', $this->input->post('id'));

            $this->db->update('companyinfo', $data);
            $this->load->view('menu_top.php'); 

          }
    } 

1 Ответ

1 голос
/ 10 апреля 2011

Я не уверен на 100%, что ваша проблема,

, но в view/company/companyinput.php строках, подобных этой:

<input size="10"<?php echo form_input($id);?>

неверны.

Вы можете прочитатьдалее здесь , но ваш код на самом деле выведет что-то вроде

  <input size="10"<input type="text" name="1" value=""  />

Чтобы вывести текстовое поле с размером, вы должны использовать что-то вроде этого

<?php echo form_input(array( 'name' => $id, 'size' => '10'));?>

// EDIT на самом деле при ближайшем рассмотрении ваша ошибка в том, что вы передаете $id в метод form_input ().Когда значение $ id на ваш взгляд на самом деле является массивом, который содержит странное значение.

Я думаю, что ваша проблема в контроллере, я не вижу в вашей модели, но я думаю, что он возвращает массив, подобный этому {'id'=>1, 'code'=>'ABC123','name'=>'Toms Hardware' ... }

, но когда вы делаете это:

$data['id']['value'] = $query['id'];

он записывает в индекс 'value', хранящийся в массиве $ data ['id'], который не является массивом ... это число, строка или что-то еще.Я рекомендую вам просмотреть исходный текст HTML-формы, и я думаю, что в полях ввода будут отображаться строковые имена.

Думаю, вы действительно хотите что-то вроде этого:

<?php echo form_input(array( 'name' => '', 'value'=> $id, 'size' => '10'));?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...