Вы можете справиться с этим с помощью jQuery - в моем примере я просто вырезал и вставил из одного из моих скриптов cms.
Форма ниже включена в увеличенную форму, поэтому тег формы и submot не находятся впример.
Форма:
<?php
echo '<div class="row">';
# page-type
echo '<div class="col_3">';
$getPgType = $db->prepare('SELECT page_type_id, page_type FROM page_types WHERE page_type_id >= 1 order by page_type asc');
$getPgType->execute();
echo '<label>Page Type</label><br>';
echo '<select id="" name="page_type" class="expand">';
echo '<option value=""'; if($page_type == ''){echo 'selected';} echo '>Select Page Type</option>';
while($row = $getPgType->fetch(PDO::FETCH_ASSOC)){
$id = $row['page_type_id']; $pagetype = $row['page_type'];
echo '<option value="'.$pagetype.'"'; if($page_type == $pagetype){echo 'selected';} echo '>'.ucwords($pagetype) .'</option>';
}
echo '</select>';
echo '</div>';
# classification_type
echo '<div class="col_3">';
echo '<label for="classification_type">Classification Type</label><br>';
echo '<select id="classificationType" name="classification_type" class="expand">';
echo '<option value=""'; if($classification_type == ''){echo 'selected';} echo '>Select Classification Type</option>';
echo '<option value="classification"'; if($classification_type == 'classification'){echo 'selected';} echo '>Classification</option>';
echo '<option value="category"'; if($classification_type == 'category'){echo 'selected';} echo '>Category</option>';
echo '<option value="content"'; if($classification_type == 'content'){echo 'selected';} echo '>Content</option>';
echo '</select>';
echo '</div>';
# classification
echo '<div class="col_3">';
$selstmt = $db->prepare('SELECT classification_id, classification FROM classifications WHERE classification_id >= 1');
$selstmt->execute();
echo '<label>Classification</label><br>';
echo '<select id="getAssignedCats" name="classification" class="expand">';
echo '<option value=""'; if($classification == ''){echo 'selected';} echo '>Select Classification</option>';
while($row = $selstmt->fetch(PDO::FETCH_ASSOC)){
$classification_id = $row['classification_id']; $classN = $row['classification'];
echo '<option value="'.$classification_id.'"'; if($classification == $classification_id){echo 'selected';}
echo '>'.ucwords(str_replace('-',' ',$classN)).'</option>';
}
echo '</select>';
echo '</div>';
# category
echo '<div id="categoryHTML" class="col_3"></div>';
echo '</div>';
?>
Обратите внимание на <div id="categoryHTML" class="col_3"></div>
... именно здесь jQuery отображает желаемое поле выбора.
JQuery
/* PARSE GET ASSIGNED CATEGORIES
======================================================================================== */
$("#getAssignedCats").change(function(){
var type = $("#classificationType").val();
if(type != 'classification'){
var class_id = $(this).val();
var url = 'parse/get-assigned-categories.php';
var postit = $.post( url, {class_id:class_id});
postit.done(function( data ) {$('#categoryHTML').html(data);});
}
});
Когда пользователь выбирает поле выбора #getAssignedCats
, jquery собирает значение и отправляет его в файл parse.php.
Разбор PHP
<?php
$level = '../../../';
include($level.'core/ini/start.php');
$class_id = $_POST['class_id'];
if($class_id != 888888){
$selCat = $db->prepare('SELECT cat_id, category FROM categories WHERE classification = :THEID ORDER BY category asc');
$selCat->bindValue(':THEID',$class_id,PDO::PARAM_INT); $selCat->execute(); $cat_ct = $selCat->rowCount();
echo '<label>Category</label>';
echo '<select name="category" class="expand">';
echo '<option value=""'; if($category == ''){echo 'selected';} echo '>Select Parent category</option>';
if($cat_ct <= 0){
echo '<option value="777777"'; if($category == '777777'){echo 'selected';} echo ' class="blue">This is a Category Page</option>';}
elseif($cat_ct >= 1){
while($row = $selCat->fetch(PDO::FETCH_ASSOC)){
$cat_id = $row['cat_id'];
$category = $row['category'];
echo '<option value="'.$cat_id.'"'; if($category == $cat_id){echo 'selected';}
echo '>'.ucwords(str_replace('-',' ',$category)).'</option>';
}
}
echo '</select>';
}
?>
Надеюсь, это поможет.