2012-03-15 7 views
1

私のスクリプトには助けが必要です。私は2つの列matric_noとscoreを持つCSVファイルをアップロードしています。問題は、maintableの成績列に、各スコアの列column.i.sにアップロードされる内容に応じてエントリを挿入しようとしていることです。スコアが> 70の場合、成績の値はAでなければなりません。私maintableのstuctureは私が動的に生成したいとの意志のグレードがあり、 IF文を使用してCSVの値を列に取り込む方法

MAINTABLE 
score_id 
matric_no 
score 
grade 
course_code 
level 
semester_name 
session 

最後の4列

がインターフェイスからのユーザ入力から値が移入されています。

おかげで助けを

<?php 

$fname = $_FILES['csv_file']['name'];  
$chk_ext = explode(".",$fname);    

     $filename = $_FILES['csv_file']['tmp_  name']; 
$handle = fopen($filename, "r");  
if(!$handle){ 
die ('Cannot open file for reading'); 
}  
       while (($data = fgetcsv($handle,  10000, ",")) !== FALSE) 
{ 
      $query = "INSERT INTO maintable   (matric_no, score, session, semester_  name, course_code, level) 
       values('$data[0]', '$data[1]', '".   $session."', '".$semester_name."', '".  $course_code."', '".$level."') 
ON DUPLICATE KEY UPDATE matric_no =  matric_no"; 
mysql_query($query) or die(mysql_error ()); 
} 
if ($row['score'] >= 70) { 
       $grade = 'A'; 
      } 
      elseif ($row['score'] >= 60) { 
      $grade = 'B'; 
      }elseif ($row['score'] >= 50) { 
      $grade = 'C'; 
      }elseif ($row['score'] >= 45) { 
      $grade = 'D'; 
      }elseif($row['score'] >= 40) { 
      $grade = 'E'; 
      }else{ 
      $grade = 'F'; 
      } 

$query = "UPDATE maintable 
SET grade = 'A' WHERE score >= 70, 
SET grade = 'B' WHERE score >= 60 AND  score < 70 , 
SET grade = 'C' WHERE score >= 50 AND  score < 60, 
SET grade = 'D' WHERE score >= 45 AND  score < 50, 
SET grade = 'E' WHERE score >= 40 AND  score < 45 , 
SET grade = 'F' WHERE score < 40"    mysql_query($query) or die(mysql_error  ()); 
fclose($handle); 
    ?> 

感謝。 注:私の書式とインデントを許してください。私はこのコミュニティに敬意を表しませんでした。 おかげ

答えて

0

使用MySQL Case

UPDATE maintable 
SET grade = CASE 
    WHEN score >= 70 THEN 'A' 
    WHEN score >= 60 THEN 'B' 
    WHEN score >= 50 THEN 'C' 
    WHEN score >= 40 THEN 'D' 
    WHEN score >= 30 THEN 'E' 
    ELSE 'F' 
関連する問題