2011-04-09 145 views
0

我正在向PHP文件發送變量以將其他內容添加到數據庫中,但由於某種原因,我的數據庫要麼填滿了空格,要麼只是不添加到數據庫。將變量發送到我的PHP文件 - 由於某種原因,它們爲空

customer.php

<script type="text/javascript"> 

function addCustomerFunc(add_LN,add_FN,add_PN,add_DOB) 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("show_label").innerHTML=xmlhttp.responseText; 
    } 
    } 

xmlhttp.open("POST","addCustomer.php",true); 
xmlhttp.send("add_LN="+add_LN+"&add_FN="+add_FN+"&add_PN="+add_PN+"&add_DOB="+add_DOB); 
} 
</script> 

    <p>Add New Customer:</p> 
    <div align="center"> 
     <table width="337" border="1"> 
     <tr> 
      <td width="154"><p>Last Name:</p> 
      <p>First Name:</p> 
      <p>Phone Number:</p> 
      <p>Date of Birth:</p> 
      <p>&nbsp;</p></td> 
      <td width="167"><p align="center"> 
      <form> 
       <input type="text" name="add_LN" id="add_LN" /> 
       <br/><br/> 
       <input type="text" name="add_FN" id="add_FN" /> 
       <br /><br /> 
       <input type="text" name="add_PN" id="add_PN" /> 
       <br /><br /> 
       <input type="text" name="add_DOB" id="add_DOB" /> 
       <br /><br /> 
       <input type="submit" name="add_Customer" id="New_Customer_Form" value="Add Customer" onClick="addCustomerFunc(this.add_LN, this.add_FN, this.add_PN, this.add_DOB); return false;"/> 
      </form> 
      <div id="show_label"/> 
      </p> 
      </td> 
     </tr> 
     </table> 
     </div> 

在addCustomer.php

<?php 
$username="*****"; 
$password="*****"; 
$database="*****"; 

if (isset ($_POST['add_LN'])) 
    $lastName=$_POST['add_LN']; 
else 
    die("Last Name not passed in POST"); 

if (isset ($_POST['add_FN'])) 
    $firstName=$_POST['add_FN']; 
else 
    die ("First Name not passed in POST"); 

if (isset ($_POST['add_PN'])) 
    $phone=$_POST['add_PN']; 
else 
    die("Phone Number not passed in POST"); 

if (isset ($_POST['add_DOB'])) 
    $dob=$_POST['add_DOB']; 
else 
    die("Date of Birth not passed in Post"); 

mysql_connect("dbs4.cpsc.ucalgary.ca",$username,$password); 

@mysql_select_db($database) or die("Unable to select database"); 


$query = "INSERT INTO customer (last_name, first_name, phone_no, date_of_birth, membership) VALUES ('$lastName', '$firstName', '$phone', '$dob', 'T')"; 

if (mysql_query($query)){ 
    echo "Thanks"; 
} else 
{ 
    echo "Failed to insert customer into database"; 
} 

mysql_close(); 
?> 

有人告訴我使用ISSET功能,但這些變量似乎從來沒有更改爲非空值。 我正在使用PHP 5.3.5。

編輯:我不斷收到show_label中的「姓氏未通過POST」,因爲它始終將add_LN視爲空白。

回答

3

您的「onclick」代碼中的this值不會是<form>,它將會是<input>標籤本身。嘗試將其更改爲this.parent.add_LN等。或者,由於您已經輸入了所有輸入「id」值,因此可以省略參數列表,並且只需使用「document.getElementById()」處理函數就可以找到每個輸入。

Firefox Tamper Data插件對於追蹤這樣的問題非常有用,因爲它可以讓您在瀏覽器發送它時直接檢查HTTP請求。

編輯 —哦,對不起;另一個主要問題是你只是抓住DOM元素,但你需要的是「值」屬性。例如:

var lastName = document.getElementById("add_LN").value; 
+0

當我改成了「this.parent.add + LN」,它使我的頁面刷新,數據不會被添加到數據庫中 我會嘗試的document.getElementById – 2011-04-09 22:38:21

+0

我已經改變了的send()到 xmlhttp.send( 「add_LN =」 \t \t \t +的document.getElementById( 「add_LN」) \t \t \t + 「&add_FN =」 \t \t \t +的document.getElementById (「add_FN 「) \t \t \t +」 &add_PN =」 \t \t \t +的document.getElementById( 「add_PN」) \t \t \t + 「&add_DOB =」 \t \t \t +的document.getElementById( 「add_DOB」)); 但同樣的問題仍然存在。 – 2011-04-09 22:43:30

+0

您不能只獲取元素 - 您還必須獲得「.value」屬性。我會更新我的答案。 – Pointy 2011-04-09 22:55:35

相關問題