2010-02-25 5 views
0

Dans mon projet de zend, je veux montrer quelques problèmes de santé le long-avec une liste déroulante et une zone de texte. Mon contrôleur et les vues sont données ci-dessous.Soumission de données dans Zendframework

class IndexController extends Zend_Controller_Action 

{

public function init() 
{ 
    /* Initialize action controller here */ 
} 

public function indexAction() 
{ 
    $healthproblems =new Model_DbTable_Healthproblems(); 
    $this->view->healthproblems=$healthproblems->fetchAll(); 
} 

public function addAction() 
{ 

} 

}

--index.phtml--

<table border='1'> 
<tr> 
    <th>Name</th>  
    <th>&nbsp;</th> 
    <th>&nbsp;</th> 
</tr> 
<?php foreach($this->healthproblems as $prob) : ?> 
<tr> 
    <td><?php echo $this->escape($prob->healthproblem_name);?></td> 
    <td><select id="ddl_<?php echo $prob->prob_id; ?>"> 
      <option selected="selected">--Select--</option> 
      <option>Yes</option> 
      <option>No</option> 
     </select></td> 
    <td><input type="text" style="width: 50px" value=""></input></td> 

</tr> 

<?php endforeach; ?> 
<tr><td colspan="3" align="center"> 
<input type="submit" id="submit" value="Submit" ></input></td></tr> 

Mon problème est « Comment ajouter ces données dans la base de données? ' des champs tels que problemid et note.Toute autre alternative est possible? HeaalthProblems contenant dans une table et je veux insérer les problèmes de chaque personne dans une autre table.Veuillez m'aider ..

Répondre

0

D'abord, je vais vous recommander d'utiliser Zend_Form au lieu de créer des formulaires à partir de Scratch. Pour résoudre votre problème, vous auriez un champ person_id et un id_problème (caché) avec la personne et l'identifiant du problème dans votre formulaire.

Dans votre contrôleur, vous allez juste attraper les données et ensuite envoyer à votre modèle (décrit ci-dessous).

Ensuite, vous devez créer un nouveau modèle appelé PersonProblem avec la méthode insetPersonHealthProblem ($ data). Qui recevra les données du contrôleur.

Jusqu'à présent vous aurez quelque chose comme ceci dans votre tableau de données $:

array(
'person_id' => 1, 
'problem_id' => 15, 
'hasproblem' => ', // 1 for yes and 0 for no 
'note' => 'something' 
); 

donc votre domaine ont besoin d'être appelé « hasproblem » et au lieu de concaténer l'ID du problème dans le nom de domaine que vous aurez un champ caché.

Enfin, dans la méthode insetPersonHealthProblem vous allez insérer la relation, et vous en finir avec quelque chose comme ça:

id | person_id | problem_id | hasproblem | note 

1    1     15    1   something 

Votre formulaire ressemblera à ceci:

<form method="POST" action="url('......')"> 
<input type="hidden" name="person_id" value="<?php echo $person_id; ?>" /> 
<input type="hidden" name="person_id" value="<?php echo $problem_id; ?>" /> 
<table border='1'> 
<tr> 
    <th>Name</th>  
    <th>&nbsp;</th> 
    <th>&nbsp;</th> 
</tr> 
<?php foreach($this->healthproblems as $prob) : ?> 
<tr> 
    <td><?php echo $this->escape($prob->healthproblem_name);?></td> 
    <td><select id="hasproblem"> 
      <option selected="selected">--Select--</option> 
      <option>Yes</option> 
      <option>No</option> 
     </select></td> 
    <td><input type="text" name="note" style="width: 50px" value=""></input></td> 

</tr> 

<?php endforeach; ?> 
<tr><td colspan="3" align="center"> 
<input type="submit" id="submit" value="Submit" ></input></td></tr> 
</form> 

Hope this aide toi.

Questions connexes