php - 在另一个Page插入查询成功后刷新一个Page的mysql查询

标签 php jquery mysql

我正在使用下面的脚本来构建图像库

1) scriptphoto.js

2)acceptcomment.php

3) edit_album.php

Edit_album.php 包含一个 mysql 查询,该查询在图像被点击时运行(如果共享图像则打印评论)

html:

<div id="photo_preview" style="display:none">
    <div class="photo_wrp">
        <img class="close" src="uploads/close.gif" />
        <div style="clear:both"></div>
        <div class="pleft">test1</div>

        <div class="pright">test2</div>
        <div style="clear:both"></div>
    </div>
</div>

和 scriptphoto.js 上的 Javascript

function getPhotoPreviewAjx(id,name) {
       $.post('edit_album.php',{action:'get_info',Id:id},

            function(data){
            if (name == 'YES'){
            $('#photo_preview .pleft').html(data.data1);
            $('#photo_preview .pright').html(data.data2);
            $('#photo_preview').show();

        }
            else{
            $('#photo_preview .pleft').html(data.data1);
            $('#photo_preview .pright').html(data.data3);
            $('#photo_preview').show();
            }

        }, "json"
    );
};

edit_album.php 上的 php 代码是

if ($_POST['action'] == 'get_info' && (int)$_POST['Id'] > 0) {

$iPid = (int)$_POST['Id'];

$shared = $_POST['shared'];   


       $sComments = '';

     $sq= "SELECT * FROM comment_table WHERE ImageSN = '".$iPid."' ORDER BY C_when ASC LIMIT 10";
     $sql = mysql_query($sq);
      while($query = mysql_fetch_array($sql))   
            {
                $sWhen = date('F j,Y' , $query['C_when']);
                $sComments .= "<div class=\"comment\" id='".$query['C_id']."'>
                <p>Comment from '".$query['c_name']."' <span>(".$sWhen.")</span>:</p>
                <p>".$query['c_text']."</p>
                </div>" ;

                }

        $sharewarning .="<div id='sharewarning'>Share Images To Enable Comments</div>";




       $sCommentsBlock .="<div class=\"comments\" id=\"comments\">
    <h2>Comments</h2>
    <div id=\"comments_warning1\" style=\"display:none\">Don`t forget to fill both fields (Name and Comment)</div>
    <div id=\"comment_warning2\" >You can't post more than one comment per 10 minutes (spam protection)</div>
    <form onsubmit=\"return false;\">
        <table>
            <tr><td class=\"label\"><label>Your name: </label></td><td class=\"field\"><input type=\"text\" value=\"\" title=\"Please enter your name\" id=\"name\" /></td></tr>
            <tr><td class=\"label\"><label>Comment: <input type=\"hidden\" name=\"action\" value=\"accept_comment\"></label></td><td class=\"field\"><textarea name=\"text\" id=\"text\"></textarea></td></tr>
            <tr><td class=\"label\">&nbsp;</td><td class=\"field\"><button onclick=\"submitComment(".$iPid."); return false;\">Post comment</button></td></tr>
        </table>
    </form>
        <div><span id=\"commentspsn\"></span>
        <div id=\"comments_list\">".$sComments."</div>
        </div>";

        $imageInfo = '';

     $selecT = "SELECT imagesrc FROM imagerate WHERE ImageSN ='".$iPid."'";
    $table = mysql_query($selecT);


    while($query = mysql_fetch_array($table))
    {
        $imageInfo.=$query['imagesrc'];
        }


   require_once('classes/Services_JSON.php');
    $oJson = new Services_JSON();
    header('Content-Type:text/javascript');
    echo $oJson->encode(array(
        'data1' => '<img class="fileUnitSpacer" src="uploads/'. $imageInfo.'">' . $sPrevBtn . $sNextBtn ,
        'data2' => $sCommentsBlock,
        'data3' => $sharewarning,

    ));
exit;
}

当点击图像查看时,它会显示如下

edit_album.php 到目前为止,它工作正常,但是当我成功插入评论时,我想刷新评论以显示新评论,这就是我被击中的地方

用于处理注释和插入注释的 jquery 代码如下

function submitComment(id) {
    var sName = $('#name').val();
    var sText = $('#text').val();

    if (sName && sText) {
        $.post('acceptcomment.php', { action: 'accept_comment', name: sName, text: sText, id: id }, 
           function(data){ 

                    if (data != '1') {
                        $('#comments_list').fadeOut(2000, function () { 

                       $(this).html(data);

                        $(this).fadeIn(1000); 
    });

                       $("#commentspsn").html('<span id="commentspan"> <b>comment Submitted</b></span>');


                    } 

            }
        ); 
    } else {
        $('#comments_warning1').fadeIn(1000, function () { 
            $(this).fadeOut(1000); 
        }); 
    }
};

acceptcomment.php代码是

  $iItemId =(int)$_POST['id']; // prepare necessary information
        $sIp = getVisitorIP();
        $sName = $_POST['name'];
        $sText = $_POST['text'];

        if ($sName && $sText) {

            $sql = "SELECT ImageSN FROM comment_table  WHERE  ImageSN = '".$iItemId."' AND commentip = '".$sIp."' AND C_when >= 'UNIX_TIMESTAMP()-600' LIMIT 1";
            $query = mysql_query($sql);
          $array = mysql_num_rows($query);



            if ($array == 0 ) {
                $insert = "INSERT INTO comment_table SET ImageSN = '".$iItemId."' , commentip = '".$sIp."' , C_when = UNIX_TIMESTAMP(), c_name = '".$sName."', c_text ='".$sText."'";
                $sql = mysql_query($insert);

               $update= 'UPDATE imagerate SET comment_counts = comment_counts + 1  WHERE ImageSN = "'.$iItemId.'"';
                $query = mysql_query($update);                


               }  
                }
                    return 1;

需要指导

最佳答案

修改您的接受 comment.php 以返回 json 响应,如下代码所示。

// prepare necessary information
$iItemId =(int)$_POST['id'];
$sIp = getVisitorIP();
$sName = $_POST['name'];
$sText = $_POST['text'];
$oJson = new Services_JSON();
if ($sName && $sText) {

    $sql = "SELECT ImageSN FROM comment_table  WHERE  ImageSN = '".$iItemId."' AND commentip = '".$sIp."' AND C_when >= 'UNIX_TIMESTAMP()-600' LIMIT 1";
    $query = mysql_query($sql);
    $array = mysql_num_rows($query);

    if ($array == 0 ) {
        $insert = "INSERT INTO comment_table SET ImageSN = '".$iItemId."' , commentip = '".$sIp."' , C_when = UNIX_TIMESTAMP(), c_name = '".$sName."', c_text ='".$sText."'";
        $sql = mysql_query($insert);

       $update= 'UPDATE imagerate SET comment_counts = comment_counts + 1  WHERE ImageSN = "'.$iItemId.'"';
       $query = mysql_query($update);  


       $data = array("item_id"=>$iItemId,"name"=>$sName,"text"=>$sText);
       return $oJson->encode($data);
    }  
}

return $oJson->encode(array("error"=>"Error while updating the comment"));

在您的 Javascript 代码中使用收到的文本更新评论部分

function submitComment(id) {
    var sName = $('#name').val();
    var sText = $('#text').val();

    if (sName && sText) {
        $.post('acceptcomment.php', { action: 'accept_comment', name: sName, text: sText, id: id }, 
           function(data){ 

                if (!data.error) {
                    $('#comments_list').fadeOut(2000, function () { 

                        $(this).html(data.text);

                        $(this).fadeIn(1000); 
                   });

                   $("#commentspsn").html('<span id="commentspan"> <b>comment Submitted</b></span>');
                } 
            }
        ); 
    } else {
        $('#comments_warning1').fadeIn(1000, function () { 
            $(this).fadeOut(1000); 
        }); 
    }
}; 

关于php - 在另一个Page插入查询成功后刷新一个Page的mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021940/

相关文章:

php - sphinx 只重置一个过滤器

javascript - ReactJS:为什么 `render`中定义的一些dom元素显示两次?

javascript - 加号不会变回来

php - MySql 中用点对项目进行排序

java - 解析数据org.json.JSONException 另一个错误 : Value &lt;! java.lang.String 类型的 DOCTYPE 无法转换为 JSONObject

jquery - 强制选择 jQuery-ui-tab 作为默认选项

php - 口语变体关系数据库设计的最佳实践

mysql - 两张经纬度表之间的距离计算

mysql - 查找一个表中的字符串是否是另一个列表中字符串的子字符串

PHP;原产地保护组织;带有下拉菜单的 MySQL INSERT 查询