Отправка переменных в мой PHP-файл - по какой-то причине они нулевые - PullRequest
0 голосов
/ 10 апреля 2011

Я отправляю переменные в мой 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.

Редактировать: я продолжаю получать "Фамилия не передана в POST" в show_label, потому что он продолжает видеть add_LN как пустое.

1 Ответ

3 голосов
/ 10 апреля 2011

Значение this в вашем коде "onclick" не будет <form>, это будет сам тег <input>.Попробуйте изменить их на this.parent.add_LN и т. Д. В качестве альтернативы, поскольку вы задали все входные значения "id", вы можете обойтись без списка аргументов и просто заставить функцию обработчика находить входные данные с "document.getElementById ()" для каждого.

Плагин Firefox Tamper Data действительно полезен для отслеживания подобных проблем, поскольку он позволяет вам напрямую проверять HTTP-запрос при его отправке браузером.

edit - о, извините;Еще одна серьезная проблема заключается в том, что вы просто захватываете элемент DOM, но вам нужен атрибут "value".Например:

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