php和ajax JavaScript分页评论系统

时间:2016-08-05 00:23:57

标签: javascript php sql ajax pagination

尝试构建评论系统。是否使用AJAX发布了评论。评论计数与分页。我成功实现了两者,但把它们放在一起是另一回事。我试过做2个ajax调用。一个用于从数据库中获取记录并显示分页。另一个要求将记录记录到数据库中。

//这是第一个获取结果和显示分页按钮的ajax调用

    <script>
function request_page(pn){
var two = <?php echo $img_id; ?>;
var showmax =  <?php echo SHOWMAX; ?>; // results per page
var totalpages = <?php echo $totalpages; ?>;

//controls for pigmintation

var pagination_controls = document.getElementById("pagination_controls");

var results_box = document.getElementsByClassName(two)[0];


params = 'showmax=' + showmax + '&totalpages=' + totalpages + '&pn=' + pn + '&img_id=' + two;
request = new ajaxRequest()

  request.open("POST", "response5.php", true)
  request.setRequestHeader("Content-type",
  "application/x-www-form-urlencoded")



request.onreadystatechange = function()
{

  if (this.readyState == 4)
  {
    if (this.status == 200)
    {
      if (this.responseText != null)
      {
       results_box.innerHTML =
        this.responseText
      }
      else alert("Ajax error: No data received")
    }
    else alert( "Ajax error: " + this.statusText)
  }
}

request.send(params)

function ajaxRequest()
{
  try
  {
    var request = new XMLHttpRequest()
  }
  catch(e1)
  {
    try
    {
    request = new ActiveXObject("Msxml2.XMLHTTP")
    }
    catch(e2)
         {
      try
      {
        request = new ActiveXObject("Microsoft.XMLHTTP")
      }
        catch(e3)
          {
            request = false
          }
       }
    }
  return request
  }



var paginationCtrls = "";



    // Only if there is more than 1 page worth of results give the user pagination controls
    if(totalpages != 1)
    {

      if( pn > 1){
                paginationCtrls += '<button onclick="request_page('+(pn-1)+')">&lt;</button>';
        }
      paginationCtrls += ' &nbsp; &nbsp; <b>Page '+pn+' of '+totalpages+'</b> &nbsp; &nbsp; ';
        if (pn != totalpages) {
            paginationCtrls += '<button onclick="request_page('+(pn+1)+')">&gt;</button>';
        }
    }
  pagination_controls.innerHTML = paginationCtrls;
}
</script>


<script> request_page(<?php echo $totalpages; ?>); </script>

///回复

    if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $curPage = (int) sanitizeString($_POST['pn']);
    $showmax = (int) sanitizeString($_POST['showmax']);
    $totalpages = (int) sanitizeString($_POST['totalpages']);
    $z = (int) sanitizeString($_POST['img_id']);


    if ($curPage < 1) { 
        $curPage = 1; 
    } else if ($curPage > $totalpages) { 
        $curPage = $totalpages; 
    }


$offset = ($curPage-1) * $showmax;

// var_dump($showmax);

$one = $showmax;


 $getcomments = "SELECT I.comment, I.created, U.user_pic_path, U.user_id, U.username, G.file_name
                                    FROM users U 
                                    INNER JOIN img_comment I
                                    ON I.img_id = ?
                                    LEFT OUTER JOIN gallery G
                                    ON G.img_id = U.user_pic_path
                                    WHERE I.user_id = U.user_id
                                    ORDER BY UNIX_TIMESTAMP(created) ASC
                                    LIMIT ?, ?";
                      $stmt = $pdo->prepare($getcomments);
                      $stmt->bindParam(1, $z, PDO::PARAM_INT);
                      $stmt->bindParam(2, $offset, PDO::PARAM_INT);
                      $stmt->bindParam(3, $one, PDO::PARAM_INT);
                      $stmt->execute();


//fetch resuls
  while ($row = $stmt->fetch()){ 
                          echo "<div class='chat-entry users person triggerProfile'>";

                          $bulls =  get_web_path($row['user_pic_path']);


                          if(isset($row['file_name']))
                                {
                                  $done32  = "http://localhost/new11/users/{$row['username']}/thumbs/{$row['file_name']}";
                                }else 
                                  {
                                    $done32  = 'http://localhostnew11/users/noimage.jpg';
                                  }

                                $bulls =  get_web_path($row['file_name']);
                                 echo "<a class='head users' href='http://localhost/new11/scripts/show_user_01.php?user_id={$row['user_id']}'>
                                    <img class='imgcom' src='$done32'>
                                  </a>
                                  <div class='body'>
                                    <div class='basic'>
                                     <span class='username'>
                                 <a class='users' href='http://localhost/new11/scripts/show_user_01.php?user_id={$row['user_id']}'>{$row['username']} </a>
                                     </span>

                                  </div>

                               <div class='message'>{$row['comment']}

                               </div>

                             </div>
                             </div>";
                         }

}

