Как я могу смешать мой код PHP с моим кодом JS

-1

У меня есть динамическая таблица, которая генерирует строки, когда конечный пользователь нажимает кнопку. У меня не было проблем с его использованием в коробках ввода. Теперь я пытаюсь изменить один вход в поле со списком, которое запрашивает данные из моего db. Проблема, которую я знаю, заключается в том, как динамически добавлять поле со списком вместе со своим php-кодом.

$(document).ready(function(){
    var counter = 2;
    $('.add-row').click(function() {
        $(".item_form").append(
            '<tr><td><input type="text" name="serialnoa[]" placeholder="serial no.' +
            counter + '"/></td></tr>'
        );
        counter++; 
    });
    $('.del-row').click(function() {
        if($(".item_form tr").length != 2)
        {
            $(".item_form tr:last-child").remove();
            counter--; 
        }
        else
        {
            alert("You cannot delete first row");
        }
    });
});
<!DOCTYPE html>
<html class="no-js" lang="en" dir="ltr">
  
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">


<link rel="stylesheet" type="text/css" href="_css/inventory.css?v=<?=time();?>">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

</head>

<body>
  
<table class="item_form">
<tr>
  <th>serial no.</th>
  <th>brand<th>
</tr>

<tr>
  <td><input type="text" placeholder="serial no.1" name="serialnoa[]"></td>
  <td>
	<select name="show_brands[]">
	<?php
	mysql_connect('localhost', 'root', 'adminpass');
	mysql_select_db('my_db'); 
	$sql = "SELECT DISTINCT brand FROM warehouse ORDER BY brand";
	$result = mysql_query($sql);

	while ($brand=mysql_fetch_assoc($result)) {
		echo "<option value='".$brand['brand']."'>".$brand['brand']."</option>";
	}
	?>
	</select>
  </td>
</tr>
</table> 

<table>
<tr>
	<td><a href="#" class="add-row"><div>+ Row</div></td>
	<td><a href="#" class="del-row"><div>- Row</div></td>
									
</tr>
</table>
  
</body>
</html>
  • 1
    Вы можете echo '<script> JS CODE HERE </script>'; используя php
  • 0
    Либо загрузите его в скрытом состоянии по умолчанию и откройте его по нажатию кнопки, либо используйте AJAX для получения информации о базе данных.
Показать ещё 7 комментариев
Теги:

2 ответа

0

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

var counter = 2;
$('.add-row2').click(function() {
$(".release_form").append('<tr><td><select name="show_brands[]" id="unique'+counter+'"></select></td><td><input type="text" name="serialnob[]" placeholder="serial no.' +

  counter + '"/></td></tr>');
  $('#unique'+counter).append($('#unique').html());
  counter++; 
});
0

Я просто использовал MOCK для заполнения динамических блоков select. Вам нужно удалить этот макет в вашей server среде. Если ваша БД дает правильные данные, заполните данные в массиве JavaScript. Затем вы можете использовать этот массив для заполнения динамических блоков select.

function populateSelect(element){
  brands.forEach(function(brand){
    $('<option />', {
      value: brand,
      text: brand
    }).appendTo($(element));
  })
}
$(document).ready(function(){
    populateSelect('select'); //populating first select
	var counter = 2;
     $('.add-row').click(function() {
           $(".item_form").append('<tr><td><input type="text" name="serialnoa[]" id="serialno' + counter + '" placeholder="serial no.' +
        	counter + '"/></td><td><select id="select-serialno' + counter + '"></select></td></tr>');
       populateSelect("#select-serialno" + counter ); //populating new select created
			counter++;
     });
   $('.del-row').click(function() {
       if($(".item_form tr").length != 2)
         {
            $(".item_form tr:last-child").remove();
            counter--; 
         }
      else
         {
            alert("You cannot delete first row");
         }
         	});
});
</script>
<!DOCTYPE html>
<html class="no-js" lang="en" dir="ltr">
  
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">


<link rel="stylesheet" type="text/css" href="_css/inventory.css?v=<?=time();?>">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

</head>

<body>
  <!--Uncomment below php code in your PHP environment -->
  <!--<?php 
	mysql_connect('localhost', 'root', 'adminpass');
	mysql_select_db('my_db'); 
	$sql = "SELECT DISTINCT brand FROM warehouse ORDER BY brand";
	$result = mysql_query($sql);
    echo '<script>'; //here starts creating new array of brands
    echo 'var brands = []';
	while ($brand=mysql_fetch_assoc($result)) {
		echo 'brands.push("'. $brand['brand'] .'")'; //adding new brand to brand array
	}
    echo '</script>'
	?> -->
  <script>
    //NOTE: a mock for your DB
  var brands = ["brand1", "brand2"]; //removes this if your php codes works
    </script>
<table class="item_form">
<tr>
  <th>serial no.</th>
  <th>brand<th>
</tr>

<tr>
  <td><input type="text" placeholder="serial no.1" name="serialnoa[]"></td>
  <td>
	<select name="show_brands[]">
	</select>
  </td>
</tr>
</table> 

<table>
<tr>
	<td><a href="#" class="add-row"><div>+ Row</div></td>
	<td><a href="#" class="del-row"><div>- Row</div></td>
									
</tr>
</table>
  
</body>
</html>
  • 0
    возился с этим в течение последнего часа. к сожалению, я не смог заставить его работать. В любом случае, спасибо, вероятно, будет искать обходной путь.
  • 0
    Данные поступают из БД?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню