Farklı tarihler için farklı veri

2 Cevap php

Ben farklı tarihlerde girdi ve görünümü veri kullanıcıların sağlayacak ve tarihini değiştirmek için bir web sayfası yapıyorum, önceki gün görüntüler, ve ertesi gün gösterecektir biri olacak biri iki düğme vardır. Ben formlar göndererek ve sayfayı onlar bu düğmelerden birine basın her zaman yeniden bunu biliyorum, ama yerine bir formu var javascript kullanmak olmaz, ama işe alma sorun yaşıyorum. Şu anda, iki düğme var ve aşağıda benim kodda gösterildiği gibi tarih, bir PHP değişkeni içinde saklanır:

<script>
function init() {
    <? $nutrDate = $this->parseDate(date('m/d/Y')); ?>
}
function nutrPrevDay() {    
    <? $nutrDate = mktime(0, 0, 0, date('m',$nutrDate), date('d',$nutrDate)-1, date('Y',$nutrDate)); ?>
    alert("<? echo(date("m/d/y", $nutrDate)) ?>");
}
function nutrNextDay() {
    <? $nutrDate = mktime(0, 0, 0, date('m',$nutrDate), date('d',$nutrDate)+1, date('Y',$nutrDate)); ?>
}
window.onload = init;
</script>

<p style="text-align:center; font-size:14px; color:#03F">
  <button onclick="nutrPrevDay()" style="width:200px" >< Show Previous Day</button>                 
  <? echo(date('m/d/Y', $nutrDate)) ?>          
  <button onclick="nutrNextDay()" style="width:200px">Show Next Day ></button>  
</p>

Ben sadece hata ayıklama gibi () nutrPrevDay de uyarı var. Ne olur ben butonuna tıkladığınızda, uyarı gün doğru (Mayıs 17 Mayıs 16 örneğin) azalmış olduğunu gösterir, ancak sadece her tıklama için bir gün bir gün azalır, değil. Ayrıca, ben bir düğme tıklandığında sonra yeni tarihi görüntülemek için değiştirin (çizgi tarafından oluşturulan) sayfasındaki metni nasıl bilmiyorum.

So here are my questions: 1) Is it possible to dynamically change data (such as text, and in the future, SQL queries) on a page using javascript without having to reload a page when clicking on a button? 2) If possible, how can I make those changes? 3) How can I fix this so that it will increment and decrement through dates every time a button is clicked?

2 Cevap

Q1:

Evet, AJAX için ne arıyorsanız muhtemelen mümkündür.

Q2:

Eh, her şeyden önce PHP sunucu tarafında çalışan iken JavaScript istemci tarafında çalıştığını öğrenmek zorunda. Bunu göz önüne aldığımızda, size javascript fonksiyonları içinde bunları yazdı sırf bir düğmeye tıkladığınızda php çalýþtýrýlmaz olduğunu bekleyemeyiz.

Yapabileceğiniz en JavaScript betik bir PHP komut dosyası yazdırma şeydir. Ve komut uyarı kısmı hariç, bu başarısız. Örnek:

<script>
function javascriptFunction(){
  // This php script, will be executed when you call your page, however $nutrDate is an assigned php variable, javascript will never know about it;
  <?php $foo = 'bar'; ?>
  // This will give you a javascript error because $foo is a string
  var foo = <?php echo $foo; ?>;
  // This is the code which will do the expected, notice the quotes.
  var foo = '<?php echo $foo; ?>';

  // If you have a single quote inside $foo, it will break javascript
  <?php $foo = "ba'r";
  var foo = '<?php echo $foo; ?>';
}
</script>

Q3:

Fikir bir ajax isteği senin düğmeleri olayı tetiklenir tıklayın her zaman yapmak için ... Bu, bir düğmeye tıkladığınızda, bazı diğer sayfa için bir istek yapmak ve bir şeyler alacak bir javascript işlevi çağırmak, diyerek aynı isteği başarılı olursa o. Burada örnek:

<script>
var current = <? echo time(); ?>;
function requestSomething(action){
    if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
    }
    else {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
      // readyState info: http://www.devguru.com/technologies/xmldom/quickref/httpRequest_readyState.html
      if (xmlhttp.readyState==4 && xmlhttp.status==200){
        // this is where we tell where the result will appear
        document.getElementById("current").innerHTML=xmlhttp.responseText;
        current = xmlhttp.responseText;
      }
    }

    xmlhttp.open("GET","somescript.php?action="+action+'&curday='+current,true);
    xmlhttp.send();
}
</script>

<p style="text-align:center; font-size:14px; color:#03F">
  <button onclick="requestSomething('decrease')" style="width:200px" >< Show Previous Day</button>
  <!-- this is where the result will appear -->
  <span id="current"></span>
  <button onclick="requestSomething('increase')" style="width:200px">Show Next Day ></button>
</p>

Şimdi, somescript.php dosyasına,

<?php 
  if(isset($_GET['action'])){
    if($_GET['action'] == 'increase'){
      // your increasing day logic here
    } elseif ($_GET['action'] == 'decrease'){
      // decreasing logic here
    } else {
      // whatever...
    }
  }
  ?>

Not: Bu neredeyse sıfırdan ve orada burada bazı kopyalama / geçmiş ile yazılır ve kod aslında çalışıp çalışmadığını kontrol etmedi ... Bu sadece bir kılavuzdur ...

Umarım yardımcı olur.

Bunun için Ajax gerekmez. (: Veritabanından gerek şey, vb ex) sadece size absolutely sunucusu ile iletişim kurmak için gerektiğinde Ajax kullanmalısınız - Eğer JavaScript ile yapamazsınız PHP ile yapabileceği çok az şey vardır . Ajax sonraki bir noktaya kullanıyor olabilirsiniz bile basit bir script sorunları çözmek mümkün olabilir özellikle, her yerde kullanmak gerekir.

Bu kadar olur gibi JavaScript PHP'nin her bit olarak güçlü yerleşik tarih fonksiyonları bir numarası vardır .... ve onlar kutudan gerekenleri yapmazsanız kolayca kendi yazabilirsiniz.

http://www.w3schools.com/jsref/jsref_obj_date.asp

Basit tutun.