2016-06-23 31 views
0

當我插入一個項目它顯示在列表上2次,但在MySQL表上它只註冊一次。它開始於我開始使用會話時。先謝謝你。AJAX動態插入刪除搜索,顯示項目2次

的index.php

<html> 
    <head> 
     <title>Live Table Data Edit</title> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    </head> 
    <body> 
     <div class="container"> 
      <br /> 
      <br /> 
      <br /> 
      <div class="table-responsive"> 
       <h3 align="center">Lista articulos prestados</h3><br /> 
       <div id="live_data"></div>     
      </div> 
     </div> 
    </body> 
</html> 
<script> 
$(document).ready(function(){ 
    function fetch_data() 
    { 
     $.ajax({ 
      url:"select.php", 
      method:"POST", 
      success:function(data){ 
       $('#live_data').html(data); 
      } 
     }); 
    } 
    fetch_data(); 
    $(document).on('click', '#btn_add', function(){ 
     var Articulo = $('#Articulo').text(); 
     var fecha = $('#fecha').text(); 
     var emailpresta = $('#emailpresta').text(); 
     var emailrecibe = $('#emailrecibe').text(); 
     if(Articulo == '') 
     { 
      alert("Ingresa Articulo"); 
      return false; 
     } 
     if(fecha == '') 
     { 
      alert("Ingresa Fecha"); 
      return false; 
     } 
     if(emailpresta == '') 
     { 
      alert("Ingresa tu email"); 
      return false; 
     } 
     if(emailrecibe == '') 
     { 
      alert("Ingresa email tercero"); 
      return false; 
     } 
     $.ajax({ 
      url:"insert.php", 
      method:"POST", 
      data:{Articulo:Articulo, fecha:fecha, emailpresta:emailpresta,  emailrecibe:emailrecibe }, 
      dataType:"text", 
      success:function(data) 
      { 
       alert(data); 
       fetch_data(); 
      } 
     }) 
    });  
    $(document).on('click', '.btn_delete', function(){ 
     var id=$(this).data("id3"); 
     if(confirm("Are you sure you want to delete this?")) 
     { 
      $.ajax({ 
       url:"delete.php", 
       method:"POST", 
       data:{id:id}, 
       dataType:"text", 
       success:function(data){ 
         alert(data); 
         fetch_data(); 
       } 
      }); 
     } 
    }); 
}); 
</script> 

select.php

<?php 
session_start(); 

$check_usuario = $_SESSION['email']; 
$connect = mysqli_connect("######", "######", "", "############"); 
$output = ''; 
$sql = "SELECT * FROM articulos INNER JOIN usuarios WHERE  emailpresta='".$check_usuario."'"; 
$result = mysqli_query($connect, $sql); 
$output .= ' 
    <div class="table-responsive"> 
     <table class="table table-bordered"> 
      <tr> 
       <th width="10%">Id</th> 
       <th width="40%">Articulo</th> 
       <th width="40%">Fecha(Formato: AAAA-MM-DD)</th> 
       <th width="40%">Email-presta</th> 
       <th width="40%">Email-recibe</th>  
       <th width="10%">Borrar</th> 
      </tr>'; 
if(mysqli_num_rows($result) > 0) 
{ 
    while($row = mysqli_fetch_array($result)) 
    { 
     $output .= ' 
      <tr> 
       <td>'.$row["id"].'</td> 
       <td class="Articulo" data-id1="'.$row["id"].'" contenteditable>'.$row["Articulo"].'</td> 
       <td class="fecha" data-id2="'.$row["id"].'" contenteditable>'.$row["fecha"].'</td> 
       <td class="emailpresta" data-id2="'.$row["id"].'" contenteditable>'.$row["emailpresta"].'</td> 
       <td class="emailrecibe" data-id2="'.$row["id"].'" contenteditable>'.$row["emailrecibe"].'</td> 
       <td><button type="button" name="delete_btn" data- id3="'.$row["id"].'" class="btn btn-xs btn-danger btn_delete">x</button></td> 
      </tr> 
     '; 
    } 
    $output .= ' 
     <tr> 
      <td></td> 
      <td id="Articulo" contenteditable></td> 
      <td id="fecha" contenteditable></td> 
      <td id="emailpresta" contenteditable></td> 
      <td id="emailrecibe" contenteditable></td> 
      <td><button type="button" name="btn_add" id="btn_add" class="btn btn-xs btn-success">+</button></td> 
     </tr> 
    '; 
} 
else 
{ 
    $output .= '<tr> 
         <td></td> 
         <td id="Articulo" contenteditable></td> 
         <td id="fecha" contenteditable></td> 
         <td id="emailpresta" contenteditable></td> 
         <td id="emailrecibe" contenteditable></td> 
         <td><button type="button" name="btn_add" id="btn_add"  class="btn btn-xs btn-success">+</button></td> 
       </tr>'; 
} 
$output .= '</table> 
    </div>'; 
echo $output; 
?> 

insert.php

<?php 
    session_start(); 
    $connect = mysqli_connect("############", "############", "", "############"); 
$sql = "INSERT INTO articulos(Articulo, fecha, emailpresta, emailrecibe)  VALUES('".$_POST["Articulo"]."', '".$_POST["fecha"]."' 
    , '".$_POST["emailpresta"]."', '".$_POST["emailrecibe"]."')"; 
if(mysqli_query($connect, $sql)) 
{ 
    echo 'Data Inserted'; 
} 
?> 

delete.php

<?php 
    session_start(); 
    $connect = mysqli_connect("############", "############", "", "############"); 
    $sql = "DELETE FROM articulos WHERE id = '".$_POST["id"]."'"; 
    if(mysqli_query($connect, $sql)) 
    { 
    echo 'Data Deleted'; 
    } 
    ?> 
+0

當你得到了你的問題的幫助,不要只是離開或很快人們會停止幫助你。您沒有爲您發佈的任何問題選擇答案,包括此問題。我的回覆沒有幫助嗎? – BeetleJuice

回答

0

這個問題很可能與你的MySQL查詢有關。執行以下操作時屏幕上顯示的內容:

//session_start(); <-- do not start session 
$email = '......'; <-- use an email from the DB with data available 
$sql = "SELECT * FROM articulos INNER JOIN usuarios 
        WHERE emailpresta='$email'"; 
$connect = mysqli_connect(...); 
$result = mysqli_query($connect,$sql); 

$data = mysqli_fetch_all($result)); 
print_r($data); 

您是否看到重複的行?如果是這樣,你需要處理你的SQL查詢。具體而言,您不會告訴數據庫如何加入articulosusarios表。取而代之的

SELECT * from articulos INNER JOIN usarios WHERE emailpresta='$email' 

你可能需要類似:

SELECT * from articulos INNER JOIN usarios ON articulos.userID=usarios.ID 
            WHERE usarios.emailpresta='$email' 

相反的articulos.userIDusarios.ID,使用匹配這兩個表中的字段。你可以學到一些關於INNER JOIN here

旁註

我注意到你插入$_SESSION['email']直接到你的數據庫的查詢。如果這是您從用戶那裏收到的價值,那麼您將面臨巨大的風險SQL injection attack,任何人都可以使用特製的輸入執行任何查詢(包括提取,修改或刪除數據庫記錄)。改用parameterized queries來代替。即使$_SESSION['email']的內容是安全的,在您接受用戶輸入的任何地方,運行原始查詢都是一種風險習慣。