Cześć,

znowu potrzebuję waszej pomocy. Korzystam ze skryptu javascript o nazwie multirow, który pozwala dynamicznie dodawać/usuwać wiersze formularza:

  1. $(document).ready(function(){
  2. var count = 0;
  3. $('#add').click(function(){
  4. count = document.getElementById("product_table_rows").rows.length;
  5. var html_code = "<tr id='row"+(count+1)+"'>";
  6. html_code += '<td><input type="text" id="ean" name="ean['+count+']" class="form-control ean-filter" /></td>';
  7. html_code += '<td><input type="text" id="quantity" name="quantity['+count+']" class="form-control qty-filter" required/></td>';
  8. html_code += '<td><textarea rows="2" cols="50" id="product_description" name="product_description['+count+']" class="form-control" /></textarea></td>';
  9. html_code += '<td><div class="input-group"><input type="text" id="price" name="price['+count+']" class="form-control price-filter"/><div class="input-group-addon"></div></div></td>';
  10. html_code += '<td><select id="category_id" name="category_id['+count+']" class="form-control" required></select></td></td>';
  11. html_code += "<td><button type='button' name='remove' data-row='row"+(count+1)+"' class='btn btn-danger btn-xs remove'><span class='glyphicon glyphicon-minus'></span></button></td>";
  12. html_code += "</tr>";
  13.  
  14. $('#product_table').append(html_code);
  15.  
  16. $.getScript("js/input_filters.js",function(){
  17. Inputs_filters();
  18. });
  19. });
  20.  
  21. $(document).on('click', '.remove', function(){
  22. var delete_row = $(this).data("row");
  23. $('#' + delete_row).remove();
  24. });
  25.  
  26. });


W formularzu korzystam z pola rozwijanego SELECT w którym powinny znajdować się pogrupowane opcje pobrane z bazy danych. W innych formularzach opcje i grupy opcji pobieram w formie tablicy z bazy danych i wyświetlam je poniższym kodem:

  1. <?php
  2. echo "<option hidden selected disabled>Wybierz kategorię</option>";
  3. if ($categories_list->num_rows > 0) {
  4. while($row = $categories_list->fetch_assoc()) {
  5. $group[$row['pc_group_name']][] = $row;
  6. }
  7. foreach ($group as $key => $values){
  8. echo '<optgroup label="'.$key.'">';
  9. foreach ($values as $value)
  10. {
  11. if ($value['pc_option_type'] == 0) {
  12. echo '<option value="'.$value['pc_option_value'].'">'.$value['pc_option_name'].'</option>';
  13. }
  14. }
  15. echo '</optgroup>';
  16. }
  17. } else {}
  18. ?>


Problem pojawia się gdy to samo mam wykonać w skrypcie javascript. Wyczytałem, że otrzymaną z bazy danych tablicę muszę przetworzyć na format json co wykonuję w pliku manage_categories.php:

  1. <?php
  2. include_once 'config/Database.php';
  3. include_once 'class/Categories.php';
  4. $database = new Database();
  5. $db = $database->getConnection();
  6.  
  7. $categories = new Categories($db);
  8.  
  9. $categories_data = $categories->getProductsCategories();
  10.  
  11. while($categories_row = $categories_data->fetch_assoc()) {
  12. $categories_list[] = $categories_row;
  13. }
  14. $categories_list_json = json_encode($categories_list);
  15.  
  16. echo $categories_list_json;
  17.  
  18. ?>


Teraz jak taką tablicę przetworzyć na opcje i grupy opcji pola rozwijanego SELECT i jeszcze je wrzucić w skrypt Multirow?