2013-08-22 73 views
0

我在每一行都有一個文本框和一個下拉框。如何使用php for循環插入多個值到數據庫

現在我想在文本框中輸入一些日期,並在下拉列表中選擇一些值。

當我點擊它應該被保存到數據庫。

我該怎麼做?

這裏是我的代碼

PHP插入代碼: 當我點擊提交這個PHP代碼應該

<?php 
mysql_connect("localhost", "tiger", "tiger") or die(mysql_error()); 
mysql_select_db("theaterdb") or die(mysql_error()); 
$query = mysql_query("INSERT INTO movie (movie_name,language) VALUES('$_POST[Fname]','$_POST[language]') ") or die(mysql_error()); 
?> 

下拉是動態生成

代碼:

function create(param) { 
    'use strict'; 

    var i, target = document.getElementById('screens'); 
    target.innerHTML = ''; 

    for(i = 0; i < param; i += 1) { 
     target.innerHTML +='</br>'; 
     target.innerHTML +='New Movie '+i+' '; 
     target.innerHTML += '<input type="text" name="Fname">'; 
     target.innerHTML +=' '+'Language '+' '; 
     target.innerHTML += "<?php 
     try { 
      $dbh = new PDO('mysql:dbname=theaterdb;host=localhost','tiger','tiger'); 
     } catch (PDOException $e) { 
      echo 'Connection failed: ' . $e->getMessage(); 
     } 

     $sql = 'SELECT language FROM languages;'; 

     $sth = $dbh->prepare($sql); 
     $sth->execute(); 

     echo "<select name='language' id='course'>"; 
     echo "<option>----Select Language----</option>"; 
     while($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
      echo "<option value='" . $row['language'] ."'>" . $row['language']. "</option>"; 
     } 
     echo "</select>"; 
?>"; 
     target.innerHTML +='</br>'; 
     target.innerHTML +='</br>'; 
    } 
} 

ui看起來像這樣...

enter image description here

+4

你現在正在做的事情很容易受到SQL注入的影響! _Never_讓您直接在查詢中發佈值!使用mysql_real_escape_string將它們轉義或者使用PDO或mysqli開始! – Bono

+0

@Bono,最好不是'mysql_really_escape_me_please_perhaps_string',請參閱[此問題](http://stackoverflow.com/q/5741187/372643)。而不是[PDO或準備語句](http://stackoverflow.com/a/60496/372643)。 – Bruno

+0

@布魯諾不需要告訴我,我會在任何一天與PDO一起去,但他可能不會。所以他最不應該做的就是逃避。 – Bono

回答

0

文本框,然後選擇框添加名稱 這樣

名= 「text_box」 + i和NAME = 「select_box」 +我。 「我」

是從循環計數器的值,例如,如果你有100個新Moview你就會爲這樣的text_box1, text_box2. ..... text_box100.您應該提交remeber的「新電影」的數字每個文本框有名字,那就是「我」和PHP代碼只是爲每個元素循環並保存它們。在第一次迭代中,您將有$_POST[Fname1] and $_POST[language1]等。

0

以HTML形式:將文本框和下拉元素名稱設置爲相同的算法ElementName + RowNumber; RowCount的 嵌件:<input type="hidden" name="RowCount" value="3">

在PHP

:獲取值:

for($iRow=0;$iRow less $_POST['RowCount'];$iRow++) { 
    mysql_query("INSERT INTO movie (movie_name,language) VALUES('".$_POST['Fname'.$iRow]."','".$_POST['language'.$iRow]."'); 
} 
0

添加一行在你的js這使得輸入打印沿着target.innerHTML = '<input name="RowCount" value="' + param + '" hidden />'線的東西,然後在你的PHP應用:

for ($i=0; $i < $_POST["RowCount"]; $i++) { 
    $query = sprintf("INSERT INTO movie ('movie_name', 'language') VALUES ('%s', '%s')", 
     mysqli_real_escape_string($_POST["Fname"]), // Escaping values before inserting. 
     mysqli_real_escape_string($_POST["language"])); 
    mysqli_query($con, $query); 
} 
+0

您應該避免[mysqli_real_escape_string](http://stackoverflow.com/q/5741187/372643)。 – Bruno

+0

我看到有趣的閱讀,儘管假設testtestic8在數據庫中使用UTF-8作爲他的字符集(很可能),但它是完全安全的。否則,我們只需要在轉義值之前調用'mysqli_set_charset()'。 – Matt

相關問題