Таблица в таблице, таблица выводится, кроме последней <td>в каждой строке, кроме первой строки? - PullRequest
1 голос
/ 14 ноября 2009

У меня есть таблица инвентаря, которая должна иметь определенное значение в каждой строке, а затем в последнем столбце в каждой строке я хочу зациклить каждый элемент, который использовался для конкретного обновления инвентаря, т.е.

одна строка будет иметь один столбец для имени клиента, один столбец для даты транзакции инвентаризации, один для типа транзакции, специалиста и последний столбец для определенных продуктов, которые использовались в обновлении. то, что у меня есть, пока отлично выводит первые 4 столбца, но последний столбец генерируется только для первой строки. код:

<table style="width:92%;">
              <tr style="font-size:14px;">
                <th style="width:150px;">Customer</th>
                <th style="width:110px;">Date</th>
                <th style="width:140px;">Tech</th>
                <th style="width:50px;text-align:center;">Type</th>
                <th>Equipment</th>
              </tr>
              <?php
                $pd_name = array();
                $compArray = array();
                $prevCompany = '';
                $count = 0;
                $select = mysql_query("SELECT pd_name, pd_col_name, company FROM item_inventory ORDER BY company ");
                while($row = mysql_fetch_array($select)){
                    $pd_name[$row['pd_col_name']] = $row['pd_name'];
                    $compArray[$row['pd_col_name']] = $row['company'];
                }

                $select2 = mysql_query("SELECT * FROM tech_inventory WHERE date >= '$date%' ORDER BY date DESC ");
                while($row2 = mysql_fetch_array($select2)){ 
                    $count = 0;
                    $prevCompany = '';
                ?>
              <tr>
                <td><?php echo htmlspecialchars($row2['customerName']); ?></td>
                <td><?php echo $row2['date']; ?></td>
                <td><?php echo $row2['tech']; ?></td>
                <td style="text-align:center;"><?php echo $row2['type']; ?></td>
                <td>
                    <table width="200">
                        <?php
                            while (list($key, $val) = each($pd_name)){
                                if($row2[$key] != 0){
                                    if($prevCompany != $compArray[$key]){
                            ?>
                                        <tr>
                                            <td style="text-align:center;"><?php echo $compArray[$key]; ?></td>
                                        </tr>
                            <?php
                                        $prevCompany = $compArray[$key];
                                    }
                            ?>
                                    <tr>
                                        <td><?php echo $val ?></td>
                                        <td><?php echo $row2[$key]; ?></td>
                                    </tr>
                            <?php
                                    $count++;
                                }
                            }
                        ?>
                    </table>
                </td>
            </tr>
            <tr><td><?php echo $count; ?></td></tr>
            <?php   } ?>
            </table>

1 Ответ

0 голосов
/ 14 ноября 2009

Вот что вам нужно сделать:

reset($pd_name);
while (list($key, $val) = each($pd_name))

Проблема заключалась в том, что each проходит через массив, и как только он достигнет конца, он не будет идти дальше. Поэтому вам нужно каждый раз сбрасывать указатель массива на начало.

...