2015-02-06 92 views
1

在三個月內完成任務,認爲我今天開始學習並嘗試使用PHP,所以請原諒我,如果我馬虎。將用戶輸入插入數組然後插入sqlite數據庫

我想創建一個簡單的表單,接受用戶輸入並將其發送到sqlite數據庫。

我有一個版本,創建並連接好,並插入數據與我的數組中的預定義數據。我想刪除這些數據,並在名爲'名字','姓氏'和'年齡'的html中有三個輸入字段,它們被輸入到我的數組中,名字爲$data,然後發送到我的sqlite數據庫。接下來,我計劃添加我的輸入字段,但我正在努力瞭解它們將如何工作以及數據如何在陣列中適當地進行格式化。對此方法的一些建議將不勝感激(忽略我的第二個foreach循環,我只想在屏幕上查看我的數據)。

這是到目前爲止我的代碼:

<!DOCTYPE html> 
<html> 
<head> 
<title>Data Input</title> 
<link href="css/style.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 

<?php 
try { 
    $dbh = new PDO('sqlite:mydb.sqlite3'); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $dbh->exec("CREATE TABLE IF NOT EXISTS test (
      firstName VARCHAR(30), 
      lastName VARCHAR(30), 
      age INTEGER)" 
      ); 

    $data = array(
      array('firstName' => 'Billy', 
        'lastName' => 'Bob', 
        'age' => '18'), 
      array('firstName' => 'Bill', 
        'lastName' => 'Bob', 
        'age' => '32') 
      ); 

    $insert = "INSERT INTO test (firstName, lastName, age) 
      VALUES (:firstName, :lastName, :age)"; 
    $stmt = $dbh->prepare($insert); 

    $stmt->bindParam('firstName', $firstName); 
    $stmt->bindParam('lastName', $lastName); 
    $stmt->bindParam('age', $age); 

foreach ($data as $m) { 
    $firstName = $m['firstName']; 
    $lastName = $m['lastName']; 
    $age = $m['age']; 

    $stmt->execute(); 


} 
    $result = $dbh->query('SELECT * FROM test'); 
    foreach ($result as $row) { 
     echo "First Name: " . $row['firstName'] . " "; 
     echo "Last Name: " . $row['lastName'] . " "; 
     echo "Age: " . $row['age'] . "<br>" . " "; 
} 

    $dbh = null; 

} 
    catch(PDOException $e) { 
     // Print PDOException message 
     echo $e->getMessage(); 
}   
?> 

</body> 
</html> 
+0

你問的是如何在着陸頁上訪問PHP表單結果嗎? – Cragmonkey 2015-02-06 01:32:24

+0

我在問如何從HTML輸入字段收集用戶輸入,當提交時發送到$ data數組,然後提交給我的sqlite數據庫。對不起,如果我含糊不清,很難解釋我想要做什麼。更具體地說,會像「array('firstName'=> $ firstName,」work?但是那麼如何在用戶輸入提交後將字段保存在該變量中 – Dianabolz 2015-02-06 01:37:34

+0

如果你想要一個更簡單的調試方法遊覽輸出比每次寫回路和回聲,嘗試PHP的dBug(http://dbug.ospinto.com/)。它可以節省很多頭髮拉...尤其是對於更復雜的數組/對象 – Cragmonkey 2015-02-06 01:55:32

回答

0

要生成一個相同的格式爲您的$數據字段創建成果(你也可以產生這種使用PHP或動態使用jQuery)的一種形式:

<?php 
if($_SERVER['REQUEST_METHOD'] !== 'POST'){ 
?> 
    <form method="post"> 
     <input type="text" name="firstName[0]"/> 
     <input type="text" name="lastName[0]"/> 
     <input type="number" name="age[0]" min="1" max="99"/> 

     <input type="text" name="firstName[1]"/> 
     <input type="text" name="lastName[1]"/> 
     <input type="number" name="age[1]" min="1" max="99"/> 

     <input type="text" name="firstName[2]"/> 
     <input type="text" name="lastName[2]"/> 
     <input type="number" name="age[2]" min="1" max="99"/> 

     <input type="submit"> 
    </form> 
<?php 
}else{ 

    unset($_POST['submit']); 
    $data=$_POST; 

    // ... now do your database insert here. 
} 
+0

非常感謝,工作很好,很抱歉,因爲模糊不清,猜測你需要$ data = $ _ POST;對嗎? – Dianabolz 2015-02-06 01:46:38

+0

啊,是的,很好的電話。 – Cragmonkey 2015-02-06 01:48:44