2016-04-16 10 views
1

PHPを使用してMySQLテーブルをHTMLテーブルとして表示できるPHP関数を作成しようとしています。これまでのところ、私が選択したテーブルを出力することができましたが、空のセルがHTMLテーブルになるため、MySQLテーブルに空の行が含まれているときに問題が発生しています。私のコードはそのようなものです:MySQLテーブルから空の行を解析し、空のセルを使わずにhtmlテーブルとして出力する

<?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(); 

?> 

私のジレンマは、コードの「テーブルの印刷」セクションにあります。 while($row = mysql_fetch_row($result))に値が入っている行だけを受け入れる方法があることを願っています。何か案は?

私はすでに運に以下の行を使用してみましたが

$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); 
    } 

HTMLの表に出力任意のMySQLの表は、ウェブサイト上に表示させることができ、このPHPの機能を助けるためにポールSpiegalにとても感謝...仕事関数は次のようになり、ただのMySQLのデータにアクセスするための変数の値を変更します。

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

「空の行」とは何ですか?すべての告白はNULLですか? –

+0

テーブルのフィールドはわかっています。だから、がnullでないところに条件を入れてください。 *はnullではありません。 – naf4me

+0

それは申し訳ありませんが、私は "空の行"を意味する行/レコードには、NULLか、悪い入力エラーのために空のスペースであるmysqlテーブルですrefferingです。 –

答えて

1

破()関数を使用して、1つの文字列にすべてのセルを組み合わせることができます。その文字列が空の場合、その行の印刷はスキップされます。

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

それはまさに私が必要としていた機能であり、存在していたのか、それが呼び出されたのか分かりました。どうもありがとうございます。 –

関連する問題