2016-12-26 48 views
-1

说明:未定义指数:在帖子ID C:\ XAMPP \ htdocs中\ Ajax的完整\ save_post.php第4行 说明:未定义指数:postTitle在C:\ XAMPP \ htdocs中\ Ajax的完整\ save_post.php第8行 说明:未定义指数:postDescription在C:\ XAMPP \ htdocs中\ Ajax的完整\ save_post.php第8行表示未定义索引时将数据插入数据库

<?php 
     $conn = mysqli_connect("localhost","root","","ajax_complete"); 

     if($_POST["postId"] != ''){ 
      $sql = "UPDATE tbl_post SET post_title ='".$_POST['postTitle']."', post_description = '".$_POST['postDescription']."' WHERE id ='".$_POST['postId']."'" ; 
      mysqli_query($conn,$sql); 
     }else{ 
      $sql = "INSERT INTO tbl_post (post_title,post_description,post_status) VALUES('".$_POST['postTitle']."','".$_POST['postDescription']."','draft')"; 
      mysqli_query($conn,$sql); 
      echo mysqli_insert_id($conn); 
     } 
    ?> 

HTML代码中给出BELOW

<h3>Auto save data </h3> 
     <div class="form-group">  
      <lable>Post Title</lable> 
      <input type="text" name="post_title" id="post_title" class="form-control"/> 
     </div> 
     <div class="form-group">  
      <lable>Post Description</lable> 
      <input type="text" name="post_description" id="post_description" class="form-control"/> 
     </div> 
     <div class="form-group">  
      <input type="hidden" name="post_id" id="post_id" class="form-control"/> 
     </div> 
     <div id="autosave"></div> 
    </div> 
    <script src="./js/jquery-1.11.2.min.js" type="text/javascript"></script> 
    <script> 
     $(document).ready(function(){ 
      function autosave(){ 
       var post_title = $('#post_title').val(); 
       var post_description = $('#post_description').val(); 
       var post_id = $('#post_id').val(); 
       if(post_title != '' && post_description != '') 
       { 
        $.ajax({ 
         url:"save_post.php", 
         method:"POST", 
         data:{postTitle:post_title,postDescription:post_description,postId:post_id}, 
         dataType:"text", 
         success:function(data){ 
          if(data != ''){ 
           $('#post_id').val(data); 
          } 
          $('#autosave').text('post save in DB'); 
          setInterval(function(){ 
           $('#autosave').text(''); 
          },2000); 
         } 
        }); 
       } 
      } 
      setInterval(function(){ 
       autosave(); 
      },10000); 

     }); 
    </script> 
    <script> 
+0

您是否也可以发布您的表单代码?$ _POST'未定义 – Panda

+0

如果我使用Print_r($ _POST),我使用ajax及其showin显示数据; exitl –

+0

请同时提供您的html表单代码... –

回答

0

当页面加载到浏览器中时,代码的结构方式是评估if($_POST["postId"] != '');但由于这是一个简单的页面加载没有$_POST数组,因此警告。为$ _POST添加额外的检查,以便在正常页面加载期间跳过整个代码块。

if($_POST) { 
    if($_POST["postId"] != ''){ 
      $sql = "UPDATE tbl_post SET post_title ='".$_POST['postTitle']."', post_description = '".$_POST['postDescription']."' WHERE id ='".$_POST['postId']."'" ; 
      mysqli_query($conn,$sql); 
     }else{ 
      $sql = "INSERT INTO tbl_post (post_title,post_description,post_status) VALUES('".$_POST['postTitle']."','".$_POST['postDescription']."','draft')"; 
      mysqli_query($conn,$sql); 
      echo mysqli_insert_id($conn); 
     } 
} 
+0

Thanx其工作... –

+0

请按照@ chris85的建议让您的代码更健壮。您的代码可用于SQL注入。您绝对不应该信任发布数据并直接发送到您的数据库。使用预准备的语句 – sm1979

+0

它没有显示错误,但数据无法插入到数据库中 –

-1

在你的PHP脚本,你应该使用“POST_ID”,“POST_TITLE和‘post_description’短跑是在前端(input标签的name属性)使用,所以你需要使用$ POST相同

+0

这是不正确的。它正在通过AJAX。 'data:{postTitle:post_title,postDescription:post_description,postId:post_id}' – chris85

+0

echo mysqli_insert_id($ conn);它的showig 0 –

+0

你是对的。我没有遵循整个代码。 –