2014-10-07 32 views
0

我想从HTML中的用户注册表单获取数据,然后将数据推送到JSON,然后获取JSON并存储到MySQL中。请帮帮我。从HTML表单插入输入数据到JSON对象,然后将其存储在MYSQL中

HTML

<form id="myForm" action="userInfo.php" method="post"> 
     <table align="center"> 
      <tr> 
       <td><label for="FirstNameLabel" class="tableproperties">First Name</label></td> 
       <td><input type="text" class="signupTextBoxStyle" name="firstName" placeholder="Enter First Name" id="FirstNameBox" required/></td> 
      </tr> 
      <tr> 
       <td><label for="LastNameLabel" class="tableproperties">Last Name</label></td> 
       <td><input type="text" name="lastName" placeholder="Enter Last Name" id="LastNameBox" class="signupTextBoxStyle" required></td> 
      </tr> 
     <tr> 
      <td><label for="eMailLabel" class="tableproperties">Email</label></td> 
      <td><input type="email" name="email" placeholder="Enter Email" id="eMailBox" class="signupTextBoxStyle" required></td> 
      <td id="emailStatus"></td> 
     </tr> 

     <tr> 
      <td><label for="passwordLabel" class="tableproperties">Password</label></td> 
      <td><input type="password" name="password" placeholder="Enter Password" id="passwordTextbox" maxlength="24" class="signupTextBoxStyle" required></td> 
      <td><i class="fa fa-info-circle infoIcon" title="Password must contain minimum 3 upper case, 2 lower case and 2 special chars"></i></td> 
      <td><progress value="0" max="100" class="progressBar" id="progressStatus"></progress></td> 
      <td id="passwordStrength"></td> 
     </tr> 

     <tr> 
      <td><label for="confirmPasswordLabel" class="tableproperties">Confirm Password</label></td> 
      <td><input type="password" name="confirmpassword" placeholder="Must be same as password" maxlength="24" id="confirmPasswordBox" class="signupTextBoxStyle" required></td> 
      <td id="passwordMismatch"></td> 
     </tr> 

     <tr> 
      <td><label for="dobLabel" class="tableproperties">D.O.B</label></td> 
      <td><input type="date" name="dob" placeholder="Enter D.O.B" id="dobBox" class="signupTextBoxStyle" required></td> 
     </tr> 

     <tr> 
      <td><label for="dobTimeLabel" class="tableproperties">D.O.B with time</label></td> 
      <td><input type="datetime" name="dobTime" placeholder="Enter D.O.B with time" id="dobTimeBox" class="signupTextBoxStyle" required></td> 
     </tr> 

     <tr> 
      <td><label for="localDOBLabel" class="tableproperties">Local D.O.B</label></td> 
      <td><input type="datetime-local" name="localdob" placeholder="Enter Local D.O.B" id="localDobBox" class="signupTextBoxStyle" required></td> 
     </tr> 

     <tr> 
      <td><label for="ssnLabel" class="tableproperties">SSN</label></td> 
      <td><input type="text" name="ssn" placeholder="000-00-0000" id="ssnBox" class="signupTextBoxStyle" required pattern="^(\d{3}-\d{2}-\d{4})$"></td> 
     </tr> 

     <tr> 
      <td><label for="usPhoneNumber" class="tableproperties" >US Phone Number</label></td> 
      <td><input type="text" name="phone" placeholder="000-000-0000" id="usNumberBox" class="signupTextBoxStyle" required></td> 
      <td id="phoneStatus"></td> 
     </tr> 

     <tr> 
      <td><label for="creditLabel" class="tableproperties" id="CreditText">Credit Card Number</label></td> 
      <td><input type="text" name="creditCardNumber" placeholder="Enter Credit Card Number" id="creditBox" class="signupTextBoxStyle" required pattern="^[0-9]{12}(?:[0-9]{4})?$"></td> 
     </tr> 


     <tr> 
      <td colspan='2'> 
       <input type="submit" class="btn btn-primary btn-lg btn-block signupbuttonStyle" id="sub" /> 
       <button type="button" class="btn btn-danger btn-lg btn-block signupbuttonStyle" onclick="location.href = 'index.html';">Cancel</button> 
      </td> 
     </tr> 
     </table> 
    </form> 

