Я создаю систему категорий, в которой пользователи могут выбирать категорию из БД, и после того, как они выбирают, она создает другой флажок выбора с подкатегорией этой категории.
Итак, мой вопрос: как я могу сделать это наилучшим образом?
BTW Я использую Laravel Framework, и первая категория проста
<select> @foreach(Category::all() as $k) <option value="{{ $k['id'] }}">{{ $k['name'] }}</option> @endforeach </select>
Но что мне делать после выбора категории? Лучше ли делать вызов AJAX для отправки идентификатора выбранной категории и возвращает подкатегорию или что?
Мне нужен лучший и профессиональный способ сделать это.
В моей базе данных я
ID, name, parent
Используйте ajax
, после выбора category
отправьте запрос ajax
и для этого вам нужно использовать событие change
для вашего select
, например:
// Assumed category is id of the select $('#category').on('change', function(){ var id = $(this).val(); $.getJSON("subcategory/" + id , function(data){ // Assumed subcategory is id of another select var subcat = $('#subcategory').empty(); $.each(data, function(k, v){ var option = $('<option/>', {id:k, value}); subcat.append(option); }); }); });
На стороне сервера создайте такой маршрут (вы можете использовать контроллер и Eloquent):
Route('subcategory/{id}', function($id){ // Get the data from database according to the id // Build an array as: id => value and then return return Response::json($subcat); });
Заполните раскрывающийся список при выборе опции из другого раскрывающегося списка Laravel
Это может вам помочь. В противном случае спросите, не понимаете ли вы
select_cat.php
<script type="text/javascript" src="http://ajax.googleapis.com/ ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $(".category").change(function() { var id=$(this).val(); var dataString = 'id='+ id; $.ajax ({ type: "POST", url: "select_subcat.php", data: dataString, cache: false, success: function(html) { $(".subcat").html(html); } }); }); }); </script>
Категория:
<select name="category" class="category"> <option selected="selected">--Select Category--</option> <?php include('databasefile'); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); $sql=mysql_query("select cat_name from category order by cat_name"); while($row=mysql_fetch_array($sql)) { $cname=$row['cat_name']; echo '<option value="'.$cname.'">'.$cname.'</option>'; } ?> </select> <br/><br/> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>
в<select name="category" class="category"> <option selected="selected">--Select Category--</option> <?php include('databasefile'); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); $sql=mysql_query("select cat_name from category order by cat_name"); while($row=mysql_fetch_array($sql)) { $cname=$row['cat_name']; echo '<option value="'.$cname.'">'.$cname.'</option>'; } ?> </select> <br/><br/> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>
в<select name="category" class="category"> <option selected="selected">--Select Category--</option> <?php include('databasefile'); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); $sql=mysql_query("select cat_name from category order by cat_name"); while($row=mysql_fetch_array($sql)) { $cname=$row['cat_name']; echo '<option value="'.$cname.'">'.$cname.'</option>'; } ?> </select> <br/><br/> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>
2.select_subcat.php
<?php include('databasefile); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); if($_POST['id']) { $id=$_POST['id']; $sql=mysql_query("select s_name from subcat_l1 where cat_name='$id'"); while($row=mysql_fetch_array($sql)) { $sname=$row['s_name']; echo '<option value="'.$sname.'">'.$sname.'</option>'; } } ?> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>
в<?php include('databasefile); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); if($_POST['id']) { $id=$_POST['id']; $sql=mysql_query("select s_name from subcat_l1 where cat_name='$id'"); while($row=mysql_fetch_array($sql)) { $sname=$row['s_name']; echo '<option value="'.$sname.'">'.$sname.'</option>'; } } ?> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>
в<?php include('databasefile); mysql_connect($server,$username,$password)or die(mysql_error()); mysql_select_db($database)or die(mysql_error()); if($_POST['id']) { $id=$_POST['id']; $sql=mysql_query("select s_name from subcat_l1 where cat_name='$id'"); while($row=mysql_fetch_array($sql)) { $sname=$row['s_name']; echo '<option value="'.$sname.'">'.$sname.'</option>'; } } ?> SubCategory : <select name="subcat" class="subcat"> <option selected="selected">--Select SubCat--</option> </select>