JQuery PHP fonksiyonları görüntüleme

5 Cevap php

Örneğin ben, ben aşağıdaki örnekte bir şey gibi, ortalama hızını ve benim star rating görüntülerinin altında döküm oy görüntülemek mümkün olmak istiyorum bütün gün benim komut dosyası için yeni bir çift özellik eklerim çalışıyorum.

**********
9.8/10 (1160 vote cast)

Ben sorun sonra sorun sonra yeni bir sorunun her şeyi ve çalıştırmak çalışıyorum. Örneğin şimdi ben her yeni PHP fonksiyon birbirleri ile müdahale.

Örneğin benim ilk PHP işlevi getRating() başına doğru tüm çalışır ama benim ikinci PHP fonksiyon evaluateRatingText() ile kullanarak ve benim ilk PHP fonksiyon benim ikinci PHP işlevini işler karışıyor zaman düzgün görünmeyecektir Örneğin tüm yanlış ortalama derece göstererek aslında değerini iki kez görüntüler.

Peki benim JQuery işlevini buna göre hem PHP fonksiyonları görüntülemek böylece benim PHP fonksiyonlarının her iki getRating() doğru benim ilk php işlevi görüntüler benim JQuery fonksiyonu ile birlikte düzgün çalışması yapabilir? Herkes örnekler harika olur bana yardımcı olabilir?

İşte benim PHP işlevleri.

// function to retrieve
function getRating(){
    $sql= "select * from vote";
    $result=@mysql_query($sql);
    $rs=@mysql_fetch_array($result);
    // set width of star
    $rating = (@round($rs['value'] / $rs['counter'],1)) * 10; 
    echo $rating;
}

// function to retrieve average rating and votes
function evaluateRatingText(){
    $sql= "select * from vote";
    $result=@mysql_query($sql);
    $rs=@mysql_fetch_array($result);
    $avg = (@round($rs['value'] / $rs['counter'],1)) * 10;
    $votes = $rs['counter'];
    echo $avg . "/10  (" . $votes . " votes cast)";
}

Burada JQuery fonksiyonudur.

    // get current rating
    getRating();
    // get rating function
    function getRating(){
        $.ajax({
            type: "GET",
            url: "update.php",
            data: "do=getrate",
            cache: false,
            async: false,
            success: function(result) {
                // apply star rating to element
                $("#current-rating").css({ width: "" + result + "%" });
            },
            error: function(result) {
                alert("some error occured, please try again later");
            }
        });
    }

HTML Biçimlendirme.

<ul class='star-rating'>
  <li class="current-rating" id="current-rating"></li>
  <li class="rating-text" id="rating-text"></li>
  <span id="ratelinks">
  <li><a href="javascript:void(0)" title="1 star out of 10" class="one-star">1</a></li>
  <li><a href="javascript:void(0)" title="2 stars out of 10" class="two-stars">2</a></li>
  <li><a href="javascript:void(0)" title="3 stars out of 10" class="three-stars">3</a></li>
  <li><a href="javascript:void(0)" title="4 stars out of 10" class="four-stars">4</a></li>
  <li><a href="javascript:void(0)" title="5 stars out of 10" class="five-stars">5</a></li>
  <li><a href="javascript:void(0)" title="6 stars out of 10" class="six-star">6</a></li>
  <li><a href="javascript:void(0)" title="7 stars out of 10" class="seven-stars">7</a></li>
  <li><a href="javascript:void(0)" title="8 stars out of 10" class="eight-stars">8</a></li>
  <li><a href="javascript:void(0)" title="9 stars out of 10" class="nine-stars">9</a></li>
  <li><a href="javascript:void(0)" title="10 stars out of 10" class="ten-stars">10</a></li>
  </span>
</ul>

5 Cevap

Eğer kullanıyorsanız

echo $rating;

10 yıldız üzerinden değerlendirme yazdırmak için, o zaman sadece bu değerlendirme ve oyların sayısını kullanan bir dize echo:

echo $rating . "/10  (" . $votesCast . " votes cast)";

Neredeyse oradayız gibi görünüyor.

Sorunlardan biri javascript success geri arama, bu hat üzerinde:

$("#rating-text").text(evaluateRatingText());

Eğer, bu PHP işlevini çağırır umuyoruz gibi görünüyor ki bu olmaz. Aslında (başka bir istek gönderme) yine aynı javascript fonksiyonunu çağırıyor.

Bu onu değiştirmek isteyebilirsiniz:

$("#rating-text").text(result);

Bu Ekle ...

<ul class='star-rating'>
  <li class="current-rating" id="current-rating"></li>
  <li class="rating-text" id="rating-text"></li>
  <span id="ratelinks">
  [...]
  </span>
</ul>

Ve bu ...

function getRating(){
    $.ajax({
        [...]
        success: function(result) {
            // apply star rating to element
            $("#current-rating").css({ width: "" + result + "%" });
            // add rating text
            $("#rating-text").text(evaluateRatingText());
        },
        [...]
    });
}

function evaluateRatingText() {
    // Replace the line below with a new call to $.ajax() that gets the information you need from a server-side resource;  sorry, I don't know PHP
    return "9.8/10 (1160 vote cast)";
}

Kenara HTML sorunları tek dönüş işlevi artı böyle her şeyi ile başa çıkmak için bir hesapla fonksiyonu yapmak gerekir (bir li ve metin ve liste garip bir karışımı sarma açıklıklı)

PHP

function echoRatingAll ()
{
     list($value, $counter) = getRating2();  //function returns doesn't print
     echo "$value,$counter"; //we need to echo for the AJAX & we comma delimit

}
function getRating2(){
    $sql= "select `value`, `counter` from vote";
    $result=@mysql_query($sql);
    list($v,$c) = mysql_fetch_row($result);

    return array($v, $c);
 }

JS

success: function(result) {
            var values=result.split(",", result);
            var value = values[0];
            var counter = values[1];
            //do your jquery stuff from here with the two values
        }

Eğer JavaScript ortalamasını nasıl emin değilseniz, sadece PHP dönüş 3 değerlerini yerine 2 yapmak.

Php fonksiyonları verileri almak değil, onlar hemen yazdırabilirsiniz.

Bunun yerine 'echo' size 'dönüşünü' kullanmalısınız.

O derece double gösterir nedeni hem işlevleri ortalama puanı, sadece evaluateRatingText biraz daha fazla veri ekler yankı olmasıdır.

Belki fonksiyonları, değişkenlerin ilgili bazı temel php öğreticiler ile başlayan ve php ve javascript karıştırmadan önce dönüş değerlerini ele alarak daha iyi olurdu.