Для Loop + Неправильная запись вставлена - PullRequest
0 голосов
/ 28 июля 2011

Здравствуйте, у меня есть форма с subj_ids. Итак, вот сценарий. У меня есть subj_ids 1, 2, 3, 4, 6, но, что происходит каждый раз, когда я отправляю форму, она вставляет запись со значением 0, плюс она не вставляет запись с subj_id, равным 6.

ФОРМА:

    <tr>
        <td width="225"><?= $row_subjects[1];?>
        <?php if($row_active_term[0] == '1st' && $row_active_term[1] == '1' ) {?>
        <td align="center"  width="225">
            <?php if($row_subjects['indicator'] == 'editable'){?>
                <input type="hidden" name="subj_id_<?= $row_subjects[0]?>" id="subj_id_<?= $row_subjects[0]?>" value="<?= $row_subjects[0]?>" />
                <input type="text" name="grade_<?= $row_subjects[0]?>" id="grade_<?= $row_subjects[0]?>" size="5" value="<?= number_format($row_subjects[4], 1)?>" />
            <?php } else {?>
                <a href="#" title="This is your downfall">?</a>
            <?php } ?>
        </td>
        <?php } ?>
    </tr>

Представление: Я полагаю, в этом и заключается плохой код. , ,

    <?php
include('conn.php');
$uid = $_SESSION['uid'];
$rs_count_subjs = mysql_query("select count(*) as x from teachers_subjects where tid = $uid");
$row_count_subjs = mysql_fetch_array($rs_count_subjs);
$x = $row_count_subjs['x'];
$term = $_POST['term'];
//echo "select count(*) as x from teachers_subjects where tid = $uid";

$rs_subjs = mysql_query("select * from teachers_subjects where tid = $uid");
$row_subjs = mysql_fetch_array($rs_count_subjs);

for($i=0; $i<=$x; $i++) {
$t = $row_subjs[0];
$sid = $_POST['sid'];
$s = $_POST['subj_id_'.$i];
$y = $_POST['grade_'.$i];
$rs = mysql_query("select * from student_friggin_grades where sid = '$sid' AND subj_id = '$s' AND term = '$term' AND tid = $uid");
$row = mysql_fetch_array($rs);
$num = mysql_num_rows($rs);
    if($num > 0) {
        $update_grade = "update set grade = '$y' where sid = '$sid' AND subj_id = '$s' AND term = '$term' AND tid = $uid";
        $updated_grade = mysql_query($update_grade);
        $is_updated = mysql_affected_rows();
        echo "update set grade = '$y' where sid = '$sid' AND subj_id = '$s' AND term = '$term' AND tid = $uid";
    } else {
        $update_grade = "insert into student_friggin_grades(`sid`, `subj_id`, `term`, `grade`, `tid`, `date_added`, `date_updated`) 
                values('$sid', '$s', '$term', '$y', $uid, NOW(), NOW())";
        $updated_grade = mysql_query($update_grade);
        $is_updated = mysql_affected_rows();
    }
}

if($is_updated > 0) {
    header("Location: show_grades.php?sid=$sid");
}
?>

Пожалуйста, помогите мне,

XXXXXXXXXXXXXXXX

Ответы [ 2 ]

1 голос
/ 28 июля 2011

один на основе нуля? Я думаю, у вас есть цикл, где он заканчивается до последней записи?

1 голос
/ 28 июля 2011

при условии, что $ x равен 6,

for($i=0; $i<=$x; $i++) {

даст вам от 0 до 6 если вы хотите пройти от 1 до 6

for($i=1; $i <= $x; $i++) {

однако это не ответит, почему вы не видели 6, если только $ x на самом деле не равен 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...