PHP(只是为了测试数据得到保存到MySQL,如果我手动输入数据)

$json_obj = '{ 
     "jsonFirstName": "Kishan", 
     "jsonLastName": "Kishan", 
     "jsonEmail": "Kishan", 
     "jsonPassword": "Kishan", 
     "jsonDob": "Kishan", 
     "jsonDobTime": "Kishan", 
     "jsonLocaldob": "Kishan", 
     "jsonSsn": "Kishan", 
     "jsonPhonenumber": "Kishan", 
     "jsonCreditcardnumber": "Kishan" 
}'; 

PHP,如果我想(错误从表格中获取数值)

$json_obj = '{ 
     "jsonFirstName": (string) $_POST['firstName'], 
     "jsonLastName": (string) $_POST['lastName'], 
     "jsonEmail": (string) $_POST['email'], 
     "jsonPassword": (string) $_POST['password'], 
     "jsonDob": (string) $_POST['dob'], 
     "jsonDobTime": (string) $_POST['dobTime'], 
     "jsonLocaldob": (string) $_POST['localdob'], 
     "jsonSsn": (string) $_POST['ssn'], 
     "jsonPhonenumber": (string) $_POST['phone'], 
     "jsonCreditcardnumber": (string) $_POST['creditCardNumber'] 
}'; 

错误说明
解析错误:语法错误,意想不到在/Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php '姓'(T_STRING)上线的PHP 19

REST代码
$ result = json_decode($ json_obj);

$firstname = $result->jsonFirstName; 
$lastname = $result->jsonLastName; 
$email = $result->jsonEmail; 
$password = $result->jsonPassword; 
$dob = $result->jsonDob; 
$dobTime = $result->jsonDobTime; 
$localdob = $result->jsonLocaldob; 
$ssn = $result->jsonSsn; 
$phonenumber = $result->jsonPhonenumber; 
$creditcardnumber = $result->jsonCreditcardnumber; 


if(mysql_query("INSERT INTO user VALUES('$firstname', '$lastname', '$email', '$password', '$dob', '$dobTime', '$localdob', '$ssn','$phonenumber','$creditcardnumber')")){ 
    echo "Successfully Inserted"; 
} 

else 
    echo "Fail to Insert"; 
+2

你为什么要在json中转换它? – 2014-10-07 06:10:42

+0

我不明白你为什么需要将POST变量放入json字符串中,然后解码,然后再次使用它。它没有意义 – Ghost 2014-10-07 06:10:58

+0

$ json_obj =“{'jsonFirstName':”。 mysqli_real_escape_string($ _ POST ['firstName']。“)} - 或者更好的是,使用准备好的语句... – FAS 2014-10-07 06:13:29

回答

1

直接通过串联创建JSON字符串很难,因为引号,换行符等等。

相反,创造价值的数组,编码成JSON字符串json_encode

$values = array(
    "jsonFirstName" =>  $_POST['firstName'], 
    "jsonLastName" =>   $_POST['lastName'], 
    "jsonEmail" =>   $_POST['email'], 
    "jsonPassword" =>   $_POST['password'], 
    "jsonDob" =>    $_POST['dob'], 
    "jsonDobTime" =>   $_POST['dobTime'], 
    "jsonLocaldob" =>   $_POST['localdob'], 
    "jsonSsn" =>    $_POST['ssn'], 
    "jsonPhonenumber" =>  $_POST['phone'], 
    "jsonCreditcardnumber" => $_POST['creditCardNumber'] 
); 

$json_obj = json_encode($values); 

另外,你可以这样做:

$json_obj = json_encode($_POST); 

