2016-12-26 7 views
-1

注意:未定義のインデックス:CでpostId:\ XAMPP \ htdocsに\ AJAX完全\ save_post.php上のライン4 注意:未定義のインデックス:CでpostTitle:\ XAMPP \ htdocsに\ AJAX-完全\ save_post.php上のライン8 お知らせ:未定義のインデックス:CでpostDescription:\ 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); exitl –

+0

を使用している場合は、そのページにajaxとそのshowinを使用してデータを送信しています。コード... –

答えて

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インジェクションが可能です。投稿データを信頼してDBに直接送るべきではありません。準備されたステートメントを使用する。 – sm1979

+0

そのエラーは表示されませんが、データはデータベースに挿入できません。 –

-1

あなたは「post_idの」、「POST_TITLEと 『post_description』を使用する必要があります。ダッシュは、フロントエンド(入力タグのname属性)で使用されている、あなたは$ POSTで同じを使用する必要があるので、PHPスクリプト。

+0

これは間違っています。それはAJAXを通過しています。 'data:{postTitle:post_title、postDescription:post_description、postId:post_id}' – chris85

+0

エコーmysqli_insert_id($ conn);そのshowig 0 –

+0

あなたは正しいです。私は全体のコードに従わなかった。 –

関連する問題