2017-12-12 4 views
0

データベースの動的フォームからデータを保存しようとしています。私は立ち往生していますが、私はこのデータを正しく保存する方法を理解できません。私は以下のファイルを持っています。PDOを使用して動的フォームからデータを保存

<?php 
session_start(); 
require_once "functions.php"; 
$db = new DatabaseConnection(); 
$user = new test($db->pdo); 

$uid = $_SESSION['uid']; 
$username = $_SESSION['uname']; 
$nombre = $_SESSION['name']; 

if(!$user->getSession()){ 
    header('Location: login.php'); 
    exit(); 
} 

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script> 

     $(document).ready(function(e){ 
      var html= '<p /><table><tr><td><input type="text" name="field1[]" id="field1child" placeholder="Year"></td><td><input type="text" name="field2[]" id="field2child" placeholder="Month"></td><td><input type="text" name="field3[]" id="field3child" placeholder="Name"></td> <td><input type="text" name="field4[]" id="field4child" placeholder="Surname"></td><td><input type="text" name="field5[]" id="field5child" placeholder="Nickname"></td></tr></table>'; 

       $("#add").click(function(e){ 
        $("#container").append(html); 
       }); 
     }); 

     </script> 
    </head> 
    <body> 
    <div> 

     <?php 
      if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
       $field1 = $_POST['field1']; 
       $field2 = $_POST['field2']; 
       $field3 = $_POST['field3']; 
       $field4 = $_POST['field4']; 
       $field5 = $_POST['field5']; 


       $save = $user->savedata($field1,$field2,$field3,$field4,$field5); 

         if($save){ 
          echo "Data saved succesfully"; 
         } 
        } 
?> 

<form action="" method="post" name="reg"> 
<div id="container"> 
       <table> 
        <tr><td><input type="text" name="field1[]" id="field1" placeholder="Year"></td> 
         <td> 

         <td><input type="text" name="field2[]" id="field2" placeholder="Month"></td> 
         <td><input type="text" name="field3[]" id="filed3" placeholder="Name"></td> 
         <td><input type="text" name="field4[]" id="field4"  placeholder="Surname"></td> 
         <td><input type="text" name="field5[]" id="field5" placeholder="Nickname"></td> 
         </tr> 

       </table> 
       </div> 
      <a href="#" id="add"> More inputs </a> 
      <input type="submit" name="submit" value="Send data"> 

    </form> 
    <a href="logout.php">Disconnect</a> 

</div> 
</body> 
</html> 

savedata.php

config.phpの

<?php 
class DatabaseConnection{ 
public $pdo; 
public function __construct(){ 
    $user = 'user'; 
    $pass = 'pass'; 
    $dsn = 'mysql:charset=utf8;database;host=localhost;charset=utf8'; 
    $opt = array(
     PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
    ); 
    $this->pdo = new PDO($dsn, 'editor17_admin', 'Eciim_DB_17', $opt); 
} 
} 

?> 

のfunctions.php

class test{ 
    function __construct($db){ 
     $this->db= $db; 
    } 

    public function savedata($field1,$field2,$field3$,field4,$field5){ 
     $query = $this->db->prepare("INSERT INTO tabletest(fone,ftwo,fthree,ffour,ffive) VALUES (?,?,?,?,?)"); 
    $query->execute(array($field1,$field2,$field3$,field4,$field5)); 
     return true; 
    } 

    public function register($ex1,$ex2,$ex3,$ex4){ 
    $query = $this->db->prepare("INSERT INTO userdata(name,password,age,email) VALUES (?,?,?,?)"); 
    $query->execute(array($ex1,$ex2,$ex3,$ex4)); 
    return true; 
    } 

    public function login($ex1,$ex2){ 
     $query = $this->db->prepare("SELECT id,name FROM userdata WHERE name=? AND pass=?"); 
    $query->execute(array($ex1,$ex2)); 
    $userdata = $query->fetch(); 

    $num=$query->rowCount(); 
    if($num==1){ 
     session_start(); 
     $_SESSION['login']=true; 
     $_SESSION['uid']=$data['id']; 
     $_SESSION['uname']=$data['name']; 
     $_SESSION['login_msg'] = "Welcome!"; 
     return true; 
    }else{ 
     return false; 
    } 
} 

私は新しいユーザーを登録し、正しくログインできます。 私は動的フォームからデータを保存するためにforeachが必要であることを知っていますが、問題を正しく書いたり、どこに書き込むかわからないという問題があります。

+0

dbに接続していますか?あなたのDSNは間違っているようです。データベース名を設定せず、charset = utf8を2回設定する –

答えて

0

あなたは配列せずにhtmlフォームを持っている場合は、次のように基本的に、あなたが直接データを読み取ることができ、このマニュアル"How do I create arrays in a HTML ?"

をお読みください:

<form method="POST"> 
    <input type="hidden" name="foo" value="bar" /> 
</form> 

// var_dump($_POST); 
// output: array(1) { ["foo"]=> string(3) "bar" } 

しかし、フォームはとして配列として送信された場合それでは、foreachを使ってデータを解析する必要があります:

<form method="POST"> 
    <input type="hidden" name="foo[]" value="bar" /> 
    <input type="hidden" name="foo[]" value="bar2" /> 
</form> 

// var_dump($_POST); 
// output: array(1) { ["foo"]=> array(2) { [0]=> string(3) "bar" [1]=> string(4) "bar2" } } 
// foreach ($_POST['foo'] as $value) { ... } 
関連する問題