2012-06-05 1 views
0

J'ai une page qui contient une donnée de la table de base de données. À la fin de chaque ligne, un bouton Mettre à jour permet aux utilisateurs de mettre à jour cette ligne spécifique. J'ai essayé de faire Id comme une entrée readonly, mais chaque fois que je clique sur submit sur n'importe quelle ligne, la valeur return par $ this-> input-> post() est toujours la dernière ligne Id. Je veux qu'il renvoie l'ID auquel je clique sur Envoyer.Comment passer la chaîne de requête au contrôleur

Id Nom de l'action

echo form_open('control/edit'); 

foreach($rs as $db) 
{ 
    $row = array(form_input('id', $db['id']), $db['name'], form_submit('update', 'Update')); 
    $this->table->add_row($row); 
} 

echo $this->table->generate(); 

Dans le contrôleur de contrôle/d'édition,

$this->input->post('id') // always returns the id of the last row. 

Quelqu'un sait comment dois-je faire à ce sujet? Je vous remercie.

Répondre

1

Cela semble être transmis comme un appel par référence plutôt que de définir la valeur, ou plus simplement, que le nom d'entrée de la dernière ligne "id" est la dernière occurrence dans le formulaire html, ce qui signifie qu'il sera le seul à être posté.

Ex:

<input name="id" value="a" /> 
<input name="id" value="b" /> 
<input name="id" value="c" /> 
<input name="id" value="d" /> 

Si vous cliquez sur soumettre, $ this-> entrée-> après ('id') = 'd';

Essayez de changer foreach à quelque chose comme:

... form_input("id[{$db['id']}]", $db['id'] ... 

Votre $ this-> entrée-> après (« id ») serait alors un tableau que vous pouvez obtenir la clé/valeur avec ce que id a été cliqué.

1

Je vous recommande d'attacher un écouteur de clic à votre bouton de mise à jour et d'ajouter un champ.

terrain:

Et le javascript onclick pour les tablerows serait

onclick="document.getElementsByName('selectedRowId')[0].value = this.getElementsByTagName('input')[0].value" 
Questions connexes