2016-03-30 1 views
0

Ich versuche, HTML-Tabelle aus einer gespeicherten Prozedur mit PDO.Resultset enthält viele Spalten und Zeilen, die zu einem Excel exportiert werden muss. Aber ich muss die Spaltennamen in der ersten Zeile sein, wie kann auf den folgenden Code möglich sein? Irgendeine Hilfe ?erhalten Spalte Namen von gespeicherten Prozedur für die Anzeige in HTML-Tabelle mit PHP

$q= $db->prepare("CALL spalldetails"); 
    $q->execute(); 

    while ($arrValues = $q->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo "<tr>"; 
     foreach ($arrValues as $key=>$value) 
     { 
      $column_names[]=$key; 
    ?> 

     <td><?=$value?></td> 
     <? 
     } 
    echo "</tr>"; 

     } 

Der folgende Code zeigt den Spaltennamen an, aber ich möchte, dass es die oberste Zeile der Tabelle ist.

echo "<tr>"; 
foreach ($column_names as $name) 
{ ?> 
    <td> 
    <?=$name?> 
    </td> 
<? 
} 
echo "</tr>"; 
?> 

Antwort

1

Die Frage hat nichts mit gespeicherten Prozeduren zu tun, wie es anwendbar ist, zu alle Daten, die von der Datenbank zurückgegeben werden.

die bequemste Möglichkeit wäre, die Daten zuerst zu holen, die Spaltennamen aus der ersten Zeile abzurufen und dann die Daten zu drucken.

außerdem Verwendung ausführen herzustellen, ist nicht gerechtfertigt, für diese Abfrage

$data = $db->query("CALL spalldetails")->fetchAll(PDO::FETCH_ASSOC); 
$column_names = array_keys($data[0]); 

hier haben Sie Ihre Spaltennamen vor der Ausgabe, die Sie mit foreach machen können() anstelle von while()

+0

ich verwende while ($ arrValues ​​= $ q-> fetch (PDO :: FETCH_ASSOC)), wie ich für jede Zeile drucken muss. – Wings2fly

+0

Jetzt können Sie es in 'foreach ($ data as $ arrValues)' ändern, wobei der Rest des Codes gleich bleibt –

-1

Ich würde vorschlagen, anstelle der Ausgabe sofort während der Verarbeitung der durch die for-Schleife, erstellen Sie lieber eine Zeichenfolge, um später auszugeben. Dies kann einfach wie dies erreicht werden: (mind Sie die unten ist nicht getestet Code Luft, aber Ihnen ein Beispiel zu zeigen, was ich meine)

$q= $db->prepare("CALL spalldetails"); 
    $q->execute(); 

    while ($arrValues = $q->fetch(PDO::FETCH_ASSOC)) 
{ 
    $tablestring .= "<tr>"; 
    foreach ($arrValues as $key=>$value){ 
     $column_names[]=$key; 
     $tablestring .= "<td>".$value."</td>"; 
    } 
$tablestring .= "</tr>"; 
} 

$headstring .= "<tr>"; 
foreach ($column_names as $name) 
{ $headstring .= "<td>".$name."</td>"; 
    } 
$headstring .= "</tr>"; 

echo "<table>".$headstring.$tablestring."</table>"; 
+0

dieser Code Drucken Sie zu viele Spaltennamen. –

Verwandte Themen