2017-12-28 10 views
0

Ich entwickle eine Webanwendung. Ich benutze SQL Server und PHP. Ich muss einige ausgewählte Spalten aus verschiedenen Tabellen der Datenbank auswählen und im Tabellenformat anzeigen. Es sollte auch die Summe einer der Spalten nach der Auswahl anzeigen (Es ist ein Benutzer Monatsbericht und die Punkte, die der Benutzer am Ende des Monats erzielt hat. So sollte es die Summe der Punkte anzeigen).Verwenden Sie SQL-Abfragen in PHP, um einen Bericht in einer Webanwendung anzuzeigen

<?php 

$serverName = ""; 
$connectionInfo = array("Database" => "...", "UID" =>"...", "PWD"=>"..."); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
if ($conn === false){ 
    die(print_r(sqlsrv_errors(),true)); 
} 

$sql = "(Select Ad.[Act], Ad.[Units], Ad_Acts.[Name] from Ad JOIN Ad_Act ON Ad.ActID = Ad_Act.ActAttend) 
     Union ALL(Select Citi.[Act2], Citi.[Units2], Citi_act.[Name] from Citi JOIN Citi_Acts ON Citi.ActID2 = Citi_Act.ActAttend2) 
     Union ALL(Select ComOut.[Act3], ComOut.[Units3], ComOut_Act.[Name] from ComOut JOIN ComOut_Act ON ComOut.ActID3 = ComOut_Act.ActAttend3) 
     Union ALL(Select ReSchAct.[Act4], ReSchAct.[Units4], ReSch_Act.[Name] from ReSchAct JOIN ReSch_Act ON ReSchAct.ActID4 = ReSch_Act.ActAttend4) 
      Union ALL(Select TeEd.[Act5], TeEd.[Units5], TeEd_Act.[Name] from TeEd JOIN TeEd_Act ON TeEd.ActID5 = TeEd_Act.ActAttend5)" 


; 

$stmt = sqlsrv_query($conn, $sql); 
if($stmt === false){ 
    die(print_r(sqlsrv_errors(), true)); 
} 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ 
echo $row['Act']. ",".$row['Units']. "," .$row['Name']. "<br></br>"; 
} 

sqlsrv_free_stmt($stmt); 

?> 

Der obige Code funktioniert. Ich möchte nur Hilfe mit dem Code, um das Ganze in einer Tabelle anzuzeigen und die Summe der Einheiten am Ende anzuzeigen. Danke!

+0

Wir haben keine Ihre Daten, um diesen Code auszuprobieren. Ergänzen Sie diese Frage um die aktuelle Ausgabe, die Sie haben. Tipp, um Daten als Tabelle anzuzeigen, siehe '

'. Dann können Sie Ihre Ergebnisse loopen und die Elemente ' 'und' ' zum Ausfüllen verwenden. https://www.w3schools.com/html/html_tables.asp – Nic3500

+0

Abfragen zeigen ein suboptimales Datenbankdesign an. Man sollte ähnliche strukturierte Daten nicht in separate Tabellen aufteilen: * Ad, Citi, ComOut, ReSchAct, TeEd * sollten alle in einer Tabelle und ihre * _Act * Tabellen in einer zweiten Tabelle mit jeweils einer Indikatorspalte für die Kategorie gespeichert werden. Sie pflegen also 2 Tabellen und nicht 10! – Parfait

+0

Ich weiß es richtig! Aber der Benutzer wollte eine Navigationsleiste. Also musste ich verschiedene Tabellen erstellen und 10 verschiedene Navbars anzeigen! Die 5 Tabellen sind fünf verschiedene Arten von Formularen, die die Benutzereingabe übernehmen. Die Web-App wird also über 10 Navigationsleisten verfügen, so dass der Benutzer einfach auf jede klicken und ihre Aktivität eingeben muss. –

Antwort

1

Angenommen, Ihre Ausgabe kommt mit 3 Feldern zurück, Act, Units, and Name, dann könnten Sie Ihre Ausgabe mit dem unteren Abschnitt des folgenden Snippets erhalten. Ist dies nicht der Fall ist, dann laufen Sie wahrscheinlich in das Problem, dass Ihre UNION Felder mit verschiedenen Aliasnamen ist die Kombination, die von den Änderungen gelöst werden soll ich auf Ihre select-Anweisung gemacht ..

<?php 
// ....... 

$sql = "(Select Ad.[Act] 'Act', Ad.[Units] 'Units', Ad_Acts.[Name] from Ad JOIN Ad_Act ON Ad.ActID = Ad_Act.ActAttend) 
     Union ALL(Select Citi.[Act2] 'Act', Citi.[Units2] 'Units', Citi_act.[Name] from Citi JOIN Citi_Acts ON Citi.ActID2 = Citi_Act.ActAttend2) 
     Union ALL(Select ComOut.[Act3] 'Act', ComOut.[Units3] 'Units', ComOut_Act.[Name] from ComOut JOIN ComOut_Act ON ComOut.ActID3 = ComOut_Act.ActAttend3) 
     Union ALL(Select ReSchAct.[Act4] 'Act', ReSchAct.[Units4] 'Units', ReSch_Act.[Name] from ReSchAct JOIN ReSch_Act ON ReSchAct.ActID4 = ReSch_Act.ActAttend4) 
      Union ALL(Select TeEd.[Act5] 'Act', TeEd.[Units5] 'Units', TeEd_Act.[Name] from TeEd JOIN TeEd_Act ON TeEd.ActID5 = TeEd_Act.ActAttend5)"; 

// ........ 

$totalUnits = 0; 
?> 

<table> 
    <tr> 
     <th>Act</th> 
     <th>Units</th> 
     <th>Name</th> 
    </tr> 
<?php while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) : ?> 
    <tr> 
     <td><?php echo $row['Act']</td> 
     <td><?php echo $row['Units']</td> 
     <td><?php echo $row['Name']</td> 
    </tr> 
    <?php $totalUnits = $totalUnits + intval($row['Units']); ?> 
<?php endwhile; ?> 
    <tr> 
     <td></td> 
     <td>Total Units: </td> 
     <td><?php echo $totalUnits; ?></td> 
    </tr> 
</table> 
+0

Hey, der Code funktioniert, aber es zeigt nicht die Summe der Spalte (Einheiten). –

+0

Ich habe eine Änderung an den ' 'Linie, die 2 der möglichen Probleme lösen sollte. –

+0

Ja, es hat funktioniert. Ich danke dir sehr!! :) –

Verwandte Themen