2013-03-27 67 views
-1

我創建一個反饋,讓用戶給他們的反饋和使用PHP和庫MySQLi不使用jQuery和AJAX刷新頁面存儲在數據庫中的這種反饋頁面,但問題是,我沒有得到任何插入的數據,雖然我得到了成功的消息 如果有人能幫助我,我會理解,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

您正在保存數據並返回一個字符串,例如「謝謝..」。 「我沒有插入數據」是什麼意思?不要回復這樣的事情嗎? – herrjeh42 2013-03-27 07:53:33

+0

什麼是'回聲$ stmt->誤差值;'後您的'$ query2' – 2013-03-27 07:53:43

+0

和:刪除的var_dump,這就可能打破過程:-D – herrjeh42 2013-03-27 07:54:23

回答

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 2013-03-27 08:14:37

+0

退房替換命令評論部分的人說,如果我們使用替換語句,並且我們有這個期望的表的外鍵,這個表將被替換並且工作良好,但是所引用的表將是空的 – herrjeh42 2013-03-27 08:28:52

+0

@ jamie0726添加任何新行相同的用戶 – user2214618 2013-03-27 08:42:45

0

您需要檢查,如果連續使用同一用戶名存在:

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

如果結果是等於一,則需要更新行,而不是插入一個新的;)

+0

@ pouki06我正在使用更新語句,但它似乎我用錯了方式..所以你的意思是在插入語句之前我需要檢查用戶名是否存在,然後我插入或我更新? – user2214618 2013-03-27 08:45:10

+0

是的。首先檢查給定user_name的條目是否已經存在。如果沒有插入,否則請進行更新。 – herrjeh42 2013-03-27 09:42:00

+0

是的,就像jamie所說,如果該行存在,重用與您的支票查詢返回的相同的ID,在這種情況下,更新檢查查詢: $ queryChecking =「選擇ID FROM feedback WHERE user_name =?」 如果返回1行,則反饋已經存在,您必須執行update語句而不是insert,否則按照現在的方法執行insert操作;) – Pouki 2013-03-27 10:36:27