2012-03-15 4 views
1

내 스크립트에 도움이 필요합니다. matric_no와 score라는 두 개의 열이있는 CSV 파일을 업로드하고 있습니다. 문제는 내가 maintable에 성적 항목을 채우기 위해 노력하고 있다는 점입니다. 각 점수 열의 각 행에 무엇이 업로드되는지에 따라 항목이 있습니다. 점수가 70보다 많으면 점수가 A 여야합니다. 내 maintable의 stucture 내가 동적으로 생성 할 윌 등급이며, IF 문을 사용하여 CSV의 값으로 열을 채우는 방법

MAINTABLE 
score_id 
matric_no 
score 
grade 
course_code 
level 
semester_name 
session 

마지막 네 개의 열

이 인터페이스에서 사용자 입력에서 값으로 채워집니다입니다.

덕분에 도움을

<?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' 
관련 문제