2017-12-12 1 views
0

Ich versuche, Daten aus einem dynamischen Formular in einer Datenbank zu speichern. Ich stecke fest, ich kann nicht erkennen, wie man diese Daten richtig speichert. Ich habe folgende Dateien.Speichern von Daten aus dynamischem Formular mit 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> 

kann ich neue Benutzer registrieren und korrekt anmelden. Ich weiß, ich brauche eine Foreach, um Daten aus der dynamischen Form zu speichern, das Problem ist, ich weiß nicht, wie man es richtig schreibt und wo es zu setzen.

+0

Verbinden Sie mit db? Ihr DSN scheint falsch zu sein. Es setzt nicht den Datenbanknamen und setzt charset = utf8 zweimal –

Antwort

0

Sie sollten lesen Sie dieses Handbuch "How do I create arrays in a HTML ?"

Grundsätzlich, wenn Sie ein HTML-Formular ohne Array haben, können Sie die Daten direkt wie folgt lauten:

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

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

Wenn jedoch die Form als Array gesendet als folgt, sollten Sie foreach verwenden, um die Daten zu analysieren:

<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) { ... } 
Verwandte Themen