v2.5.2
Giriş yap

Sayfa içerisinde aynı anda düzenleme işlemi #Php#Js

ozzy34
506 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhaba, düz php ile yazılmış sipariş panelim var. Panel içerisinde siparişlerin düzenleme ekranına girip adres, telefon ya da ürün bilgileri güncelleme ekranı var.
Düzenleme sayfasına kullanıcılardan birisi girip düzenleme işlemi yaparken, başka birisi daha açarsa; o sayfanın şu an başkası tarafından düzenlendiğini görmesini ve düzenleme işlemi yapamamasını sağlamam gerekiyor.
Bunu sanırım sayfaya girdiğinde session ataması yapıp js ile kaydet butonunu kitleyerek yapabilirim ama birisi o sayfadayken bunun bilgisini alıp başkalarına nasıl gösterebilirim?
Session ile sayfayı kapattığında session'u nasıl temizleyebilirim ?
Ya da aynı anda girerlerse session ile ilgili sorun yaşar mıyım ? Şu an için 1-2 kişi var 100-200 kişi aynı anda tıklarsa ne gibi sorun yaşarım?

ozzy34
444 gün önce
	require_once('config.php');
	$order_id = $_GET['order'];

	$editing = $db->prepare("SELECT * FROM editing_status WHERE order_id = :order_id && status=1");
	$editing->execute(array("order_id" => $order_id));
	$editing_status = $editing->fetch(PDO::FETCH_ASSOC);

	if ($editing_status){
		echo "Bu sayfa şu anda başkası tarafından düzenleniyor. Lütfen daha sonra tekrar deneyin.";
	}else{
		$orderID = $db->prepare("SELECT * FROM editing_status WHERE order_id = :order_id");
		$orderID->execute(array("order_id" => $order_id));
		$haveOrderID = $orderID->fetch(PDO::FETCH_ASSOC);
		
		if($haveOrderID){
			$query = $db->prepare("UPDATE editing_status SET status = :status, username = :username WHERE order_id = :order_id");
			$update = $query->execute(array(
			"status"	=> 1,
			"username"	=> $_SESSION['user'],
			"order_id"	=> $order_id
			));
			echo "OrderID status 0 dan 1 olarak değiştirildi.";
		}else{
			$query	= $db->prepare("INSERT INTO editing_status SET order_id = :order_id, username = :username, status = :status");
			$add	= $query->execute(array("order_id" => $order_id, "username" => $_SESSION['user'], "status" => 1));
			echo "Sıfır veri vardı eklendi.";
		}
	}

Status ekleyip onun üzerinden gitmek daha iyi gibi geldi bu şekilde ayarladım bir kaç kontrol ile.
Anlamadığım kısım // "editing" durumunu kaldır için yaptığınız bölüm. Sayfayı görüntüleyen kişinin sayfayı kapattığını nasıl kontrol edebilirim ? Süre koymak çok mantıklı gelmedi belki 10 saniye belki 15 dakika açık tutabilir kişi bunu net olarak bilemem ya da süre sınırı koyup sayfadan atmak istemem özel bir durumu olabilir o işle ilgili o an.