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 양식이있는 경우
db에 연결 하시겠습니까? DSN이 잘못되었습니다. 데이터베이스 이름을 설정하지 않고 charset = utf8을 두 번 설정합니다. –