2013-03-27 3 views
-1
내가 다시 사용자가 자신의 피드백을 제공하고 JQuery와 및 Ajax를 사용하여 페이지를 새로 고치지 않고 PHP와 mysqli를 사용하여 데이터베이스에서이 피드백을 저장할 수 있도록 페이지를 피드를 만드는 오전 그러나 문제는 내가 어떤을하지 않는다는 것입니다

누군가가 나를 도울 수 있다면 난 성공 메시지 를 얻을 수 있지만, 데이터를 삽입 내가 감사 것이다PHP mysqli 아약스 JQuery와

feedback_form.php

<?php 
session_start(); 
    $login = ($_SESSION['login']); 
    $userid = ($_SESSION['user_id']); 
    $login_user = ($_SESSION['username']); 
    $fname = ($_SESSION['first_name']); 
    $lname = ($_SESSION['last_name']); 
    $sessionaddres =($_SESSION['address']); 

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>feedback page</title> 
    <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <link href="style/stylesheet.css"rel="stylesheet" type="text/css"/> 

    <script type = "text/javascript"> 

    $(function(){ 

     $('#submit').click(function(){ 
     $('#container').append('<img src = "images/loading.gif" alt="Currently loading" id = "loading" />'); 


      var comments = $('#comments').val(); 


      $.ajax({ 

       url: 'feedback_process.php', 
       type: 'POST', 
       data: {"comments": comments}, 

       success: function(result){ 
        $('#response').remove(); 
        $('#container').append('<p id = "response">' + result + '</p>'); 
        $('#loading').fadeOut(500, function(){ 
         $(this).remove(); 
        }); 

       } 

      });   

      return false; 

     }); 


    }); 

    </script> 




    </head> 
<?php require_once('header.php'); ?> 


<body> 
<form action = "feedback_form.php" method = "post"> 
<br /> 
<br /> 

    <div id = "container"> 
      <h2><?php echo $login_user ?></h2> 



      <label for = "comments">Comments</label> 
      <textarea rows = "5"cols = "35" name = "comments" id = "comments"></textarea> 
      <br /> 
    </div> 
    </form> 
     <input type = "submit" name = "submit" id = "submit" value = "send feedBack" /> 



<?php require_once('footer.php'); ?> 

</body> 
</html> 

feedback_process.php

<?php 

session_start(); 
if($_SESSION['login'] != 'true'){ 
     header("location:index.php"); 
    } 


    $login = ($_SESSION['login']); 
    $userid = ($_SESSION['user_id']); 
    $login_user = ($_SESSION['username']); 
    $fname = ($_SESSION['first_name']); 
    $lname = ($_SESSION['last_name']); 
    $sessionaddres =($_SESSION['address']); 

$conn = new mysqli('localhost', 'root', 'root', 'lam_el_chamel_db'); 

    echo"<pre>"; 
    print_r($_POST); 
    echo"</pre>"; 

    if(isset($_POST['comments'])){ 

    $comments = $_POST['comments']; 



    $query = "INSERT into feedback (feedback_text, user_name,) VALUES(?,?)"; 

    $stmt = $conn->stmt_init(); 
    var_dump($stmt); 

    if($stmt->prepare($query)) 
    { 

    $stmt->bind_param('ss', $comments, $login_user); 
    $stmt->execute(); 

    } 
    $query2 = "UPDATE feedback SET feedback_text = ?, user_name = ? WHERE user_name = ? "; 

    $stmt = $conn->stmt_init(); 
    if($stmt->prepare($query2)) 
    { 
    $stmt->bind_param('sss', $comments, $login_user, $login_user); 
    $stmt->execute(); 

    } 



    if($stmt){ 

    echo "thank you .we will be in touch soon <br />"; 

    } 
    else{ 
    echo "there was an error. try again later."; 
    } 

} 

else 
    echo"it is a big error"; 
?> 

테이블 필드는 다음과 같습니다. feedback_id feedback_text, user_name

+0

데이터를 저장하고 문자열을 반환합니다 (예 : "고맙습니다..". "삽입 된 데이터를 가져 오지 못했습니다"라는 의미는 무엇입니까? 이런 건 돌려 보내지 마, 그렇지? '에코 $ stmt-> 오류의 값이 무엇 – herrjeh42

+0

은, 당신의'$ query2' –

+0

그리고 후 '다음 위해서 var_dump를 제거, 그것은 jamie0726 @ 프로세스 - D – herrjeh42

답변

0

귀하의 추가 정보가 있습니다.

//old 
$query = "INSERT into feedback (feedback_text, user_name,) VALUES(?,?)"; 

//new 
$query = "INSERT into feedback (feedback_text, user_name) VALUES(?,?)"; 
+0

사람 내가 동일한 사용자가 데이터베이스에 다른 의견을 입력하면이 새 행을 삽입하는 것입니다하지만 난이다 필요한 질문에게 통지를해야 그냥 MySQL의 http://dev.mysql.com/doc/refman/5.1/en/replace.html – user2214618

+0

확인을 새로운 행을 추가하지 않고 피드백 텍스트 필드를 업데이트 코멘트 섹션 사람들은 replace 문을 사용하고이 원하는 테이블의 외래 키를 가지고이 테이블이 교체되고 잘 작동하지만 참조 된 테이블이 비어 있다고 말하면 – herrjeh42

+0

@ jamie0726에서 동일한 사용자에 대한 교체 명령을 – user2214618

0

당신은 행이 동일한 사용자 이름으로 존재하는지 확인해야합니다

//Check a row with same username exists 
$queryChecking = "Select COUNT(*) FROM feedback WHERE user_name = ?"; 

결과가 하나의 동일한 경우, 당신은 삽입 새 행을 업데이트하지 필요)

+0

내가 업데이트 문을 사용하고 있지만 내가 잘못된 방법으로 사용하고 있다는 것 .. 그래서 당신은 내가 사용자 이름이 존재하는지 확인해야하고 삽입 문 다음 내가 삽입 또는 그 이전에 내가 업데이트하는 것이 의미? – user2214618

+0

예. 먼저 지정된 user_name에 대한 항목이 이미 있는지 확인하십시오. 삽입하지 않으면 업데이트하십시오. 제이미 말한 것처럼 – herrjeh42

+0

예 정확히, 행이 존재하는 경우,이 경우 업데이트 확인 쿼리, 수표 쿼리에 의해 반환 동일한 ID를 다시 사용 : "사용자 _ = 피드백로부터 ID를 선택" $ queryChecking =) 1 개 행이 반환됩니다 경우, 당신은 지금처럼 다른 삽입을 수행 피드백은 이미 당신은 삽입 대신 UPDATE 문을 수행해야 – Pouki