實際工作Ubuntu的(工作PHP語言), 我有轉換成文本的PDF文件,然後我的preg_match爲了提取我需要的數據。PHP:插入到數據庫與阿賈克斯
之後,我把我的數據線放在一個下拉列表。
問題:我想用Ajax(據我瞭解),到得到選中的選項並保存到我的數據庫。
我讀過許多話題關於這個問題,白白...
這裏有一塊我的代碼,它可能會更形而下!
我的PHP文件:
$file = fopen($fichier_txt, 'r+');
if ($file)
{
$lines = array();
$pattern_GC = '/N°.*\d{4}(\s?\s?[\w\s]*)(\d{5})\s?(\w+)\W+/isU';
$fichier_txt_content = file_get_contents($fichier_txt);
$regex_GC = preg_match_all($pattern_GC, $fichier_txt_content, $match_GC);
// Match regroupant nom/prenom + adresse
$match_un = explode(PHP_EOL, $match_GC[1][0]);
$match_nom_prenom = $match_un[2];
$match_adresse = $match_un[3];
// Match CP
$match_deux = $match_GC[2][0];
// Match ville
$match_trois = $match_GC[3][0];
$opt = array($match_nom_prenom, $match_adresse, $match_deux, $match_trois);
$i = 0;?>
<html>
<form>
<select name="selectBox" class="drop" id="Combobox1" onchange="saveToDatabase(this.value)">
<?php foreach($opt as $val) {?>
<option value="$opt[$i]"><?=$val?></option>
<?php } ?>
</select>
</form>
</html>
我formulaire_2_test.php文件:
<?php
// Database connection to save form lines (PDO)
try
{
$PDO = new PDO('mysql:host=localhost;dbname=autofill_data', 'root', 'password');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
// Get selected option and save into database
$selectedOpt = $_POST['selected'];
//exit($selectedOpt); --> I put this line in comments since I don't use it everytime.
$req = $PDO->prepare("INSERT INTO data_lines(idDistributeur, numLigne, libelle) VALUES(1, 2, :selectedOpt)");
$req->bindParam(':selectedOpt', $selectedOpt);
$req->execute($selectedOpt);
$data = $req->fetchAll();
}
?>
喏,這就是我的Ajax腳本(我在JS是新的,我知道有些enormeous錯誤可能會彈出在你面前,對此感到遺憾,關於我的法語命名......)
阿賈克斯:(位於我的PHP文件)
<style>
.ui-autocomplete
{
cursor:pointer;
height:120px;
overflow-y:scroll;
}
</style>
<script>
function saveToDatabase(selectedValue)
{
var select = selectedValue;
select = $(this).serialize();
$('#Combobox1').on("change", function()
{
// POST to php script
$.ajax
({
type: 'POST',
url: 'formulaire_2_test.php',
data:{selected:this.value}
}).then(function(data){alert(data)});
});
}
$(document).ready(function()
{
saveToDatabase();
});
</script>
我測試了粗略的數值我的PDO連接,它的工作,但我不知道我怎麼能忽略我的PHP變量到它(我不知道使用$ _POST來檢索這個數據,因爲我不刷新任何頁面...) 我也試過INSERT到表VALUES(:名稱,2,3),但它didn也不管用...... 我是否在鑽機中前進?方向? 你會如何考慮這樣做?
PS:我之後的下一步是從下面的下拉列表中刪除選定的選項(爲了在填寫訂閱表格時爲用戶節省一些寶貴的時間)。
EDIT年11月24:我需要我的「FAIS噸喜愛將」選項出現在我的下拉爲默認值,而不是在列表中選擇:
我的最後一個問題:我想刪除所選擇的選項的下拉列表中,因此它不會出現在其他下拉列表中。 這裏是我試過的代碼(不工作):
function removeSelected(value)
{
$('.drop').change('select', function()
{
// Definition des variables
var value = this.value;
var id = this.id;
// We del selects with a != id containing options with the same value of the selected one.
$("select:not(#" + id + ") option[value='" + value + "']").hide()
});
}
我也試圖與一個.remove()代替.hide()沒有成功!
由於提前,
問候,
斯泰利奧康託斯。
我想補充一點,我在Firefox Consol上測試了我的代碼,我可以看到我的XHR請求,因爲我選擇了一個選項,但它不保存到數據庫中...... –
您可以使用'''$ _POST '''。 Ajax只是一個由JavaScript執行的HTTP請求,而不是瀏覽器窗口。而不是'''data:'selected ='+ select''',只要做'''data:{selected:select}'''。然後你可以在'''$ _POST ['selected']''' –
處選擇你的選項。謝謝你,在我的這條路上! :) –