jQuery &

1 Cevap php

PLATFORM:

PHP, MySQL & jQuery

WHAT I HAVE:

Ben bir veritabanı tablo var. Benim uygulama içinde, ben tüm satırlarını mümkün duyuyorum. Ben veritabanı sorgulama olduğum zaman, ben kayıtları 30 olarak sınır getirme ayarlamış, ama bu bir açılan liste ile değiştirilebilir. Yani tek bir sorguda veri 30 satır kadar getiriliyor ve onları görüntüleyen olduğumu düşünün. Ben tablo (satırlar) bu verileri doldurmamak duyuyorum. Ben gelecek her kayıtla ve bir Sil düğmesine onay kutusu var. Sil butonu tıklandığında, kontrol edilir, tüm satırlar, silinmiş olacaktır.

WHAT I AM TRYING TO DO:

Satır getirme limiti karşılanmaktadır kadar silerim her satır için, ben, satır bir sonraki seti ile geçerli görünümü güncelleştirmek çalışıyorum. Kafa karıştırıcı? İşte bir örnek:

EXAMPLE:

Benim masada ve o I 1000 satır düşünün Ben kayıtlar 30 kayıtları kadar bir defada gösterilecek anlamına gelir, 30 olarak sınırı getirme belirledik. Ben diğer kayıtların gezinmek için sayfalamayı kullanabilirsiniz. Şimdi benim görüşüme göre, ben tablodaki verilerin 30 satır var. Ben 5 satır seçilir ve jQuery ile bunları silindi. Silindikten sonra, ben görünümünden silinen satırları kaldırmak mümkün duyuyorum. Ben 5 satır silinir beri Yani bu durumda, ben bunları kaldırmak mümkün ve şimdi benim görüşüm bana (doğru) sadece 25 satır gösterir. Ben bir rekor 30 sınırı getirme gibi orada benim tabloda hala kalan 995 satırlar ve yana, şimdi ben bu otomatik olarak önümüzdeki 5 kayıtları göstermek böyle bir şekilde çalışmak istiyorum. Ben mevcut girişleri yukarı taşımak istiyorsanız ve yeni girişler alt doldurmak için.

Diğer bir deyişle, sürece yeterli satırlar var gibi, birçok silinen gibi, kayıtların aynı sayıda benim görünümü doldurmak istiyorum. Ben 10 kayıtları silerseniz Yani, önümüzdeki 10 kayıtları alındı ​​ve görüntülenen veri 30 satır toplam sayısı, yapım yine otomatik olarak görüntülenmesini istiyorum. 20 kayıtlar silinirse, o zaman önümüzdeki 20 kayıtları alındı ​​ve (yine görüntülendiğini, bu veri 30 satır toplam sayısı yapmadan) otomatik olarak görüntülenmesini istiyorum. Ben görsel yeni satırlar yer aldı unutmayın böylece, ona bağlı bir etkisi ile bunu yapmak istiyorum. Belki slideUp veya fadein + slideUp etkisi uygulanabilir? Ben mantıklı umuyoruz.

WHAT I NEED:

Ben PHP & jQuery code Yukarıdaki etkisi / işlevselliği elde etmek gerekiyor. Şimdiden teşekkürler.

İşte benim jQuery code (eğer yardımcı olur) bir parçasıdır:

$('#button_delete').click(function() {  

  $.ajax({
   type: 'POST',  
   cache: false,
   url: 'test.php',
   data: $('#form1').serialize(), 
   dataType: 'json',
   success: function(data) {            

      if(data.success === 1)
      {
       $.each(data.id, function (index, value) {       

         $('#'+value).remove();
       });   

             jQuery.each(data.new_rows_data, function(i, val) 
            {

                jQuery.each(val, function(i, new_val) 
                {                  
                    $('#table').append('<tr id='+new_val+'>'+

                  '<td></td>'+
                  '<td></td>'+
                  '<td>'+new_val+'</td>'+           
                  '</tr>');   
                });
            });


      }
     }       
   }) 

  return false;
});

PHP code:

<?php
 $from = 0;
 $limit = 30;

$result = mysql_query( "SELECT * FROM mytable ORDER BY m_id ASC LIMIT  $from, $limit" );  
?>

<table>
 <tr>
     <td>ID</td>
     <td>Content</td>
    </tr>   

 <?php
 while( $rows = mysql_fetch_array($result) )
 {
 ?>
 <tr id=<?php echo $rows['m_id']; ?>>
     <td><?php echo $rows['m_id']; ?></td>
     <td><?php echo $rows['content']; ?></td>
    </tr>   
 <?php    
 }
 ?>

</table>

test.php

//test.php

<?php 

$id = $_POST['id'];

if( is_array( $id ) )
{
    $arr_size = sizeof( $id );

    foreach ( $id as $value )
    {
        $sql = "DELETE FROM mytable WHERE id = ".(int)$value." LIMIT 1";
        $result = mysql_query($sql);
    }

    if( $result )
            {
                $success = 1;
                $message = 'Deleted';   
            }
        else
            {
                $success = 0;
                $message = 'Unable to DELETE FROM DB.';             
            }
}

$last_id = 500; 


for($i=1; $i <= $arr_size;  $i++)
{
    $new_value = ($last_id + $i);

    $new_rows[] .= $new_value;

    $res = mysql_query("SELECT id,  message, date 
                       FROM mytable WHERE id = ".(int)$new_value." "); //LIMIT 1

    $row = mysql_fetch_array($res);



    $new_rows_data['row']['id'] .= $row['id'];

    $new_rows_data['row']['message'] .= $row['message'];

    $new_rows_data['row']['date'] .= $row['date'];
}



print json_encode(array('success' => $success, 'message' => $message, 'id' => $id,  'new_rows' => $new_rows,
                        'new_rows_data' => $new_rows_data)); 
?>

1 Cevap

Eğer AJAX kullanıyorsanız bu yana satırları silmek için (veya Ajaj, sanırım), ayrıca şu anda silme yazı sayfasına görüntülenen varlık son id geçebileceği.

Sonra, bunun yerine sadece başarıyı geri geçerek, ayrıca eklenen satırların son id son id ayarı, aynı uzunlukta satır json kodlanmış dizi sayı silinmiş olarak ve sofranıza bu eklemek için kullanımı jquery geçebileceği.

$('#button_delete').click(function() {  

  $.ajax({
   type: 'POST',  
   cache: false,
   url: 'test.php',
   data: $.extend($('#form1').serialize(), { 'last_id':$('#table tr:last').attr('id') }), 
   dataType: 'json',
   success: function(data) {            

      if(data.success === 1)
      {
       $.each(data.id, function (index, value) {       

         $('#'+value).remove();
       });   
       jQuery.each(data.new_rows_data, function(i, val) 
            {
                 $('#table').append('<tr id='+val.id+'>'+

                  '<td></td>'+
                  '<td></td>'+
                  '<td>'+val.message+'</td>'+           
                  '</tr>');   

            });

      }
     }       
   }) 

  return false;
});

Veya bu yönde bir şey.

Şimdi $ _POST ['last_id'] aracılığıyla silme kodu son id erişmek gerekir. Post-silmek seçeneğini seçerek:

$res = mysql_query("SELECT id,  message, date 
                   FROM mytable WHERE id > ".(int)$last_id." limit ".$arr_size);

Eğer son bir sonra sonuçlar almalısınız.