2009-05-26 20 views
6

En el controlador, tengo ...CodeIgniter poblar la base de datos de forma

function update($id = null) 
{ 
    $this->load->database(); 

    // more code 

    $data = array(); 
    $data = $this->db->get_where(
      'users', 
      array(
      'id' => $id 
      ) 
     ); 
    $data = $data->result_array(); 
    $data = $data[0]; 

    // more code 

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

En la vista, tengo ...

<h5>Username</h5> 
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /> 

<h5>Email</h5> 
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" /> 

<h5>Email Confirmation</h5> 
<input type="text" name="emailconf" value="<?php echo set_value('emailconf'); ?>" size="50" /> 

<h5>Password</h5> 
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" /> 

<h5>Password Confirmation</h5> 
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" /> 

set_value() no está leyendo datos de $

búsqueda de valor = ""

en http://codeigniter.com/forums/viewthread/103837/

El póster utiliza solo la función set_value() entre "" en value = "".

Me pregunto cómo hacer lo mismo, pero no puedo hacer que funcione. ¿Ayuda?

+1

¿Por qué está tirando datos en el controlador en lugar del modelo? – eyelidlessness

+3

porque él (nosotros) podemos ... y queremos hacerlo. ;) –

+0

nice one @StephenCox –

Respuesta

4

Creo que no está pasando el valor correctamente a la vista.

En el puesto de control:

$data = $this->db->get_where(
     'users', 
     array(
     'id' => $id 
     ) 
    ); 
$data = $data->result_array(); 

$data['result'] = $data[0]; 

entonces dentro de la vista:

<h5>Password Confirmation</h5> <input type="text" name="passconf" value="<?php echo $result['passconf']; ?>" size="50" /> 
3

Prueba esto:

controlador:

$data = array(); 
$data = $this->db->get_where(
     'users', 
     array(
     'id' => $id 
     ) 
    ); 
$data = $data->result_array(); 
$data['view_username'] = $data['username']; 

En lugar de utilizar $ fecha [ 0], uso el nombre de la columna, pero eso es su decisión

Vista:

<h5>Username</h5> <input type="text" name="username" value="<?=$view_username?>" size="50"/> 

<?= => es PHP etiqueta corta, leído en la guía del usuario CodeIgniter

Saludos,

Sylvio

21

set_value requiere 2 parámetros . nombre de campo Y valor.

que necesita:

value="<?php echo set_value('username', $username); ?>" 

asumiendo que usted está pasando $ data [ 'username'] etc.

+1

Esta es la respuesta correcta. Se ocupa del caso de rellenar el formulario de la base de datos + rellenar la entrada de usuario de validación de formulario – Stewie

+1

Es correcto, pero una cosa más le ahorrará toneladas de tiempo si reemplaza su código System/helpers/set_value como se sugiere aquí http: // codeigniter.com/forums/viewthread/159535/#775628 para evitar problemas al volver a llenar el formulario cuando la regla no existe. – Saad

1

set_value() está diseñado para trabajar con la validación de formularios CI.

Cuando se carga por primera vez el formulario, set_value() puede llenar el campo con un valor predeterminado utilizando su segundo parámetro. Después de enviar el formulario, puede volver a mostrar el formulario y el campo se rellenará con el valor enviado siempre que se haya verificado su validación.

Ver también http://codeigniter.com/forums/viewthread/96617/ - hay algunos inconvenientes con set_value() que los documentos no aclaran.

Aplicable hasta CI 1.7.3 hasta ahora.

-1

Intente asignar valores predeterminados a la variable $_POST en su controlador, p.$_POST['email'] = 'email';

+0

No puede establecer ningún valor $ _POST. –

Cuestiones relacionadas