2014-10-28 17 views
-1

我有一個動態表,可以在數據庫上執行CRUD操作。 登錄後,用戶被定向到index.php,在這裏顯示一個表,其中的值存儲在數據庫表「ajaxtable」中。我已經使用外鍵加入了「ajaxtable」表和「members」表。 如何進一步修改我的代碼,以便js文件可以從會話變量中獲取用戶的電子郵件,而不是從動態表中的輸入字段中發佈它。 我的index.php:如何在我的javascript中嵌入我的php會話變量

<?php 
session_start(); 
$fname=$_SESSION['mail']; 
?> 


<html> 
    <title>Addressbook</title> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"> </script> 
<link rel="stylesheet" type="text/css" href="crudstyle.css" /> 

</head> 
<body bg color=""> 
<div id="mhead"><h2>Your Adressbook</h2></div> 
<div id="note"> <span> your addressbook is connected to our servers :) </span></div> 
    <?php 
    echo $fname; // it echoes the login email correctly here 
    ?> 
<table id='demoajax' cellspacing="0"> 
</table> 
<script type="text/javascript" src="script.js"></script> 

</body> 
</html> 

在我的script.js文件中的函數:

$('#demoajax').on('click','.ajaxsave',function(){ 

    var fname = $("input[name='"+field_name[0]+"']"); 

//我想從會話變量

var lname = $("input[name='"+field_name[1]+"']"); 
    var domain =$("input[name='"+field_name[2]+"']"); 
    var email = $("input[name='"+field_name[3]+"']"); 
    if(validate(fname,lname,domain,email)){ 
    data = "fname="+fname.val()+"&lname="+lname.val()+"&domain="+domain.val()+"&email="+email.val()+"&actionfunction=saveData"; 
    $.ajax({ 
    url:"DbManipulate.php", 
       type:"POST", 
       data:data, 
    cache: false, 
    success: function(response){ 
     if(response!='error'){ 
      $('#demoajax').html(response); 
     createInput(); 
     } 
    } 

    }); 
    } 
    else{ 
    return; 
    } 
    }); 

獲得本場我的DbManipulate.php文件的一部分:

function saveData($data,$con){ 
    $fname = $con->real_escape_string($data['fname']); 

//上述領域也應該從會話變量這種操作太

$lname = $con->real_escape_string($data['lname']); 
    $domain = $con->real_escape_string($data['domain']); 
    $email = $con->real_escape_string($data['email']); 
    $sql = "insert into ajaxtable(firstname,lastname,domain,email) values('$fname','$lname','$domain','$email')"; 
    if($con->query($sql)){ 
    showData($data,$con); 
    } 
else{ 
echo "error"; 
} 

} 
function showData($data,$con){ 
    $sql = "select * from ajaxtable JOIN member ON member.email=ajaxtable.firstname WHERE member.email=$fname"; 
    $data = $con->query($sql); 
    $str='<tr class="head"><td>user email</td><td>contact name</td><td>contact number</td><td>contact Email</td><td></td></tr>'; 
    if($data->num_rows>0){ 
    while($row = $data->fetch_array(MYSQLI_ASSOC)){ 
    $str.="<tr id='".$row['id']."'><td>".$row['firstname']."</td><td>".$row['lastname']."</td><td>".$row['domain']."</td><td>".$row['email']."</td><td>  
    <input type='button' class='ajaxedit' value='Edit'/> <input type='button' class='ajaxdelete' value='Delete'></td></tr>"; 
    } 
    }else{ 
    $str .= "<td colspan='5'>No Data Available</td>"; 
    } 

echo $str; 
    } 
+0

你可以將'script.js'重命名爲'script.js.php'並加載它。 ''。然後,你可以使用'var fname ='<?php echo $ _SESSION [「mail」]; ?>''如果我理解你的問題 – vaso123 2014-10-28 10:54:11

+0

是否是一個有效的擴展名?所有3個文件都需要進行少量更改,我希望您能提出這些建議。 – Akash 2014-10-28 10:57:21

+0

「fname」應該甚至不可見,以便用戶能夠進行任何更改。它應該自行發佈存儲在會話變量「郵件」中的電子郵件。在我目前的代碼中它是一個用戶可編輯的字段。 – Akash 2014-10-28 10:59:29

回答

0

我建議重構你的代碼一點點的過程中獲得。 如果我是你,我不會在你的函數showData($ data,$ con)中創建表; 相反,我會返回結果作爲jSON,然後在JavaScript中,你將有權訪問它作爲一個對象。 所以,

function getData($data, $conn) 
    { 
     $sql = "select * from ajaxtable JOIN member ON member.email=ajaxtable.firstname WHERE member.email=$fname"; 
     $data = $con->query($sql);    
     if($data->num_rows>0){ 
       while($row = $data->fetch_array(MYSQLI_ASSOC)){ 
       $result[] = $row; 
      } 
      return json_encode($result); 
     } 

在你的JavaScript:

$.getJSON("YOUR_URL", { 
     dir: dir, 
     tagmode: "any", 
     format: "json" 
    }).done(function (data) 
    { 
     var items = []; 
     $.each(data.items, function (key, val) 
     { 
      console.log(val); // here you can see in console values of val and create table rows with those values 
      var tmp_item = "" HERE CREATE YOUR TABLE ROWS val.id, val.first_name 
      items.push(tmp_item);... 
     } 

一旦你得到你data.items需要的所有數據對象,你就可以輕鬆附加這些頁面上使用jQuery(追加,appendTo。 ..)

希望有所幫助。