然后,您将得到每一个JSON对象索引$_POST。唯一的区别是,你不能像在你的例子中那样重命名你的字段。

+0

谢谢...迄今它的gng on gud ....当我回显$ json_obj ..我得到下面的结果({“ jsonFirstName “:” userfirst”, “jsonLastName”: “userlast”, “jsonEmail”: “[email protected]”, “jsonPassword”: “QWERqwer @#$”, “jsonDob!”: “2014年1月1日” “jsonDobTime”: “dobtime”, “jsonLocaldob”: “2014-01-01T01:00”, “jsonSsn”: “123-12-1234”, “jsonPhonenumber”: “123-123-1234”, “jsonCreditcardnumber” :“123412341234”})...你能请指导我如何在mySQl服务器中逐一存储这些值...这将实际上解决我的问题.. – 2014-10-08 01:50:26

+0

它的工作感谢很多fabian ... – 2014-10-08 03:04:47

0

不知道你为什么这样做,但是解析错误是因为你使用的是单引号打开字符串,然后又使用该挑数组索引。

变化$_POST['firstName']用双引号如$_POST["firstName"]

+0

它stil不wrk ...这个错误进来注意:试图获取非对象的属性在/ Applications/XAMPP/xamppfiles /htdocs/xampp/297test/userInfo.php on line 35“$ firstname = $ result-> jsonFirstName;” - >这行指出 – 2014-10-07 06:18:03

0

编辑: 尝试这样做。

$array = (
     "jsonFirstName" => $_POST['firstName'], 
     "jsonLastName" => $_POST['lastName'], 
     "jsonEmail" => $_POST['email'], 
     "jsonPassword" => $_POST['password'], 
     "jsonDob" => $_POST['dob'], 
     "jsonDobTime" => $_POST['dobTime'], 
     "jsonLocaldob" => $_POST['localdob'], 
     "jsonSsn" => $_POST['ssn'], 
     "jsonPhonenumber" => $_POST['phone'], 
     "jsonCreditcardnumber" => $_POST['creditCardNumber'] 
); 

$json = json_encode($array); 
+0

仍然没有运气..现在的错误是“解析错误:语法错误,第18行中的/Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php中出现意外的'{' – 2014-10-07 06:23:50

+0

看看我编辑的问题 – 2014-10-07 06:32:33

+0

解析错误:语法错误,意外'=>'(T_DOUBLE_ARROW)in/Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php ..我得到这个新的错误:( – 2014-10-07 06:43:14

0

,因为你是在一个错误的方式创建JSON对象了POST变量你得到一个错误。在你的陈述中引用确实存在问题。它应该是这样的:

$json_obj = '{ 
    "jsonFirstName": "'.(string) $_POST['firstName'].'", 
    "jsonLastName": "'.(string) $_POST['lastName'].'", 
    "jsonEmail": "'.(string) $_POST['email'].'", 
    "jsonPassword": "'.(string) $_POST['password'].'", 
    "jsonDob": "'.(string) $_POST['dob'].'", 
    "jsonDobTime": "'.(string) $_POST['dobTime'].'", 
    "jsonLocaldob": "'.(string) $_POST['localdob'].'", 
    "jsonSsn": "'.(string) $_POST['ssn'].'", 
    "jsonPhonenumber": "'.(string) $_POST['phone'].'", 
    "jsonCreditcardnumber": "'.(string) $_POST['creditCardNumber'].'" 
    }'; 

如果我只包括没有双引号的变量而构建JSON对象,我得到这样的:

$name = "Foo"; 
    $json_obj = '{"firstName" :'.$name.'}'; 

//gets expanded to $json_obj = {"firstname" : Foo} 
//Whereas it should be $json_obj = {"firstname" :"Foo"} 

正是因为缺少双引号的,您无法首先创建JSON对象,因此当您尝试对其进行解码并进一步访问某个属性时,它会给出错误提示:

Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php on line 35 

试试我给的代码片段,它应该有希望帮助你。

相关问题