2017-12-12 9 views
0

데이터베이스의 동적 양식에서 데이터를 저장하려고합니다. 나는이 데이터를 올바르게 저장하는 방법을 알지 못한다. 다음 파일이 있습니다.PDO를 사용하여 동적 양식의 데이터 저장

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; 
    } 
} 

savedata.php

<?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> 

내가 새로운 사용자를 등록하고 제대로 로그인 할 수 있습니다. 동적 양식에서 데이터를 저장하는 데 foreach가 필요하다는 것을 알고 있습니다. 문제를 올바르게 작성하는 방법과 배치 할 위치를 모르는 것입니다. 다음과 같이 배열하지 않고 HTML 양식이있는 경우

+0

db에 연결 하시겠습니까? DSN이 잘못되었습니다. 데이터베이스 이름을 설정하지 않고 charset = utf8을 두 번 설정합니다. –

답변

0

당신은 기본적으로이 매뉴얼 "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) { ... }