2016-04-16 12 views
1

Ich habe versucht, eine PHP-Funktion zu erstellen, die eine MySQL-Tabelle als HTML-Tabelle mit PHP anzeigen kann. Bis jetzt bin ich in der Lage, irgendeine Tabelle I Wahl auszugeben, aber ich stoße auf ein Problem, wenn die MySQL Tabelle leere Reihen enthält, weil leere Zellen die HTML Tabellen ergeben. Mein Code ist als solche:Leere Zeilen von MySQL-Tabelle analysieren und als HTML-Tabelle ohne leere Zellen ausgeben

<?php 
function getTABLE(){ 
$db_host = 'HOST.com'; 
$db_user = 'USER1'; 
$db_pwd = 'PASSWORD'; 
$database = 'testdb'; 
$table = 'FAQTable'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 
if (!mysql_select_db($database)) 
    die("Can't select database"); 

//// sending query and only result cell that are not NULL 
$result = mysql_query("SELECT * FROM {$table}"); 

if (!$result) { 
    die("Query to show fields from table failed"); 
} 

$fields_num = mysql_num_fields($result); 
echo "<h3><center>Table: {$table}</h3>"; 
echo "<table border='1'><tr>"; 

    //// printing table headers 
for($i=0; $i<$fields_num; $i++){ 
    $field = mysql_fetch_field($result); 
    echo "<td>{$field->name}</td>"; 
} 

    //// printing table rows 
    while($row = mysql_fetch_row($result)){ 
    echo "<tr>"; 
    //// $row is array... foreach(..) puts every element 
    //// of $row to $cell variable 
    foreach($row as $cell) 
     echo "<td>$cell</td>"; 
    echo "</tr>"; 
} 
print "</TABLE>"; 
mysql_close(); 
} 

print getTABLE(); 

?> 

Mein Dilemma in der „Drucktabellenzeilen“ des Codes ist. Ich hoffe, dass es einen Weg in der while($row = mysql_fetch_row($result)) gibt, nur Zeilen zu akzeptieren, die Werte in ihnen haben. Irgendwelche Ideen?

ich bereits versucht haben, ohne Erfolg die folgenden Zeilen ein:

$result = mysql_query("SELECT * FROM {$table} WHERE * IS NOT NULL"); 
$result = mysql_query("SELECT COUNT(id) FROM {$table} where answer IS NOT NULL or answer <>'' "); 
$result = mysql_query('SELECT COUNT(*) FROM {$table} WHERE answer <> ""'); 
$result = mysql_query("SELECT * FROM {$table} WHERE CHAR_LENGTH>0"); 
$result = mysql_query("SELECT * FROM {$table} WHERE val1 is <> '' "); 
$result = mysql_query("SELECT * FROM {$table} WHERE col1 is <> '' "); 

//// Outputs funky count in a separate table, but not the desired table with no empty cells 
$result = mysql_query("SELECT COUNT(answer) FROM {$table} WHERE CHAR_LENGTH(answer)>0"); 
$result = mysql_query("SELECT COUNT(answer) FROM {$table} WHERE LENGTH(answer)>0"); 

$reslts = mysql_query("SELECT * FROM {$table}"); 
while($row = mysql_fetch_row($reslts)){ 
    $empty_count = 0; 
    $count = count($row); 
     for($i = 0; $i < $count; $i++) 
      if($row[$i] === '' || $row[$i] === 'NULL') 
       $empty_count++; 
     $result = ($count); 
    } 

Um Paul Spiegal So Dank dieser PHP-Funktion für die Unterstützung, die ausgegeben jede MySQL Tabelle in eine HTML-Tabelle auf einer Webseite angezeigt werden ... Die Arbeitsfunktion ist wie folgt, nur die Werte ändern, für die Variablen alle MySQL-Daten zugreifen zu:

function getTABLE(){ 
$db_host = 'www.host.com'; 
$db_user = 'user1'; 
$db_pwd = 'password'; 
$database = 'testdb'; 
$table = 'MyTable'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 
if (!mysql_select_db($database)) 
    die("Can't select database"); 

//// sending query 
$result = mysql_query("SELECT * FROM {$table}"); 
if (!$result) { 
    die("Query to show fields from table failed"); 
} 
$fields_num = mysql_num_fields($result); 

echo "<h3><center>Table: {$table}</h3>"; 
echo "<table border='1'><tr>"; 

//// printing table headers 
for($i=0; $i<$fields_num; $i++){ 
    $field = mysql_fetch_field($result); 
    echo "<td>{$field->name}</td>"; 
} 

//// printing table rows 
while($row = mysql_fetch_row($result)){ 
    echo "<tr>"; 
     if (strlen(implode('', $row)) == 0) { 
      continue; 
     }else { 
      foreach($row as $cell) 
      echo "<td>$cell</td>"; 
      echo "</tr>"; 
     } 
} 
print "</TABLE>"; 
mysql_close(); 
} 

print getTABLE(); 
+0

Was ist eine "leere Zeile"? Alle Fealds sind NULL? –

+0

Sie kennen die Tabellenfelder. Legen Sie also eine Bedingung an, in der nicht null ist. Nicht * ist nicht null. – naf4me

+0

Entschuldigung, was ich mit einer "leeren Zeile" meine, bezieht sich auf eine Zeile/einen Datensatz ist eine MySQL-Tabelle, die entweder NULL ist oder aufgrund eines fehlerhaften Eingabefehlers ein leerer Platz ist. –

Antwort

1

Mit implode() Funktion, können Sie alle Zellen in einer Zeichenkette kombinieren. Wenn diese Zeichenfolge leer ist, überspringen Sie das Drucken dieser Zeile.

while($row = mysql_fetch_row($result)){ 
    if (strlen(implode('', $row)) == 0) { 
     continue; // skip this empty row 
    } else { 
     // TODO: print this row 
    } 
} 
+0

Das ist genau die Funktion, die ich brauchte und wusste, ob sie existiert oder wie sie heißt. Ich danke dir sehr. –

Verwandte Themen