Bu şekilde yapabilirsin. Yalnız paket value değeri ID olacak Onu kodla kontrol edip veritabanına paket adı olarak kaydedersin.
<select id="paket" name="paket">
<option value="">--</option>
<?php
$query = $db->prepare("SELECT * FROM paket");
$query->execute();
foreach($query as $row){
?>
<option value="<?=$row['paket_id']?>"><?=$row['paket_adi']?></option>
<?php } ?>
</select>
<select id="paketurun" name="paketurun">
<option value="">--</option>
<?php
$query = $db->prepare("SELECT * FROM paket_urun");
$query->execute();
foreach($query as $row){
?>
<option value="<?=$row['baslik']?>" class="<?=$row['paket_id']?>"><?=$row['baslik']?></option>
<?php } ?>
</select>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
;(function($, window, document, undefined) {
"use strict";
$.fn.chained = function(parent_selector, options) {
return this.each(function() {
var child = this;
var backup = $(child).clone();
$(parent_selector).each(function() {
$(this).bind("change", function() {
updateChildren();
});
if (!$("option:selected", this).length) {
$("option", this).first().attr("selected", "selected");
}
updateChildren();
});
function updateChildren() {
var trigger_change = true;
var currently_selected_value = $("option:selected", child).val();
$(child).html(backup.html());
var selected = "";
$(parent_selector).each(function() {
var selectedClass = $("option:selected", this).val();
if (selectedClass) {
if (selected.length > 0) {
if (window.Zepto) {
selected += "\\\\";
} else {
selected += "\\";
}
}
selected += selectedClass;
}
});
var first;
if ($.isArray(parent_selector)) {
first = $(parent_selector[0]).first();
} else {
first = $(parent_selector).first();
}
var selected_first = $("option:selected", first).val();
$("option", child).each(function() {
if ($(this).hasClass(selected) && $(this).val() === currently_selected_value) {
$(this).prop("selected", true);
trigger_change = false;
} else if (!$(this).hasClass(selected) && !$(this).hasClass(selected_first) && $(this).val() !== "") {
$(this).remove();
}
});
if (1 === $("option", child).size() && $(child).val() === "") {
$(child).prop("disabled", true);
} else {
$(child).prop("disabled", false);
}
if (trigger_change) {
$(child).trigger("change");
}
}
});
};
$.fn.chainedTo = $.fn.chained;
$.fn.chained.defaults = {};
})(window.jQuery || window.Zepto, window, document);
$(document).ready(function(){
$("#paketurun").chained("#paket");
});
</script>
Basit tablo olarak listelediğinize göre sadece tablo verilerini dışa aktarmanız yeterli olacak sanırım.
DataTables button uzantısını kullanmayı denediniz mi?
Kendi kodlarımdan örnek vereyim mantığı anlayacaksınız
<?php
$sayi = 0;
$sql_slider = $conn->query("SELECT * FROM slider ORDER BY id ASC");
while($row_slider = $sql_slider->fetch()){ ?>
<div class="item<?php echo $sayi == 0 ? ' active' : '' ?>">
<img src="<?php echo $row_slider['resim'];?>" alt="" />
</div>
<?php $sayi ++; } ?>
Bootstrap sürümünün v4.4.1 olduğu görünüyor.
Bu linkteki arşivi indirip eksik olan dosyaları ilgili klasörlerin içine atarsan sorunun çözülür
bootstrap.min.css.map > dosyasını css klasörüne
bootstrap.min.js.map > dosyasını js klasörüne
Temanın yapısını bilmiyorum ama li etiketlerini de sorgunun içine alman gerektiğini düşünüyorum
data klasörü içine htaccess dosyası oluşturup bu kodu eklemen yeterli
Deny from all
Aplikasyon değilde web tabanlı olarak şöyle bir çözüm düşünebilirsiniz
Ben şu şekilde kullanıyorum
RewriteRule ^([a-zA-Z0-9_-]+)$ AnaSayfa.php?Page=$1 [L,QSA]