За последние 24 часа нас посетили 17995 программистов и 1680 роботов. Сейчас ищут 1037 программистов ...

Можно ли как нибудь не выводить поля которые пустые?

Тема в разделе "PHP и базы данных", создана пользователем GeorgXIV, 13 ноя 2010.

  1. GeorgXIV

    GeorgXIV Активный пользователь

    С нами с:
    11 ноя 2010
    Сообщения:
    15
    Симпатии:
    0
    Можно ли как нибудь не выводить поля которые пустые?

    есть таблица

    Код (Text):
    1.  
    2. contacts  CREATE TABLE `contacts` (                                
    3.             `id_contact` int(11) NOT NULL auto_increment,          
    4.             `name` varchar(30) NOT NULL,                            
    5.             `client` tinytext NOT NULL,                            
    6.             `CC_AMS` tinytext NOT NULL,                            
    7.             `CC_AM` tinytext NOT NULL,                              
    8.             `CRC` tinytext NOT NULL,                                
    9.             `EQUIPMENT` tinytext NOT NULL,                          
    10.             `Prescription` tinytext NOT NULL,                      
    11.             `Order_` tinytext NOT NULL,                            
    12.             `pos` smallint(3) NOT NULL default '0',                
    13.             `hide` enum('show','hide') NOT NULL default 'show',    
    14.             `id_catalog` int(8) NOT NULL default '0',              
    15.             PRIMARY KEY  (`id_contact`)                            
    16.           ) ENGINE=MyISAM AUTO_INCREMENT=83 DEFAULT CHARSET=cp1251  
    все записи хранимые в таблице имеют определенный id_catalog, получается как бы таблица в которой хранятся другие таблицы, разделяющиеся определенным id_catalog. В запрос посылается определенный id и по нему отбираются данные из таблицы, но не все таблицы которые строятся в результате по id используют все поля прописанные в коде, для некоторых таблиц остаются пустые... хотелось бы от них избавиться(пустых полей), но если править код и убрать поля при построении для какой-то одной таблицы(данных с определенным id) то при выводе другой таблицы использующей этот код, она останется без поля в котором есть нужные данные... Например, таблица с id_catalog=1 не использует поле CC_AM а таблица с id_catalog=2 использует его но не использует поля CRC и Equipment которые использует таблица с id_catalog=1 и т.д.
    как быть?

    код таблицы для вывода информации:
    Код (Text):
    1.  
    2. <?php
    3.   $query = "SELECT * FROM contacts
    4.             WHERE id_catalog=".$catc['id_catalog']."
    5.             Order BY pos";
    6.   $prt = mysql_query($query);
    7.   if(!$prt) puterror("Ошибка при обращении к блоку Контакты");
    8.   if(mysql_num_rows($prt) > 0)
    9.   {
    10.     echo "<tr class='tableheadercat'>
    11.             <td><p class=zagtable>Порт</td>
    12.             <td align=center><p class=zagtable>Клиент</td>
    13.             <td align=center><p class=zagtable>CC_AMS</td>
    14.             <td align=center><p class=zagtable>CRC</td>
    15.             <td align=center><p class=zagtable>CC_AM</td>
    16.               <td align=center><p class=zagtable>Оборудование</td>
    17.         <td align=center><p class=zagtable>Предписание</td>
    18.         <td align=center><p class=zagtable>Заказ</td>
    19.             <td align=center><p class=zagtable>Действия</td>
    20.          </tr>";
    21.     while($par = mysql_fetch_array($prt))
    22.     {
    23.       $stylerow="";
    24.       if($par['hide'] == "hide")
    25.       {
    26.          $showhide = "<a href=showcont.php?id_contact=".$par['id_contact']."&id_parent=$id_parent&id_catalog=".$catc['id_catalog'].">Отобразить</a>";
    27.          $stylerow="class='hiddenrow'";
    28.       } else $showhide = "<a href=hidecont.php?id_contact=".$par['id_contact']."&id_parent=$id_parent&id_catalog=".$catc['id_catalog'].">Скрыть</a>";
    29.       echo "<tr $stylerow >
    30.               <td><p>".$par['name']."</td>
    31.               <td align=center><p>&nbsp;".$par['client']."</td>
    32.               <td align=center><p>&nbsp;".$par['CC_AMS']."</td>
    33.               <td align=center><p>&nbsp;".$par['CRC']."</td>
    34.               <td align=center><p>&nbsp;".$par['CC_AM']."</td>
    35.               <td align=center><p>&nbsp;".$par['EQUIPMENT']."</td>
    36.           <td align=center><p>&nbsp;".$par['Prescription']."</td>
    37.           <td align=center><p>&nbsp;".$par['Order_']."</td>
    38.               <td align=center><p>$showhide<br>
    39.                          <a href=editcontform.php?id_contact=".$par['id_contact']."&id_parent=$id_parent&id_catalog=".$catc['id_catalog'].">Исправить</a><br>
    40.                          <a href=delcont.php?id_contact=".$par['id_contact']."&id_parent=$id_parent&id_catalog=".$catc['id_catalog'].">Удалить</a></td>
    41.             </tr>";
    42.     }
    43.   }
    44. ?>
    [/code]
     
  2. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    можно создать многомерный массив для хранения параметров вывода. Индексом массива будет значение id_catalog:
    $out[id_catalog]=array('fields'=array(список полей),'headers'=>array(список заголовков ));
    Код привожу не весь, а так, чтобы показать идею использования
    PHP:
    1.  
    2. //создание массива согласно наличию полей в таблицах- поля и заголовки должны идти в порядке вывода
    3. $out=array();
    4. $out[1]=array('fields'=>array('client','CRC','EQUIPMENT','Prescription','Order_'),'headers'=>array('Клиент','CRC','Оборудование','Предписание','Заказ'));
    5. $out[2]=array('fields'=>array('client','CC_AMS','Prescription','Order_'),'headers'=>array('Клиент','CC_AMS','Предписание','Заказ'));
    6. $out[3]=...;
    7.  
    8. //вывод заголовков
    9. $id_catalog=$catc['id_catalog'];
    10. echo "<tr class='tableheadercat'>";
    11. foreach($out[$id_catalog]['headers'] as $header)
    12. {    
    13.      echo "<td>$header</td> "
    14. }
    15. echo "</tr>";
    16.  
    17. // вывод данных
    18. echo "<tr class='$stylerow'>";
    19. foreach($out[$id_catalog]['fields'] as $field)
    20. {    
    21.      echo "<td>{$par[$field]}</td>"
    22. }
    23. echo "</tr>";
    24.  
     
  3. GeorgXIV

    GeorgXIV Активный пользователь

    С нами с:
    11 ноя 2010
    Сообщения:
    15
    Симпатии:
    0

    Большое Человеческое Спасибо!