2015-12-16 2 views
0

Я пытаюсь создать таблицу на PHP.Fix Table Output для PHP

Существует форма, в которой я принимаю значение - рынок, дату производства, дату продажи и отправку его в POST в таблицу, чтобы заполнить его.

В POST Я вызываю набор данных из производственной таблицы из MySQL и заполняется в той же таблице.

Я могу заполнить таблицу из SQL и Form POST Action, но я не могу их выровнять в соответствии с требуемым форматом вывода.

Пожалуйста, помогите найти исправления для код ниже:

<?php 
if(isset($_POST['for_post'])) 
{ 
try 
    { 
     ?>    
     <div class="card-box" style="padding-left:5px;padding:10px;padding-bottom:50px"> 
      <div class="row"> 
       <div class="col-sm-12"> 
       <?php 
       if(isset($_POST['for_post_market'])){ $pname = $_POST['for_post_market']; } 
       if(isset($_POST['for_post_prod_date'])){ $pcat = $_POST['for_post_prod_date']; } 
       if(isset($_POST['for_post_sale_date'])){ $pprice = $_POST['for_post_sale_date']; } 
       $query = 'SELECT * FROM product'; 
        $stmt = $DB_con->prepare($query); 
        $stmt->execute(); 
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
        $result[$row['prod_cat_name']][] = $row['prod_name']; 
               } 
       ?> 
       <table id="invoices" border="1"> 
        <thead> 
         <th>Category</th> 
         <th>Product</th> 
         <th>Production Date</th> 
         <th>Sales Date</th> 
         <th>Market</th> 
        </thead> 
        <tbody> 
       <?php 
        foreach($result as $id => $invoices) { 
        echo '<tr>'; 
        echo '<td rowspan='. count($invoices) . '>' . $id . '</td>'; 
         $count = 0; 
          foreach ($invoices as $invoice) { 
           if ($count != 0) { 
          echo '<tr>'; 
            } 
          echo "<td>$invoice</td>"; 
          echo "<td>".$pcat."</td>"; 
          echo "<td>".$pprice."</td>"; 

       $count++; 
                  } 
                 } 

       $a=count($pname); 

       for($i=0;$i<$a;$i++) 
        { 
        echo "<td>".$pname[$i]."</td></tr>"; 
        } 

        echo "</tbody>"; 
       echo "</table>"; 
    } 
catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

} 
else 
{     ?> 
      </div> 
      </div> 
     </div> 
<div class="card-box" style="padding-left:5px;padding:10px;padding-bottom:50px"> 
<div class="row"> 
<div class="col-sm-12"> 
    <form class="form-inline" method="post"> 
    <div class="form-group m-r-10"> 
     <label for="exampleInputName2">Market : </label> 
     <div class="input-group"> 
     <select class="selectpicker" multiple data-selected-text-format="count" data-style="btn-white" name="for_post_market[]"> 
       <?php 
        $stmt = $DB_con->prepare('Select * from location'); 
        $stmt->execute(); 
         while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
         echo '<option>'.$row['location_name'].'</option>'; 
                    } 
       ?> 
     </select> 
     <div> 
    &nbsp 
    <div class="form-group m-r-10"> 
     <label for="exampleInputEmail2">Production Date : </label> 
     <div class="input-group"> 
        <input type="text" class="form-control" placeholder="mm/dd/yyyy" id="datepicker-autoclose" name="for_post_prod_date"> 
        <span class="input-group-addon bg-custom b-0 text-white"><i class="icon-calender"></i></span> 
       </div> 
    </div> 
    <div class="form-group m-r-10"> 
     <label for="exampleInputEmail2">Sales Date : </label> 
     <div class="input-group"> 
        <input type="text" class="form-control" placeholder="mm/dd/yyyy" id="datepicker2-autoclose" name="for_post_sale_date"> 
        <span class="input-group-addon bg-custom b-0 text-white"><i class="icon-calender"></i></span> 
       </div> 
    </div> 
    <button type="submit" class="btn btn-default waves-effect waves-light btn-md" id="for_post" name="for_post"> 
     Submit 
    </button> 
</form> 
</div> 
</div> 
</div> 
</div> 
</div> 
</div> 
<?php 
} 
?> 

токового выход, я могу получить от этого кода:

enter image description here

То, что я пытаюсь получить является:

enter image description here

Обновленные изменения, предложенные и работали:

<table id="invoices" border="1"> 
                   <thead> 
                    <th>Category</th> 
                    <th>Product</th> 
                    <th>Production Date</th> 
                    <th>Sales Date</th> 
                    <th>Market</th> 
                    <th>Input</th> 
                   </thead> 
                   <tbody> 
                  <?php 
                   $a=count($pname); 
                   foreach($result as $id => $invoices) { 
                   echo '<tr>'; 
                   echo '<td rowspan='. count($invoices)*$a . '>' . $id . '</td>'; 
                    $count = 0; 
                     foreach ($invoices as $invoice) { 
                      if ($count != 0) { 
                     echo '<tr>'; 
                       } 
                     echo '<td rowspan='. count($pname) . '>' . $invoice . '</td>'; 
                     echo '<td rowspan='. count($pname) . '>' . $pcat . '</td>'; 
                     echo '<td rowspan='. count($pname) . '>' . $pprice . '</td>'; 
                     for($i=0;$i<$a;$i++) 
                      { 
                     echo '<td>'. $pname[$i] . '</td>'; 
                     echo '<td><input type="text" class="form-control"></td></tr>'; 
                      } 
                      $count++; 
                             } 
                            } 
                     echo '</tbody>'; 
                     echo '</table>'; 


               } 
              catch(PDOException $e) 
               { 
                echo $e->getMessage(); 
               } 

             } 
             else 
             {     ?> 
+2

Пожалуйста, отформатируйте свой код и сохраните пример кратким. – k0pernikus

+0

Вы должны быть умны с этим выходом - всегда выводите правильное количество ячеек, считая прокрутки строк и т. Д. Вы должны начать с простого перечисления городов внутри '', возможно, начинать запятую, после чего , попытайтесь разбить его на отдельную таблицу внутри этой ячейки и т. д. Это похоже на то, что вам нужно делать медленнее. Вы пытаетесь построить комплекс с самого начала, почему бы не попытаться построить основы, а затем сделать его более сложным? Также, в качестве побочного элемента, взгляните на стенографию PHP 'foreach: endforeach;' и т. Д. – somethinghere

ответ

1

Вы должны установить Категория колонки RowSpan сосчитать ($ счета) * Количество ($ PNAME) и установить RowSpan к продукту, дата изготовления и дата продаж столбцов подсчета ($ pname)

+0

Работало Хорошо :) Поставил меня в правильном направлении. огромное спасибо –