2017-12-22 6 views
-1

Ich habe Daten von Ms SQL Server 2008 holen. Ich habe drei Abfrage ausführen in einer Zeit und eine Anweisung auszuführen. First Query ist Student Detail und Marks, Second Query ist Gesamtmarkierungen und Prozent, Third Query ist Exam Name.PHP - while Loop-Problem

Ich habe Problem ist, dass While-Schleife nur einen Datensatz anzeigen, aber tatsächlich gibt es vier Datensätze. Drei Datensätze werden nicht angezeigt. Prozentwertanzeige ist null.

Marks1.php

$reg = $_GET['reg']; 

$sql = "select b.std_Name,d.Standard,e.Division,a.ExamDate,f.subject,a.ExamName,a.Marks,a.TotalMarks,a.PassingMarks 
            from Marks_mas a inner join std_reg b on a.regno=b.regno 
            INNER JOIN Subject_mas as f ON a.Subject_ID = f.Subject_ID 
            inner join StandardMaster d on a.standard = d.STDID 
            inner join DivisionMaster e on a.Division = e.DivisionID 
            where a.RegNo= '$reg' order by a.ExamDate; select sum(a.Marks) as Marks,sum(a.TotalMarks) as TotalMarks, (sum(a.Marks)/sum(a.TotalMarks) * 100) as Percentage 
            from Marks_mas a 
            where a.RegNo= '$reg'; select distinct ExamName From Marks_mas;"; 

$stmt = sqlsrv_query($conn, $sql); 

$result = array(); 

if (!empty($stmt)) { 
     // check for empty result 
     if (sqlsrv_has_rows($stmt) > 0) { 

      //$stmt = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); 



      while ($stmt = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ 
      $marks = array(); 
      $marks["std_Name"] = $stmt["std_Name"]; 
      $marks["Standard"] = $stmt["Standard"]; 
      $marks["Division"] = $stmt["Division"]; 
      $marks["ExamDate"] = $stmt["ExamDate"]; 
      $marks["subject"] = $stmt["subject"]; 
      $marks["ExamName"] = $stmt["ExamName"]; 
      $marks["Marks"] = $stmt["Marks"]; 
      $marks["TotalMarks"] = $stmt["TotalMarks"]; 
      $marks["PassingMarks"] = $stmt["PassingMarks"]; 


      $total = array(); 
      $total["Marks"] = $stmt["Marks"]; 
      $total["TotalMarks"] = $stmt["TotalMarks"]; 
      $total["Percentage"] = $stmt["Percentage"]; 

      $exam = array(); 
      $exam["ExamName"] = $stmt["ExamName"]; 

      } 




      // success 
      $result["success"] = 1; 


      // user node 
      $result["marks"] = array(); 
      $result["total"] = array(); 
      $result["exam"] = array(); 


      array_push($result["marks"],$marks); 
      array_push($result["total"],$total); 
      array_push($result["exam"],$exam); 

      // echoing JSON response 
      echo json_encode($result); 


     } else { 
      // no product found 
      $result["success"] = 0; 
      $result["message"] = "No product found"; 

      // echo no users JSON 
      echo json_encode($result); 

     } 

     //sqlsrv_free_stmt($stmt); 
     sqlsrv_close($conn); //Close the connnection first 

    } 

Geben Sie Fehler in Bild:

enter image description here

In Bildmarkierungen Array Satzanzeige ein, aber eigentlich gibt vier Rekord. Drei Datensätze werden nicht angezeigt. Gesamtarray Prozentwert ist null.

Geben Sie unten das tatsächliche Ergebnis an. In den Feldern Array-Anzeige Vier Datensatz und Gesamt-Array geben Prozentwert an.

Ich habe dieses Ergebnis benötigen:

{"success":1,"marks":[{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-06 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"subject":"MATHS","ExamName":"WT","Marks":"30.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-07 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"15.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-10-08 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"25.00","TotalMarks":"30.00","PassingMarks":"10"},{"std_Name":"VIVEK SANAPARA","Standard":"12-SCI-CE","Division":"A","ExamDate":{"date":"2016-11-22 00:00:00.000000","timezone_type":3,"timezone":"Asia\/Kolkata"},"subject":"PHYSICS","ExamName":"WT","Marks":"25.00","TotalMarks":"30.00","PassingMarks":"10"},],"total":[{"Marks":"30.00","TotalMarks":"30.00","Percentage":"79.166600"}],"exam":[{"ExamName":"WT"}]} 
+2

Sie versuchen, mehrere SELECT-Anweisungen in einer Abfrage auszuführen und erwarten dann, die Werte separat zurück zu erhalten. Versuchen Sie, sie in einzelne Abfragen aufzuteilen - es sei denn, Sie können sie in 1 select-Anweisung setzen. –

+0

ich wurde es versucht. gib mir ein Beispiel – raj

Antwort

0

JOIN links gehe ich davon aus den Marks_mas ist die Master-Tabelle, die zu den anderen Tabellen verbindet.

$sql = "select b.std_Name,d.Standard,e.Division,a.ExamDate,f.subject,a.ExamName,a.Marks,a.TotalMarks,a.PassingMarks 
           from Marks_mas a LEFT join std_reg b on a.regno=b.regno 
           LEFT JOIN Subject_mas as f ON a.Subject_ID = f.Subject_ID 
           LEFT join StandardMaster d on a.standard = d.STDID 
           LEFT join DivisionMaster e on a.Division = e.DivisionID 
           where a.RegNo= '$reg' order by a.ExamDate; select sum(a.Marks) as Marks,sum(a.TotalMarks) as TotalMarks, (sum(a.Marks)/sum(a.TotalMarks) * 100) as Percentage 
           from Marks_mas a 
           where a.RegNo= '$reg'; select distinct ExamName From Marks_mas;";