2009-05-26 17 views
6

Nel controllore, ho ...CodeIgniter compilare modulo dal database

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); 
} 

Nella vista, ho ...

<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() non sta leggendo i dati $

ricerca value = ""

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

Il poster utilizza solo la funzione set_value() tra "" in value = "".

Mi chiedo come fare lo stesso, ma non riesco a farlo funzionare. Aiuto?

+1

Perché stai tirando i dati nel controllore al posto del modello? – eyelidlessness

+3

perché lui (noi) possiamo ... e vogliamo. ;) –

+0

nice one @StephenCox –

risposta

4

Penso che non si passi il valore correttamente alla vista.

Nella put Controller:

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

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

poi all'interno della vista:

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

Prova questo:

Controller:

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

Invece di usare $ data [ 0], io uso il nome della colonna, ma questa è la vostra decisione

Vista:

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

<?= => è PHP breve tag, letto su di esso nel manuale d'uso CodeIgniter

saluti,

Sylvio

21

SET_VALUE richiede 2 parametri . nome campo AND valore.

è necessario scaricare:

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

partendo dal presupposto che si sta passando $ dati [ 'username'] ecc

+1

Questa è la risposta corretta. Si prende cura di caso di precompilazione del modulo dal database + popolando l'input dell'utente validazione dei form – Stewie

+1

suo corretto, ma una cosa vi farà risparmiare tonnellate di tempo, se si sostituisce il/aiutanti/code SET_VALUE sistema come suggerito qui http: // codeigniter.com/forums/viewthread/159535/#775628 per evitare problemi quando ripopolare nuovo modulo quando regola doesnt esiste. – Saad

1

SET_VALUE() è progettato per funzionare con la convalida modulo CI.

Quando il modulo viene caricato per la prima volta, set_value() può riempire il campo con un valore predefinito utilizzando il suo secondo parametro. Dopo aver inviato il modulo, è possibile visualizzare di nuovo il modulo e il campo verrà riempito con il valore inviato, purché sia ​​stato verificato per la convalida.

Vedere anche http://codeigniter.com/forums/viewthread/96617/ - ci sono alcuni trucchi con set_value() che i documenti non chiariscono.

Applicabile fino a CI 1.7.3 finora.

-1

Provare ad assegnare valori predefiniti alla variabile $_POST nel controller, ad es.$_POST['email'] = 'email';

+0

Non è possibile impostare alcun valore $ _POST. –

Problemi correlati