//// ajax call#2在提交评论表时被触发

    <div>
       <form  method='post' id="form<?php  echo $img_id; ?>" name="<?php  echo $img_id; ?>">
          <textarea class='lake' name='one' placeholder="Comment" id='<?php  echo $img_id; ?>'></textarea>
         <input id="submit" onclick="showUser(document.getElementById(<?php  echo $img_id; ?>).value, <?php  echo $img_id; ?>);" type="button" value="Submit">
      </form>
   </div>

//// ajax调用函数

function showUser(a, b){

name = a;
two = b;
yes = "form" + two;
  params = 'name1=' + name + '&two1=' + two;
  request = new ajaxRequest()

  request.open("POST", "response10.php", true)
  request.setRequestHeader("Content-type",
  "application/x-www-form-urlencoded")



request.onreadystatechange = function()
{

  if (this.readyState == 4)
  {
    if (this.status == 200)
    {
      if (this.responseText != null)
      {
       document.getElementsByClassName(two)[0].innerHTML =
        this.responseText
      }
      else alert("Ajax error: No data received")
    }
    else alert( "Ajax error: " + this.statusText)
  }
}

request.send(params)

function ajaxRequest()
{
  try
  {
    var request = new XMLHttpRequest()
  }
  catch(e1)
  {
    try
    {
    request = new ActiveXObject("Msxml2.XMLHTTP")
    }
    catch(e2)
         {
      try
      {
        request = new ActiveXObject("Microsoft.XMLHTTP")
      }
        catch(e3)
          {
            request = false
          }
       }
    }
  return request
  }
 document.getElementById(yes).reset();
  return false;
}

回复

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

      define('SHOWMAX', 5);
      $q = sanitizeString($_POST['name1']);

      $z = sanitizeString($_POST['two1']);
      $b = sanitizeString($_SESSION['user_id']);



     $sql = 'INSERT INTO img_comment (img_id, comment, user_id)
                VALUES(:img_id, :comment, :user_id)';
        // prepare the statement
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':img_id', $z, PDO::PARAM_INT);
        $stmt->bindParam(':comment', $q, PDO::PARAM_STR);
        $stmt->bindParam(':user_id', $b, PDO::PARAM_INT);
        $stmt->execute();
        $OK = $stmt->rowCount();





             $getCount = 'SELECT COUNT(*) FROM img_comment WHERE img_id ='. $z;
                // submit query and store result as $totalPix
                $total = $pdo->query($getCount);
                $totalCount = $total->fetchColumn();
                // var_dump($totalCount);
              $total = (int)$totalCount;



          $totalpages = (int) ceil($total/ SHOWMAX); 
          $offset = ($totalpages-1) * SHOWMAX;
          $one = SHOWMAX;

                  if($totalCount > 0){
                     $getcomments = "SELECT I.comment, I.created, U.user_pic_path, U.user_id, U.username, G.file_name
                                    FROM users U 
                                    INNER JOIN img_comment I
                                    ON I.img_id = ?
                                    LEFT OUTER JOIN gallery G
                                    ON G.img_id = U.user_pic_path
                                    WHERE I.user_id = U.user_id
                                    ORDER BY UNIX_TIMESTAMP(created) ASC
                                    LIMIT ?, ?";
                                      $stmt = $pdo->prepare($getcomments);
                                      $stmt->bindParam(1, $z, PDO::PARAM_INT);
                                      $stmt->bindParam(2, $offset, PDO::PARAM_INT);
                                      $stmt->bindParam(3, $one, PDO::PARAM_INT);
                                      $stmt->execute();



                      while ($row = $stmt->fetch()){ 
                    echo "<div class='chat-entry users person triggerProfile'>";

                          $bulls =  get_web_path($row['user_pic_path']);


                          if(isset($row['file_name']))
                                {
                                  $done32  = "http://localhost/new11/users/{$row['username']}/thumbs/{$row['file_name']}";
                                }else 
                                  {
                                    $done32  = 'http://localhostnew11/users/noimage.jpg';
                                  }

                                $bulls =  get_web_path($row['file_name']);
                                 echo "<a class='head users' href='http://localhost/new11/scripts/show_user_01.php?user_id={$row['user_id']}'>
                                    <img class='imgcom' src='$done32'>
                                  </a>
                                  <div class='body'>
                                    <div class='basic'>
                                     <span class='username'>
                                 <a class='users' href='http://localhost/new11/scripts/show_user_01.php?user_id={$row['user_id']}'>{$row['username']} </a>
                                     </span>

                                  </div>

                               <div class='message'>{$row['comment']}

                               </div>

                             </div>
                             </div>";



                    }

                  }
}

0 个答案:

没有答案