0

これは、ユーザーが学生のスコアを入力できる動的に生成されたフォームです。私の課題は、特定の subjectCode とそのスコアを取得する方法です。これは、subjectcode を使用してデータベースに保存しているためです。

<?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();
?>

上記の POST の詳細を処理する PHP スクリプトは次のとおりです。

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

2 に答える 2

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

        }
    }
}
于 2013-03-30T13:09:43.617 に答える
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;
    }
}
于 2013-03-29T16:45:15.777 に答える