@ exodream
Спасибо за ваш комментарий.
Это мой новый ответ на ваш вопрос, он избегает пустых строк, если вам нужно избежать пустых столбцов или нужно что-то еще, дайте мне знать.
<code><?php
//make the labels
$labels=array('Gattung','Untergattung','Sektion','Untersektion','Serie',
'Unterserie','Art','Unterart','Varietaet','SubVarietaet','Form','Unterform',
'SpezialForm','Hybride','Blendling','Sorte' );
// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
//select database
mysql_query("drop database if exists `test_db`;")or die(mysql_error());
mysql_query("create database `test_db`;")or die(mysql_error());
mysql_select_db("test_db") or die(mysql_error());
//create table
mysql_query(" drop table if exists `test_table`;")or die(mysql_error());
mysql_query("
CREATE TABLE `test_table` (
`Gattung` char(30) NULL ,
`Untergattung` char(30) NULL ,
`Sektion` char(30) NULL ,
`Untersektion` char(30) NULL ,
`Serie` char(30) NULL ,
`Unterserie` char(30) NULL ,
`Art` char(30) NULL ,
`Unterart` char(30) NULL ,
`Varietaet` char(30) NULL ,
`SubVarietaet` char(30) NULL ,
`Form` char(30) NULL ,
`Unterform` char(30) NULL ,
`SpezialForm` char(30) NULL ,
`Hybride` char(30) NULL ,
`Blendling` char(30) NULL ,
`Sorte` char(30) NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;") or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
('Gattung_A',null,null,null,null,null,'Art_A',null,null,null,'Form_A',null,null,null,null,null ) ")
or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
('Gattung_A',null,null,null,null,null,'Art_A',null,null,null,'Form_A',null,null,null ,null,null ) ")
or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
('Gattung_B',null,null,null,null,null,'Art_C',null,'Variant_A',null,null,null,null,null,null,null ) ")
or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null ) ")
or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
('Gattung_Q',null,null,null,null,null,'Art_C',null,'Variant_A',null,'Form_W',null,null,null,null,null ) ")
or die(mysql_error());
mysql_query("INSERT INTO `test_table` VALUES
('Gattung_Q',null,'test','test','test','test','Art_S','test','Variant_Y','test','Form_H','test','test','test','test','last' ) ")
or die(mysql_error());
//get result
$result = mysql_query("SELECT * FROM `test_table` ;")
or die(mysql_error());
normal_display();
non_empty_row_display();
non_empty_column_display();
function non_empty_row_display()
{
//get data
global $result;
$final_array=array();
global $result;
mysql_data_seek ($result , 0);
print '<b><br><h2>TABLE: 2 NON EMPTY VALUES OF EACH ROW</h2></b>';
print '<table border=7 bordercolor=orange >';
$index=0;
$color=array('#66CCFF','#00FF00');
//for every row of the table
while($row = mysql_fetch_row($result))
{
$current_row='';
//for every coloumn
foreach ($row as $value)
//if value is not null
if($value!=null)//then keep it
$current_row .= $value.' | ';
if($current_row!='')
echo '<tr bgcolor=',$color[$index%2],'><th>ROW ',$index++,'</th><td>',$current_row,'</td></tr>',
'<tr><td colspan=2 height=5 bgcolor=pink></td></tr>';
}//while
echo '</table>';
}//function
function normal_display()
{
print '<b><h2>TABLE:1 Normal display</h2></b>';
print '<table border=1><tr>';
global $labels;
foreach($labels as $value)
echo '<th>',$value,'</th>';
print '</tr>';
global $result;
while($row = mysql_fetch_row($result))
{
print '<tr>';
foreach($row as $value)
echo '<td>',$value,' </td>';
print '</tr>';
}//while
print '</table>';
}//function
function non_empty_column_display()
{
//get data
global $result;
mysql_data_seek ($result , 0);
//for every row of the table
$final_column=array();
while($row = mysql_fetch_row($result))
//for every coloumn
foreach ($row as $key => $value)
//if value is not null
if($value!=null)
//if $final_column[$key] exists append value to it, otherwise assign value
$final_column[$key]=(isset($final_column[$key]))?$final_column[$key].=$value.'<br>':$value.' <br> ';
echo '<br><br><h2>Array:1 </h2>The coloumn with index 6 is placed before the one with index 2 in this array
because its first non empty value is fetched earlier. Check for your self:<br>';
echo '<pre>',strip_tags(print_r($final_column,true)),'
';
// для каждого имени колонки таблицы MySQL
глобальные $ метки;
foreach ($ обозначает как $ key => $ value)
// если он существует в результате
если (array_key_exists ($ ключ, $ final_column))
//Оставь это
$ Label_header = (Исеть ($ Label_header)) $ Label_header = '' $ значение '': '' $ значение '';.....
ksort ($ final_column);
echo '
Array: 2
Мы можем заказать это. Проверьте себя:
';
echo '
',strip_tags(print_r($final_column,true)),'
';
echo '
ТАБЛИЦА: 3 ЭТО ТАБЛИЦА С НЕ ПУСТЫМИ КОЛОННАМИ ';
echo '', $ label_header, '';
foreach ($ final_column как $ value)
echo '', $ value, '';
echo '';
} // функция
?>
У меня уже есть фиксированные строки 147 и 161 (для предыдущего примера), это было предупреждение, мы должны проверить, существует ли переменная перед конкатенацией, в вашем примере это будет:
147
$final_column[$key]=(isset($final_column[$key]))?$final_column[$key].=$value.'<br>':$value.' <br> ';
161
$label_header=(isset($label_header))?$label_header.='<th>'.$value.'</th>':'<th>'.$value.'</th>';