2014-01-08 121 views
0

這可能是一個非常簡單的解決方案,但我真的無法弄清楚。如果我插入到我的數據庫中,我必須按插入按鈕兩次才能正常工作。我的猜測是它與我在一個文件中使用2個窗體有關,或者只是因爲我在一個文件中完成了所有操作。請幫幫我。雙擊插入數據庫

感謝

代碼:

<?php 
/*require "link.php";*/ 
?> 
<html> 
    <head> 
     <!--<link rel="stylesheet" type="text/css" href="css.css">--> <!-- verwijzing naar je css --> 
     <!--<script type="text/javascript" src="js.js"></script>--> 
    </head> 
    <header> 
    </header> 
    <article> 
     <div id="cards"> 
      <?php 
      $host = "localhost"; 
      $user = "root"; 
      $pwd = ""; 
      $db_name = "flashcards"; 
      $link = mysqli_connect($host, $user, $pwd, $db_name)or die("cannot connect"); 
      $array = array(); 
      $IDarray = array(); 

      ini_set('display_errors', 1); 
      error_reporting(E_ALL); 

      $sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or die(mysqli_error($link)); 
      echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>"; 
      while ($rows = mysqli_fetch_assoc($sql)) 
      { 
       echo "<tr id='".$rows['ID']."'><td>".$rows['Question']."</td><td><input type='text' name='Answer[]' id='V".$rows['ID']."'></input></td></tr>"; 
       $array[] = $rows["Answer"]; 
       $IDarray[] = $rows["ID"]; 
      } 
      echo "</table><input type='submit' name='submit'></input></form>"; 

      $i = 0; 
      $count = sizeof($IDarray); 
      if(!empty($_POST['Answer'])) 
      { 
       foreach($_POST['Answer'] as $answer) 
       { 
        if (isset($_POST['Answer'])) { 
         if ($answer == $array[$i]) 
         { 
          echo "<script>document.getElementById('".$IDarray[$i]."').style.background='green'; document.getElementById('V".$IDarray[$i]."').value='".$array[$i]."'</script>"; 
         } 
         elseif ($answer !== $array[$i]) 
         { 
          echo "<script>document.getElementById('".$IDarray[$i]."').style.background='red'; document.getElementById('V".$IDarray[$i]."').value='".$answer."'</script>"; 
          $count = $count-1; 
         } 
         $i ++; 
        } 
       }echo $count." van de ".sizeof($IDarray)." goed"; 
       if ($count == sizeof($IDarray)) 
       { 
        header('Location: http://localhost:1336/php3/'); 
       } 
      } 

      echo "</br></br>insert"; 
      echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>"; 
      echo "<tr><td>vraag</td><td><input type='text' name='vraag'></input></td><td>antwoord</td><td><input type='text' name='antwoord'></input></td></tr>"; 
      echo "</table><input type='submit' name='submitinsert' value='insert'></input></form>"; 

      if ($_POST['vraag'] != "") { 
       $vraag = $_POST['vraag']; 
       $antwoord = $_POST['antwoord']; 
       mysqli_query($link, "INSERT INTO questions (Question, Answer) VALUES (".$vraag.",".$antwoord.");") or die(mysqli_error($link)); 
      } 
      ?> 
     </div> 
    </article> 
    <footer> 
    </footer> 
</html> 
+0

哦,並回應「你確定嗎?」真的不代表什麼。當我試圖解決這個問題時,我就把它放在那裏。 – Moopsish

+1

你可以編輯自己的問題,你知道......我已經爲你刪除了'echo',雖然 –

回答

3

問題是你正在處理在同一個腳本爲產生形式一個表單提交。加上事實上,你首先查詢數據庫,生成一個你已經存儲的表格,然後然後添加用戶可能發佈的任何數據,你永遠不會看到你添加的數據顯示在你提交表單的第一次。
上移插入查詢到頂部(生成表格前),或單獨關注

讓我告訴你我是什麼意思:

//don't OR DIE 
$sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or die(mysqli_error($link)); 
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table border='1'>"; 
while ($rows = mysqli_fetch_assoc($sql)) 
{//build form here 
} 
/* 
CODE HERE 
*/ 
if ($_POST['vraag'] != "") { 
    //insert here, after form is generated 
} 

所以你查詢不能,但該數據,包含提交的表單數據。
代碼還有一些其他問題,但是,像or die:不這樣做。與您的編碼風格保持一致(同一個腳本中的allman括號+ K & R是凌亂的)。正確縮進代碼,這:

if ($_POST['vraag'] != "") { 
} 

應該是:

if (isset($_POST['vraag'])) { 
} 

你比較數組的一個關鍵是可能不存在爲空字符串,而你應該檢查如果該數組鍵存在。使用isset

我可以繼續一下,但現在我會放棄它。還有一件事:再次 - >孤立的擔憂!表示層(輸出:HTML等)不應該包含數據庫連接的東西。這應該在其他地方完成。
使用AJAX異步處理表單(因爲提交的內容已添加到已存在的表中),或者至少使用單獨的腳本。有1個腳本做所有的工作將很快離開你哭了的麪條代碼亂七八糟

+0

感謝您的評論,但我通常不會將數據庫的東西放在這個地方,但這次我只是亂搞,並不想創建多個文件。 – Moopsish

2

它不提交兩次,其實它不是插入之後的數據加載,

嘗試之前添加

 if ($_POST['vraag'] != "") { 
      $vraag = $_POST['vraag']; 
      $antwoord = $_POST['antwoord']; 
      echo "are you sure?"; 
      mysqli_query($link, "INSERT INTO questions (Question, Answer) VALUES (".$vraag.",".$antwoord.");") or die(mysqli_error($link)); 
     } 

$sql = mysqli_query($link, "SELECT * FROM Questions ORDER BY ID ASC ") or 
    die(mysqli_error($link)); 

這將在當前記錄保存後選擇您的記錄。