2016-11-11 1 views
-1

Ich habe einfache DB-Abfrage, die Gruppe Ländercodes und die Anzahl der Instanzen in der DB ausgeben wird. Ich versuche, diese Daten in einer Tabelle mit PHP anzuzeigen.PHP in html - Anzeigetabelle

Beim Anzeigen der Seite wird nach dem Tag <tbody> nichts angezeigt. Ich habe gesucht, wie man PHP inline mit HTML richtig laufen lässt und ich sehe nicht, was ich falsch mache. Vorschläge?

<table id="countryList" class="table table-striped"> 
    <thead> 
     <tr> 
      <th width="50%" class="tableheading">Country</th> 
      <th width="50%" class="tableheading" style="text-align:center;">Count</th> 
     </tr> 
     </thead> 
     <tbody> 
     <?php 
     for($x = 0; $x < count($cn_count['result']); $x++){ 
      echo "<tr>"; 
      echo "<td class='tablebody' title='Unkown'>".$cn_count['result'][$x]['_id']['cn']."</td>"; 
      echo "<td class='tablebody' style='text-align:center;'>".$cn_count['result'][$x]['count']."</td>"; 
      echo "</tr>"; 
      if($x == 14){ 
      break; 
      } 
     }?> 
    </tbody> 
</table> 

die mongoDB Abfrage

$cn_count = $collection->aggregate([['$group' => ['_id' => ['cn' => '$cn'],'count'=>['$sum'=>1]]],['$sort' => ['count' => -1]]]); 

Die Abfrage, die erwarteten Ergebnisse liefert, wird es einfach, dass der Inline-PHP nicht nach dem <tbody> Tag läuft. Andernfalls würde die Seite immer noch den Rest des Inhalts anzeigen.

---- ---- VarDump

php > var_dump($cn_count); 
object(MongoDB\Driver\Cursor)#11 (2) { 
    ["cursor"]=> 
    array(17) { 
    ["stamp"]=> 
    int(0) 
    ["is_command"]=> 
    bool(false) 
    ["sent"]=> 
    bool(true) 
    ["done"]=> 
    bool(false) 
    ["end_of_event"]=> 
    bool(false) 
    ["in_exhaust"]=> 
    bool(false) 
    ["has_fields"]=> 
    bool(false) 
    ["query"]=> 
    object(stdClass)#13 (0) { 
    } 
    ["fields"]=> 
    object(stdClass)#10 (0) { 
    } 
    ["read_preference"]=> 
    array(2) { 
     ["mode"]=> 
     int(1) 
     ["tags"]=> 
     array(0) { 
     } 
    } 
    ["flags"]=> 
    int(0) 
    ["skip"]=> 
    int(0) 
    ["limit"]=> 
    int(0) 
    ["count"]=> 
    int(2) 
    ["batch_size"]=> 
    int(0) 
    ["ns"]=> 
    string(9) "spam.mail" 
    ["current_doc"]=> 
    object(stdClass)#15 (2) { 
     ["_id"]=> 
     object(stdClass)#14 (1) { 
     ["cn"]=> 
     string(2) "NA" 
     } 
     ["count"]=> 
     int(264) 
    } 
    } 
    ["server_id"]=> 
    int(1) 
} 
php > 
+2

können Sie den Code der Datenbank-Abfrage zeigen & $ cn_count Variable assignation – erwan

+0

var_dump'ed $ cn_count ['Ergebnis']? –

+1

Fügen Sie hinzu: ini_set ('display_errors', 'on'); an der Spitze Ihrer Datei und posten Sie bitte die Ausgabe. – deChristo

Antwort

0

Da Sie nichts innerhalb tbody bekommen, es sicher ist, Ihr Problem zu sagen, in dieser Linie ist:

for($x = 0; $x < count($cn_count['result']); $x++){ 

Seit $x ist richtig initialisiert, haben Sie ein Problem mit $cn_count. Es ist entweder:

  • nicht
  • keine richtige Parameter für count
  • leer
  • initialisiert
+1

Warum bekommt er eine Down-Abstimmung? Es scheint, als wäre einer dieser Vorschläge die Ursache. Hast du print_r das $ cn_count ['result'] um zu sehen, welche Art von Ergebnissen du bekommst? –

+0

das Problem war, dass $ cn_count wurde nicht initialisiert. $ cn_count war der Abfrage-Cursor und ich habe den Iterator-Rücklauf nicht verwendet. –