2013-03-29 3 views
0

это моя динамически сгенерированная форма, которая позволяет пользователю вводить оценки студентов. Моя задача - как захватить конкретный предметный код и его счет, потому что я использую предметный код для хранения в базе данных.Как получить значения POST динамически сгенерированной формы в php

<?php 
$attributes=array('class'=>'','id'=>''); 
echo form_open('scoreInsertion/insertScores',$attributes); 
echo "<table>"; 
echo "<tr>"; 
echo "<td>";?> 
<label for="admNo>">Admission Number<span class="required">*</span></label> 
<?php echo form_error('admNo'); 
echo "</td>"; 
echo "<td>";?> 
<input type="text" name="admNo" id="admNo" value="<?php echo set_value('admNo')?>" /> 
<?php echo "</tr>"; 
echo "<tr>"; 
echo "<td>";  
?> 
<label for="studentName>">Student Name<span class="required">*</span></label> 
<?php echo form_error('studentName'); 
echo "</td>"; 
echo "<td>";?> 
<input type="text" name="studentName" id="studentName" value="<?php echo $studentName?>" /> 
<?php echo "</tr>"; 
echo "<tr></tr>"; 
echo "<tr>"; 
echo "<td>"; 
?> 
<label for="examCategory">Exam Category<span class="required">*</span></label> 
<!--<tr><td><?php echo form_error('examCategory')?></td></tr>--> 
<td> 
<select name="examCategory"> 
<option value="">--Select Category--</option> 
<?php 
print_r($exams); 
if(isset($exams) && is_array($exams)){ 
    foreach($exams as $exam){ 
     $examId=$exam->id; 
     $examName=$exam->category; 
     echo "<option value='$examId'>$examName</option>"; 
    } 
} 
?> 
</select></td><?php 
echo "<tr></tr>"; 
echo "<tr>"; 
echo "<td>"; 
?> 
<label for="term">Academic Term<span class="required">*</span></label> 
<!--<tr><td><?php echo form_error('examCategory')?></td></tr>--> 
<td> 
<select name="term"> 
<option value="">--Academic Term--</option> 
<?php 
if(isset($terms) && is_array($terms)){ 
    foreach($terms as $term){ 
     $termId=$term->termId; 
     $termName=$term->name; 
     echo "<option value='$termId'>$termName</option>"; 
    } 
} 
?> 
</select></td> 

<?php 
echo "<tr>"; 
//loop through the subjects array and display them on the view 
if(isset($subjects) && is_array($subjects)){ 
    foreach($subjects as $subject){ 
     $subjectName=$subject->subName; 
     $subjectCode=$subject->subCode; 
     echo "<tr>"; 
     echo "<tr></tr>"; 
     echo "<td>";?> 
     <label for="<?php echo $subjectName?>"><?php echo $subjectName;?><span class="required">*</span></label> 
     <?php echo form_error($subjectName); 
     echo "</td>"; 
     echo "<td>";?> 
     <input type="text" name="<?php echo $subjectCode?>" id="<?php echo $subjectName?>" value="<?php echo set_value($subjectCode)?>" /> 
     <?php echo "</tr>"; 
     } 
} 
?> 
<?php echo "<tr>";echo "<td>"; 
echo form_submit('submit','Submit'); 
echo "</td>"; 
echo "</tr>"; 
?> 
</p> 
<?php 
echo "</table>"; 
echo form_close(); 
?> 

PHP скрипт для обработки выше детали POST ниже:

function insertScores(){ 
     $admNo=$this->input->post('admNo'); 
     $term=$this->input->post('term'); 
     //get the post variables from the Form 
     $posted = $this->input->post(); 
     $x = array_keys($posted); 
     foreach($x as $y) { 
      echo $y ." = ". $_POST[$y]."<br/>"; 
      echo "<br>"; 
      //write the sql 
      $form_data=array(
      'admNo' =>$admNo, 
      'subCode'=>$y, 
      'termId'=>$term, 
      'score'=>$_POST[$y]      
      ); 
      print_r($form_data); 
      $this->SaveForm($form_data); 
     } 
} 
+0

Все ли это в том же файле? потому что вокруг функции нет открывающих и закрывающих тегов (''). И функции также не хватает закрытия '}'. –

+0

Вы должны использовать ['heredoc'] (http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc). Это поможет вам с форматированием вывода. – Kermit

ответ

0

Если это действительно должно быть, вы могли бы установить определенный префикс для атрибута name, а затем искать ключ, начиная с этот префикс среди ваших $_POST ключей. Нечто подобное:

<input type="text" 
     name="subject_<?php echo $subjectCode?>" 
     id="<?php echo $subjectName?>" 
     value="<?php echo set_value($subjectCode)?>" /> 

Затем найдите его в $_POST массиве.

$subjectCode = null; 
foreach (array_keys($_POST) as $index) { 
    if (strpos($index, 'subject_') === 0) { // you found the needed element    
     // get its value and save it in a variable 
     $subjectCode = $_POST[$index]; 
     break; 
    } 
} 
+0

форма и сценарий разные. – samlebo

+0

Это не имеет значения. – Havelock

0

Этот код решить мою проблему, я принести subCode используя admNo в БД затем сравнить с POST именами.

$subjects=$this->subjectModel->get_subjects(); 
foreach($subjects as $subject){ 
    $subCode= $subject->subCode; 
    foreach($_POST as $key => $value){ 
     //print_r($key); 
     //print_r($value); 
     $form_data=array(); 
     if($key == $subCode){ 
      //echo $subCode. "=". $value; 
      //write the sql for insertion into the database 
      $form_data = array(
      'admNo'=>$admNo, 
      'subCode'=>$subCode, 
      'termId'=>$term, 
      'formId'=>$formstudy, 
      'score'=>$value, 
      'year'=>$year  


      ); 
      $this->SaveForm($form_data);  

     } 
    } 
} 
Смежные вопросы