2017-09-11 19 views
0

私は、データベースに新しい投稿を挿入するajaxスクリプトとPHPファイルをサーバーに持っています。ajaxスクリプトは、対象のphpファイルに投稿し、jsonデータこれは私の記事であるHTMLデータとしてデコードされ、エコーされます)、divに追加するのに使用します。しかし、私のソリューションはデータベース全体、つまり私のクエリがmysql_queryを介して返す全ての結果を返します。どのように私は最近の、または少なくとも私は最後の投稿だけを取得する方法は少なくとも結果を取得するのですか?phpとAjaxを使って最新の投稿のみを更新する

$(function() { 
$("#PostItemz").on('submit', function(event){ 
event.preventDefault() 
var formData = new FormData(this); 

    $.ajax({ 
     url: 'inc/modules/post_data.php', 
     type: 'POST', 
     data: formData, 
     success: function (data) { 
      //here the data return is my post as html object 
      //data is return via echo on another php page 
      console.log(data); 
      $('#postarea').append(data); 
      $("#PostItemz")[0].reset(); 
      $('.inner-addon, .left-addon, .create-text').hide(); 
     }, 
     cache: false, 
     contentType: false, 
     processData: false 
    }); 

}); 


    }); 

、これは私のPHPコードです:ポストデータを返すサーバー上:

 <?php 
     function getFollowedGroupPosts($user_id){ 

     $sql_query = mysql_query("SELECT gid FROM members WHERE uid = '$user_id'"); 
    //iterate through record set, push records into user defined record_set[] array and return array as json encoded data 
         . 
         . 
         . 
         . 
         . 
     $record_set[] = array('gid' => $rows_b['gid'], 
        'pid' => $rows_b['pid'], 
        'post' => $rows_b['post'], 
        'images' => getPostImages($rows_b['pid']), 
        'jImages' => $url_string, 
        'videos' => getPostVideos($rows_b['pid']),  
        'audios' => getPostAudios($rows_b['pid']), 
        'date' => timeAgo($rows_b['date']), 
        'username' => userIdToName($rows_b['uid']), 
        'filemap_id' => $rows_b['filemap_id'], 
        'group_name' => groupIdToName($rows_b['gid']), 
        'comments' => getComments($rows_b['pid']), 
        'likes' => checkLikeCount($rows_b['pid']), 
        'dislikes' => checkDislikeCount($rows_b['pid']), 
        'post_count' => $row_count_b); 


    } 

     } 
     return $record_set; 

どのように私は、非同期AJAXは、PHPの呼び出しと私は、サーバー側でどのようなクエリを使用しない作るのですか私のページのもの以外の最近の投稿を既に返してください

+0

Goは上に読んでどのようにORDER BYとLIMITの仕事。 SQLインジェクションに関してあなたが何をすべきかを読んだら、それを行ってください。 – CBroe

+0

[SQL Server SELECT LAST N ROW]の重複している可能性があります(https://stackoverflow.com/questions/4193705/sql-server-select-last-nrows) –

+0

注文するものは何ですか –

答えて

1

最後に挿入されたレコードは、mysql_insert_idから取得されます。テーブルにAUTO_INCREMENTカラムが含まれている場合は、その値が返されます。

<?php 
$last_id = mysql_insert_id (mysqli $link) 
SELECT * FROM tbl WHERE pid(your primary key) = '$last_id' 
?> 

また、あなたが行うことができますその制限と順序を使用して

SELECT * FROM `table_name` 
ORDER BY `table_name`.`column_name` DESC 
LIMIT 1 

注:MySQLを使用しないでください。これは、PHP 5.5.xから非推奨

+0

のレガシーシステム – Maxwell

+0

@Maxwellを実行するように実行してください。これら2つの方法でこれを行うことができます。 –

0

mysqli_insert_id()の方法を使って最後に挿入された投稿の主キーを取得し、そのIDを使用してそのparticul arの投稿とPHPスクリプトからの戻り値。

+0

レガシーシステム用の書き込みです。mysql_ではなくmysql_何を代替するのでしょうか? – Maxwell

+1

'SELECT LAST_INSERT_ID();'これはmysqlクエリですので、他のmysqlクエリ –

0

あなたは、単にこれを行うことができます。

select * from members ORDER BY 'pid' DESC LIMIT 10 

をあなたのするmysql_queryでメンバー表にaddded最後の10件のレコードを取得します。

関連する問題