2016-09-16 2 views
-1

Ich habe einige PostgreSQL-Abfragen und die Ausgabe sieht wie folgt aus. Jetzt möchte ich diese Ausgabe Abfrage PHP, wie dies zu tun? meine PostgreSQL-Abfrage ist wie folgt:Wie erstellt man eine Tabelle in PHP mit PostgreSQL-Abfragen?

$query = 'select 
    round(
    100.00 * 
    (sum(case when "WELLTYPE"= 'DT' and ("CONC_ARSC" between 0 and 10) then 1 else 0 end))/(sum(case when "WELLTYPE"= 'DT' then 1 else 0 end)),1) "0-10", 
    round(
    100.00 * 
    (sum(case when "WELLTYPE"= 'DT' and ("CONC_ARSC" between 11 and 50) then 1 else 0 end))/(sum(case when "WELLTYPE"= 'DT' then 1 else 0 end)),1) "11-50", 
    round(
    100.00 * 
    (sum(case when "WELLTYPE"= 'DT' and ("CONC_ARSC" >50) then 1 else 0 end))/(sum(case when "WELLTYPE"= 'DT' then 1 else 0 end)),1) ">50", 
    round(
    100.00 * 
    (sum(case when "WELLTYPE"= 'DT' and ("CONC_ARSC" between 0 and 10) then 1 else 0 end))/(sum(case when ("WELLTYPE"= 'DT' or "WELLTYPE"= 'DW' or "WELLTYPE"= 'FT' or "WELLTYPE"= 'ST') and ("CONC_ARSC" between 0 and 10)then 1 else 0 end)),1) "Total" 
    from public."Arsenic_Test"'; 

Die Ausgabe von oben PostgreSQL-Abfrage wie folgt aussieht:

____________________________________________ 
|0_to_10| 11_to_50 | greater_than_50 | Total| 
--------+----------+-----------------+------| 
| 100 | 0.0 | 0.0   | 0.4 | 
---------------------------------------------- 

ich bin sehr beginer in php so ich weiß nicht, wie ich anfangen soll. Ich hatte Datenbankverbindung und es funktioniert gut. Ich hatte Array erstellen Tabelle in Web erstellt (mit PHP)

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 

    $db_connection = pg_connect("host=localhost port=5433 dbname=BankeDB user=postgres password=admin"); 
     echo $db_connection; 
    $query = 'select.... (above query) '; 
$result = pg_query($db_connection, $query, $POST); 
    $result = pg_query($db_connection, $query); 
$DT = array('0-10','11-50','>50',total); 
    $result = pg_query($db_connection, $query); 
         while ($DT = pg_fetch_row($result)) { 
       echo "<tr>"; 
         echo "<td>$DT[0]</td>"; 
         echo "<td>$DT[1]</td>"; 
         echo "<td>$DT[2]</td>"; 
         echo "<td>$DT[3]</td>"; 
         echo "<td>$row[4]</td>"; 
       echo "</tr>"; 
       } 

    echo $result;    
       pg_close($db); 
+0

Bitte posten Sie, was Sie versucht haben, und alle Fehler, die Sie aufgetreten sind. Auch ein Beispiel für die Ausgabe, die Sie wünschen, wäre nett. – ChristianF

+0

Ich bin sehr beginer in PHP so weiß ich nicht, wie ich anfangen soll. Ich hatte Datenbankverbindung und es funktioniert gut. Ich hatte Array erstellt, um Tabelle im Web zu erstellen (mit PHP) – Ram

+0

@ChristianF Ich hatte einige Informationen hinzugefügt, was ich bisher getan habe. Kannst du mir bitte helfen, es zu klären? – Ram

Antwort

0

Ich denke, das Beste, was man tun könnte, sich zu hinsetzen und lesen (laut) zu sich, was jede einzelne Codezeile tut. Was es tatsächlich tut, nicht was du willst, wohlgemerkt.

Ein schnelles Beispiel hierfür ist die folgende Zeile: while ($DT = pg_fetch_row ($result)) {
Darin heißt es, daß, so lange wie es Reihen links ist (while und pg_fetch_row()), dann sollte es die nächste Zeile der Ergebnismenge fetch () und speichern Sie es in der Variable $ DT. Überschreibungs alle vorherigen in diesen Variablen gespeicherten Daten ($DT =)

Dadurch werden Sie ein viel besseres Verständnis von dem, was Ihr Code tatsächlich tut, so dass Sie einige aktuelle Programmierung zu tun und nicht nur Sachen werfen es etwas Sticks der Hoffnung (Werke).

Eine weitere Voraussetzung, an der Sie arbeiten sollten, ist die eigentliche Planung der erforderlichen Schritte. Wenn Sie dies tun, bevor Sie mit dem Schreiben des Codes beginnen, wird es viel einfacher, den Code zu schreiben. Da Sie das meiste Problem bereits im Vorfeld gelöst haben, müssen Sie die Lösung lediglich von einfachem (Kurzschrift-) Englisch in PHP übersetzen.
Dies wird mit einer Technik namens "pseudo code" gemacht, und ich empfehle dringend, es zu lesen!

Das sagte, ich habe Ihren Code ein wenig aufgeräumt und kommentiert. Um Ihnen den Einstieg:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // Normally you'll want to remove the connection details from the code you post. 
    $db_connection = pg_connect ("host=localhost port=5433 dbname=BankeDB user=postgres password=admin"); 

    $query = 'select.... (above query) '; 

    // Here you're actually running the query three times in a row, 
    // overwriting the previous result each time. 
    // Also, why "$POST"? 
    $result = pg_query ($db_connection, $query, $POST); 
    $result = pg_query ($db_connection, $query); 
    $result = pg_query ($db_connection, $query); 

    // Temporary variable to hold the output, instead of directly (and irreverably) sending it to the browser. 
    // Using the HereDOC syntax, to make things a bit easier to read. 
    // It's here you want to write out the headers, as they're in their own row. (TR == table row) 
    $htmlOut = <<<outHTML 
<table> 
    <thead> 
     <tr> 
      <th></th> 
      .... 
     </tr> 
    </thead> 
    <tbody> 
outHTML; 

    // Why not just add the table header cells to the output directly? 
    $DT = array ('0-10', '11-50', '>50', total); 

    // As you're overwriting (deleting) the contents of above array here anyway. 
    while ($DT = pg_fetch_row ($result)) { 
     // Again, hereDOC syntax for easier reading. 
     // Though, where do you get the "$row" variable from? 
     $htmlOut .= <<<outHTML 
     <tr> 
      <td>{$DT[0]}</td> 
      <td>{$DT[1]}</td> 
      <td>{$DT[2]}</td> 
      <td>{$DT[3]}</td> 
      <td>{$row[4]}</td> 
     </tr> 
outHTML; 
    } 

    // $result is a PG resource, so I assume this is for debugging purposes only. 
    // echo $result; 

    // You'll want to print out the completed array instead. 
    echo $htmlOut."\t</tbody>\n</table>\n"; 
} 

PS: Ich empfehle auch in PDO suchen, anstatt die alten pg_*() Funktionen.

Verwandte Themen