2015-02-06 124 views
0

在提交/刷新時,我的數組中添加了相同的預定義數據。我如何阻止它被多次添加。我想擺脫我的數組中的數據,如果可能的話,只是捕獲用戶輸入的形式,然後提交給陣列,但我不知道如何。另外我怎樣才能讓我的表單提交給我的SQLite數據庫,我想我需要在某處添加INSERT INTO語句。任何幫助將很好,因爲我很快就需要完成。 :(防止重複SQL條目並將數據插入PHP中的SQLite

這裏是我的代碼:

<!DOCTYPE html> 
<html> 
<head> 
<title>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 (
      name VARCHAR(30), 
      gender VARCHAR(30), 
      age INTEGER)" 
      ); 

    $data = array(//Want to remove this prewritten data and store user input instead. 
      array('name' => 'Daniel', 'gender' => 'Male', 'age' => '21') 
      ); 

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


foreach ($data as $m) { 
    $name = $m['name']; 
    $gender = $m['gender']; 
    $age = $m['age']; 
    $stmt->bindParam('name', $name); 
    $stmt->bindParam('gender', $gender); 
    $stmt->bindParam('age', $age); 

    $stmt->execute(); 

} 
    $result = $dbh->query('SELECT * FROM test'); 

    $dbh = null; 

} 
    catch(PDOException $e) { 

    echo $e->getMessage(); 
}  

?> 

<div id="wrapper"> 

    <div class="banner1"> 
     <h2>Input</h2> 
    </div> 

<form id="form" method="post"> 
    Name:<br> 
    <input type="text" name="name[0]"/> <br> 
    Gender:<br> 
    <input type="text" name="gender[0]"/> <br> 
    Age:<br> 
    <input type="number" name="age[0]" min="1" max="99"/> <br> 

    <input id="submit" type="submit" value="Input"> 
    </form> 

</div> 

<div id="results"> 

    <div class="banner2"> 
      <h2>Results</h2> 
    </div> 

    <div class="data"> 
     <?php 
      unset($_POST['submit']); 
      $data=$_POST; 

      foreach ($result as $row) { 
      echo $row['name'] . " "; 
      echo $row['gender'] . " " ; 
      echo $row['age'] . "<br>" . " "; 
      } 

     ?> 
    </div> 


</div> 

</body> 
</html> 

下面是截圖,這樣可以抓住形式的一個想法,我怎麼想它的工作只是從陣列產生的結果部分這樣我就可以看到正在輸入什麼,但我想輸入的形式將數據發送到連接到上面,我已創建的SQLite數據庫/謝謝。 Screenshot of Form:

+0

只需在插入前添加一個查詢...'SELECT * FROM test WHERE name =?'等等,如果查詢有結果,則跳過'insert'。 – neokio 2015-02-06 14:32:49

+0

*「在提交/刷新時,我的數組中添加了相同的預定義數據,我該如何阻止它被多次添加。」* - 添加一個頭部以重定向成功查詢,並設置UNIQUE約束。 – 2015-02-06 14:33:40

+0

*「另外我怎樣才能讓我的表單提交給我的SQLite數據庫,我想我需要在某處添加一個INSERT INTO語句。」 - 是不是你在這裏做什麼'$ insert =「INSERT INTO test (姓名,性別,年齡)'? – 2015-02-06 14:37:11

回答

0

首先你要測試是否存在後 第二,檢查用戶是否已經存在

if (isset($_POST)) { 
    // check for existing user 
    // Save 
}