<?php
// Veritabanı bağlantı bilgileri
$servername = "xxxxxx";
$username = "xxxxx";
$password = "xxxxx";
$dbname = "xxxx";
// Veritabanına bağlanma
$conn = new mysqli($servername, $username, $password, $dbname);
// Bağlantıyı kontrol et
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
// Menü ekleme işlemi
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["new_menu_name"]) && isset($_POST["new_menu_order"])) {
$newMenuName = $_POST["new_menu_name"];
$newMenuOrder = $_POST["new_menu_order"];
// Yeni menüyü veritabanına ekleme
$sql = "INSERT INTO menu (m_ad, m_sira, m_durum) VALUES ('$newMenuName', $newMenuOrder, 1)";
if ($conn->query($sql) === TRUE) {
// Eklenen menünün ID'sini al
$newMenuId = $conn->insert_id;
echo json_encode(array("message" => "Menü ekleme başarıyla tamamlandı.", "newMenuId" => $newMenuId));
exit;
} else {
echo json_encode(array("error" => "Menü ekleme hatası: " . $conn->error));
exit;
}
}
// Menü durumunu güncelleme (pasif hale getirme veya aktif etme) işlemi
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["menu_id"]) && isset($_POST["action"])) {
$menuId = $_POST["menu_id"];
$action = $_POST["action"];
// Menü durumunu güncelleme (m_durum'u 0 yapma veya 1 yapma)
$status = ($action == "disable") ? 0 : 1;
$sql = "UPDATE menu SET m_durum = $status WHERE m_ID = $menuId";
if ($conn->query($sql) === TRUE) {
echo json_encode(array("message" => "Menü durumu başarıyla güncellendi."));
exit;
} else {
echo json_encode(array("error" => "Menü durumu güncelleme hatası: " . $conn->error));
exit;
}
}
// Menü sıralarını güncelleme işlemi
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["order"])) {
$order = $_POST["order"];
// Menü sıralarını güncelleme
foreach ($order as $key => $menuId) {
$sql = "UPDATE menu SET m_sira = $key + 1 WHERE m_ID = $menuId";
if ($conn->query($sql) !== TRUE) {
echo json_encode(array("error" => "Menü sıra güncelleme hatası: " . $conn->error));
exit;
}
}
echo json_encode(array("message" => "Menü sıraları başarıyla güncellendi."));
exit;
}
// Menüleri veritabanından çek
$sql = "SELECT * FROM menu ORDER BY m_sira";
$result = $conn->query($sql);
// Menü listesini oluştur
if ($result->num_rows > 0) {
echo '<div class="container mt-5">';
echo '<h2 class="mb-3">Menü Ekle</h2>';
echo '<form id="new-menu-form">';
echo '<div class="form-group">';
echo '<label for="new_menu_name">Menü Adı:</label>';
echo '<input type="text" class="form-control" name="new_menu_name" required>';
echo '</div>';
echo '<div class="form-group">';
echo '<label for="new_menu_order">Menü Sırası:</label>';
echo '<input type="number" class="form-control" name="new_menu_order" required>';
echo '</div>';
echo '<button type="submit" class="btn btn-success">Menü Ekle</button>';
echo '</form>';
echo '<h2 class="mt-5">Menüler</h2>';
echo '<div id="menu-list" class="sortable list-group mt-3">';
while ($row = $result->fetch_assoc()) {
$statusText = ($row["m_durum"] == 1) ? "Pasif Et" : "Aktif Et";
$action = ($row["m_durum"] == 1) ? "disable" : "enable";
$badgeColor = ($row["m_durum"] == 1) ? "badge-danger" : "badge-success";
echo '<li data-id="' . $row["m_ID"] . '" class="list-group-item d-flex justify-content-between align-items-center">' . $row["m_ad"] . '
<a href="#" class="action-menu badge ' . $badgeColor . '" data-id="' . $row["m_ID"] . '" data-action="' . $action . '">' . $statusText . '</a></li>';
}
echo '</div>';
echo '</div>';
} else {
echo "Menü bulunamadı.";
}
// Bağlantıyı kapat
$conn->close();
?>
<!DOCTYPE html>
<html lang="en">
<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">
<title>Menü Düzenleme Paneli</title>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<script>
$(function () {
// Yeni menü ekleme formunu AJAX ile gönderme
$("#new-menu-form").submit(function (e) {
e.preventDefault();
var formData = $(this).serialize();
$.ajax({
type: "POST",
url: "",
data: formData,
dataType: "json",
success: function (response) {
console.log(response);
if (response.error) {
alert(response.error);
} else {
// Başarıyla eklenen menüyü listeye ekleme
var newMenuItem = '<li data-id="' + response.newMenuId + '" class="list-group-item d-flex justify-content-between align-items-center">' + response.message + '</li>';
$("#menu-list").append(newMenuItem);
// Formu sıfırla
$("#new-menu-form")[0].reset();
}
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
});
$(".sortable").sortable({
update: function (event, ui) {
saveNewOrder();
}
});
// Menü durumunu güncelleme işlemini AJAX ile gerçekleştirme
$("#menu-list").on("click", ".action-menu", function (e) {
e.preventDefault();
var menuId = $(this).data("id");
var action = $(this).data("action");
updateMenuStatus(menuId, action);
});
function saveNewOrder() {
var menuOrder = [];
$("#menu-list li").each(function () {
menuOrder.push($(this).data("id"));
});
// AJAX ile yeni sıra bilgilerini sunucuya gönder
$.ajax({
type: "POST",
url: "",
data: { order: menuOrder },
dataType: "json",
success: function (response) {
console.log(response);
// Başarıyla güncellendiğini işleyebilirsiniz
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
function updateMenuStatus(menuId, action) {
// AJAX ile menü durumunu güncelleme işlemini sunucuya gönder
$.ajax({
type: "POST",
url: "",
data: { menu_id: menuId, action: action },
dataType: "json",
success: function (response) {
console.log(response);
// Başarıyla güncellendiğini işleyebilirsiniz
// Yeniden yükleme işlemi
location.reload();
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
}
});
}
});
</script>
</body>
</html>