0

Hi, good morning,
Dynamically I pass student id, subject id, subject marks.
for example, assume that there are 50 students in a class, subjects are 5. so that 5 fields are there to enter 5 subjects mark. and the total will calculate automatically.

while storing in database , I have a problem that , I have done it using two for loops by counting student id in first loop , in second loop subject id, so that correctly I got 250 records, but my problem is, it stores only first student marks to all students, how to solve that.
Here is my code?

$std_id = $_REQUEST['std_id'];
$sub_id = $_REQUEST['sub_id'];
$sub_mark=$_REQUEST['sub_mark'];
$total=$_REQUEST['total'];

for($i=0;$i<count($std_id);$i++)
{
for($j=0;$j<count($sub_id);$j++)
{
mysql_query("INSERT INTO mark_tbl(std_id,sub_id,mark)VALUES('$std_id[$i]','$sub_id[$j]','$sub_mark[$j]')");
}
}
3
Contributors
4
Replies
14
Views
1 Year
Discussion Span
Last Post by hericles
0

You don't want to be using submark[$j] as that just repeats the first values (0 through to whatever size j is).
You want to have another counter that starts at zero and increments at the end of each inner loop. Or structure your marks array to be two dimensional and then refer to submark[$i][$j]

0

Hi hericles,
Can you tell me where I have to change in my code.

    $std_id = $_REQUEST['std_id'];
    $sub_id = $_REQUEST['sub_id'];
    $sub_mark=$_REQUEST['sub_mark'];
    $total=$_REQUEST['total'];
    for($i=0;$i<count($std_id);$i++)
    {
    for($j=0;$j<count($sub_id);$j++)
    {
    mysql_query("INSERT INTO mark_tbl(std_id,sub_id,mark)VALUES('$std_id[$i]','$sub_id[$j]','$sub_mark[$j]')");
    }
    }
0

You haven't mentioned what form sub_marks takes so I'm going to assume it is a 1d array of marks, the first 5 elements belonging to student id 1, the next 5 to student ID 2, etc.
So, adding a counter and using that as the the sub_marks index will work

$std_id = $_REQUEST['std_id'];
$sub_id = $_REQUEST['sub_id'];
$sub_mark=$_REQUEST['sub_mark'];
$total=$_REQUEST['total'];
$counter = 0;
for($i=0;$i<count($std_id);$i++)
{
   for($j=0;$j<count($sub_id);$j++)
   {
     mysql_query("INSERT INTO mark_tbl(std_id,sub_id,mark)VALUES('$std_id[$i]','$sub_id[$j]','$sub_mark[$counter]')");
     $counter++;
   }
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.