0

こんにちは、ジャンプするためのもう1つのハードルです。フォームからの学生の動的リストがあります

<form method="POST" name="assignments" id="assignments" action="<? $_SERVER['PHP_SELF']; ?>">

<?php
$key = 0;
while($row_students = mysql_fetch_array($students))
{ ?>
<div style="margin-bottom:3px;">
<select name="student[<?php echo $key ?>][grade]" size="1">
  <option value="NULL">--</option>
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="20" selected="selected">20</option>
</select>

<?php echo $row_students['student_number'];?> 
<input name="student[<?php echo $key ?>][student_id]" type="hidden" 
 value="<?php echo $row_students['student_number']; ?>" /> -

<?php echo $row_students['student_name'] ; ?>
<input name="student[<?php echo $key ?>][assignment_name]" type="hidden" 
 value="<?php echo $row_assignments['assignment_name'];?>" />
 </div>
 <br/>
<?php $key++;} ?>
<input name="section" type="hidden" value="<?php echo $_SESSION['section']; ?>" />
<input name="submit" type="submit" value="submit" />
| <a href="index.php">Cancel</a>
</form>

次に、ループして動作するデータベースにそれらを挿入するSQLがあります

if(!empty($_POST['submit'])){ 

$sql = array(); 
foreach( $_POST['student'] as $row ) { 
$sql[] = '(
         '."NULL".',
         '.mysql_prep($row['grade']).', 
                 '.mysql_prep($row['student_id']).', 
         '."'{$row['assignment_name']}'".',
         '."'{$current_section}'".')
         '; } 

 mysql_query( 'INSERT INTO 
               graded_assignment (id, grade, student_id,    assignment_name, section) 
               VALUES '.implode(',', $sql)); 
confirm_query($sql);                       
if(mysql_affected_rows()>=0)  
{  
    redirect_to("index.php?assignment=1");
}
}

これが ? 教師が成績を提出した後に生徒を別のクラスに移動すると、データは既に提出されており、新しい教師は 1 人の生徒のデータが既に存在するため、成績を提出できません。

最初に学生のデータが存在するかどうかを確認してから、データがない場所にのみ挿入するにはどうすればよいですか? Student_id と assignment_name は一意であるため、コンボは挿入されません。

または、学生がすでにデータを持っている場合は、学生リストに彼の名前をエコーし​​ません

ありがとう、私はそれを理解することができません。

4

1 に答える 1

0

MySQLを使用していることを考慮して、使用してください

INSERT .. ON DUPLICATE KEY IGNORE 

(または、代わりに更新する場合は UPDATE)。ただし、機能させるには主キーを設定する必要があります。

于 2012-10-25T09:44:06.217 に答える