Sıralama php ve jquery kullanarak

3 Cevap php

Kullanıcı tablo başlığı tıkladığında ben bir HTML tablo yeniden sipariş çalışıyorum. İşte tüm yapabilirim, ama hala çalışmıyor.

HTML:

// onClick on table header 
var par='ASC';
sort(par);

dan: ajax.js

function sort(orderByType)
{
  $.ajax({
    url: "sort.php",
    type: "get",
    data: "orderby="+orderByType,
    success: function(data){
      alert(data);
      $("t1").text(data);
    }
  });
}

sort.php

$con = mysql_connect("localhost","root","root");
if (!$con) {
  die('Could not connect: ' . mysql_error());
}

$orderBy = $_GET['orderby'];

mysql_select_db("icrisis", $con);

$result = mysql_query("SELECT * FROM messages,user  
                                        where user_id = from_user
                                        ORDER BY user_name".$orderBy);

while($row = mysql_fetch_array($result))
{      
  echo "<tbody><tr><td>"."&#8226;"."</td><td>".
       $row["Time_Date"]."</td><td>".
       $row["player_name"]."</td><td></td><td></td><tr><td></td><td colspan='4'>".
       $row["msg_desc"]."</td></tr></tbody>";
}

mysql_close($con);

Bu $orderBy görmüyor. Ve sonra benim sayfasına yeni düzeni eklemek istediğiniz - nasıl yapılabilir?

Değişken dinamik sıralama çalışması için gönderdi olabilir, yani tıklama ASC veya DESC olmak?

3 Cevap

Ben bu sorunun nedeni olup olmadığından emin değilim, ama bir boşluk özledim inanıyorum.

Lütfen sorgunun son satırı şimdi:

ORDER BY user_name".$orderBy);

Ama olmalıdır:

ORDER BY user_name ".$orderBy);

Denemelisiniz: tablesorter onun sıralama tabloları için. Ve hatta sadece jquery bu çözüm ile php kullanmak gerekmez. Onun Faydalı umuyoruz.

Size anlatıldığı gibi ajax ile tablesorter güncelleme olabilir Daan en anwser üzerinde Yorumlarınız yanıtlamak için here.

Daan Eğer boşluk eksik ve muhtemelen nedeni söylediğim gibi, ancak ben ekleyeceğim:

Şu anda sorunun nedeni olabilir ki, bu başarısız olup olmadığını bilmiyorum çünkü muhtemelen mysql_query () çağrısının sonucunu kontrol etmelisiniz. Örneğin:

$result = mysql_query('SELECT ...');
if (!$result) {
    die(mysql_error());
}

while($row = mysql_fetch_array($result)) {
//etc.

Bu güvenilir olamaz gibi Ayrıca gerçekten, tarayıcıdan gelmiş dizelere dayalı SQL deyimi bina olmamalı, ve birisi şu anda yürütülüyor ne içine kötü niyetli SQL ekleyebilirsiniz. Bkz SQL Injection.

Sen, çok daha güvenli olacağını ilk dizesi doğrulamak ve yalnızca iki olası değerler var çünkü kolay olabilir, örneğin

if (isset($_GET['orderby']) && $_GET['orderby'] == 'DESC') {
    $orderBy = 'DESC';
} else {
    $orderBy = 'ASC';
}