Divtag ve veritabanı mağaza konuma taşımak?

3 Cevap php

Benim web sitesinde kullanıcıların onlar 'kilidi' bir kez div etiketlerini "hareket" ve daha sonra mysql veritabanında pozisyonları depolamak için bir php komut dosyası için muktedir istiyorum. Div etiketleri kullanıcı yeniden günlükleri doğru yerde konumlandırılmış böylece bir kez.

Ben nasıl css postion div etiketleri bilmek ve php kullanıyorum veritabanından veri çekmek için css içinde varibles. Ben sadece bunu saklamak amacıyla div etiketinin konumunu almak için nasıl bilmiyorum? Belki ajax falan kullanıyor?

herhangi bir fikir, teşekkür edilir.

3 Cevap

Eğer konumuna göre ne demek? O "... sağ, merkez, sol" ya da piksel olarak pozisyon mı?

Piksel olarak ise, sadece üst ve alt css özelliğini kullanın. Bir özel pozisyon eğer pozisyonunu değiştirirseniz, sadece bir geri arama yapın.

Kolayca javascript kullanarak pozisyon almak ve bunu aldıktan sonra bunu evet ajax güzel, uyumsuz olduğunu kaydetmek istiyoruz. O biri için jquery Look up: http://docs.jquery.com/Ajax/jQuery.post

$.post("test.php", { func: "getNameAndTime" },
  function(data){
    alert(data.name); // John
    console.log(data.time); //  2pm
  }, "json");

Also, from the way your formulated your question it looks that you don't have a lot experience with ajax. Ben online bazı belgelere bakmak ya da güzel bir kitap (SO arama, bu ilgili konuların bir grup var) bulmak öneririz

Bir elemanın konumunu değiştirir zaman, AJAX kullanarak bir PHP komut dosyası piksel değerlerini göndermek isteyecektir. İşte kullanarak kısa bir örnek jQuery ...

function storeElementPosition(elem) {
  var off = $(elem).offset();
  $.post("storeElementPosition.php",
    { elem : $(elem).attr("id"), left : off.left, top : off.top },
    function(resp) {
      alert(resp);
    }
  );
}

jQuery, hayat bir sürü daha kolay yapacağız kullanın. ..

HTML:

<a href="javascript:void(0)" id="savelayout">Save</a>

JavaScript:

$('#savelayout').click(function(){
    var postData = {};
    $('.xy').each(function(){
    	var id = $(this).attr('id');
    	var pos = $(this).position();
    	if (id && id.length){
    		postData[$(this).attr('id')] = pos.left.toString() + ',' + pos.top.toString(); 
    	}
    });
    $.post('savelayout.php', postData, function(data, textStatus){
    	if(textStatus == 'success'){
    		alert('Positions saved successfully.');
    	}
    });
});

Kaydettiğiniz istediğiniz tüm öğeleri hedefleyecek CSS seçici ile .xy $('.xy') olarak değiştirin. : Eğer "divid1" ve "divid2" kimliği ile 'ile iki savable unsurları varsa, PHP gönderilen veriler ($_POST) bu gibi görünecektir, bunu bir kere

array(
    'divid1' => '123,351',
    'divid2' => '512,136'
);

Daha sonra explode, her virgül ile dize ve yakala her x olarak int ve y koordinat.