2016-08-30 2 views
-1

Ich versuche, eine bestimmte Spalte über fgetcsv zu aktualisieren. Aber das Problem ist, dass alle Daten gleich sind. Kann mir jemand dabei helfen? Ich weiß nicht, wie man die grade_id hier verwenden kann, weil es keine grade_id in CSV nur in der Datenbank gibt. Und ich mache es nur mit dem Hochladen von Dateien.So aktualisieren Sie bestimmte Spalte mit fgetcsv

Hier ist der CSV. Ich möchte nur, dass die Zwischenprüfung aktualisiert wird. Es wird jedoch nur der Wert 64 eingefügt. enter image description here

hier ist das Ergebnis. Der Ausgang 75,80,6464,64,64 nicht hier sein sollte enter image description here

hier ist meine Datenbankstruktur enter image description here

mein Code

if(isset($_POST["Import"])){ 

     $term = $_POST['term']; 
     $fac_code = $_POST['fac_code']; 
     $sch_year = $_POST['schoolyear']; 
     $section = $_POST['sec']; 
     $semester = $_POST['semester']; 
     $sub = $_POST['sub']; 

     echo $filename=$_FILES["file"]["tmp_name"]; 

      $heading = true; 
     if($_FILES["file"]["size"] > 0) 
     { 

      $file = fopen($filename, "r"); 
      while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) 
      { 
       if($heading) { 
        // unset the heading flag 
        $heading = false; 
        // skip the loop 
        continue; 
       } 
       //to get the last column 
       $last = end($emapData); 

        $sql1 ="SELECT * FROM grade WHERE subj_descr ='$sub' AND section = '$section'"; 
         $result = mysqli_query($con, $sql1); 

         while($row = mysqli_fetch_array($result)){ 
         $gradeid = $row['grade_id']; 

         $sql = "UPDATE grade SET midterm_grade = '$last' WHERE grade_id = '$grade_id'"; 
            $result = mysqli_query($con, $sql); 
        } 



      } 
      fclose($file); 
      //throws a message if data successfully imported to mysql database from excel file 
      echo "<script type=\"text/javascript\"> 
         alert(\"CSV File has been successfully Imported.\"); 
         window.location = \"homefaculty.php\" 
        </script>"; 



      //close of connection 
      mysqli_close($con); 



     } 

    } 

Antwort

0

Ihre Schleife in MySQL für die Aktualisierung nur nach dem Abruf Ihren letzten Wertes erfolgt In bedeutet in Ihrem Code machen Sie 3 Schleifen für die Aktualisierung aller Wert

$sql1 ="SELECT * FROM grade WHERE subj_descr ='$sub' AND section = '$section'";

Diese Schleife, die immer das gleiche Ergebnis holt, wird 3 Mal aufgerufen.

"UPDATE grade SET midterm_grade = '$last' WHERE grade_id = '$grade_id'";

In dieser Abfrage die grade_id aus allen resultset kommt

Grundsätzlich Sie tun dies 1- den letzten Wert der Linie der CSV erhalten 2- Wählen Sie alle Datensätze 3- Update alle von ihnen mit dem Wert von 1- 4- nächste Zeile

Anstatt alle mysql-Datenbank für die SELECT-Schleife, sollten Sie in der Lage sein, nur den Datensatz zu wählen, den Sie benötigen. Ich weiß nicht, ob Ihre CSV-Datei voll ist, aber haben Sie die Note_ID in einer Spalte? Wie können Sie eine Zeile Ihrer CSV-Datei einem Datensatz in Ihrer Datenbank zuordnen?

EDIT

nach Diskussion sagten, Sie einen eindeutigen Schlüssel auf dem Abschnitt, Laufzeit und Thema haben (Sie haben eine Beziehung zwischen einer Reihe in CSV und eine Zeile in der Datenbank zu identifizieren)

$last = end($emapData); //to get the last column 
$section = $emapData[0]; // assuming section is the first column of CSV 
$term = $emapData[1]; // assuming term is the 2nd column of CSV 
$subject = $emapData[2]; // assuming subject is the 3rd column of CSV 

$sql = "UPDATE grade SET midterm_grade = '$last' WHERE section = '$section' AND term = '$term' AND subject = '$subject'"; 
$result = mysqli_query($con, $sql); 
+0

Jede Zeile hat eine Note_id Sir. Ich weiß nicht, wie man die grade_id dafür benutzt. – nethken

+0

Alle Aufzeichnungen werden benötigt, Sir. Jede .csv enthält einen Abschnitt des Schülers. Ich weiß nicht, wie ich es mit nur einem Klick aktualisieren kann. – nethken

+0

Sie bestätigen, dass Sie eine case_id in der CSV haben? – Sylwit

Verwandte Themen