[英]Storing id into database table throw there name
我正在為數據輸入的小型項目。 讓我們假設一個名為material
字段的表
id , name , visible , position
和其他名為received_material
字段的表
id , material_id , quantity , supplier
和一種用於接收材料的簡單html表單,在此處進行結構化
<form method="post" action="<?php echo SERVER['PHP_SELF'] ?>">
<label for="date">date</label>
<input type="text" name="date" />
<label for="name">Material Name</label>
<input type="text" id="name" name="name" />
<label for="quantity">Weight</label>
<input type="text" name="quantity" />
<label for="supplier">Supplier</label>
<input type="text" name="supplier" />
<input type="submil" value="submit"/>
</form>
<script>
$('#name').autocomplete({source : 'supplier_chk.php'});
</script>
provider_check.php腳本在這里...
<?php include 'includes/session.php'; ?>
<?php include 'includes/functions.php'; ?>
<?php if(!logged_in()) {
redirect_to('login.php');
}
?>
<?php if ( logged_in_role('administrator') || logged_in_role('store') ) { ?>
<?php echo msg(); ?>
<?php
$search = escape_string($_GET['term']);
$sql = "SELECT id, supplier_name FROM `supplier`
WHERE `supplier_name` LIKE '%$search%'";
$result = mysqli_query($connection,$sql);
confirm_query($sql);
$json = [];
while ( $row = mysqli_fetch_assoc($result) )
{
$json[] = $row['supplier_name'];
}
echo json_encode($json);
}
?>
我正在使用“名稱自動完成”的JQuery UI。 獲取材料名稱時拋出ajax方法。 它會輕松自動完成材料名稱,但我必須存儲材料ID而不是材料名稱..請幫助如何使用jquery / javascript或php執行此操作。
在名稱輸入給id以獲取元素之前添加隱藏字段。
這里的HTML示例
<form method="post" action="<?php echo SERVER['PHP_SELF'] ?>">
<label for="date">date</label>
<input type="text" name="date" />
<label for="name">Material Name</label>
<input type="hidden" id="id" name="id" />
<input type="text" id="name" name="name" />
<label for="quantity">Weight</label>
<input type="text" name="quantity" />
<label for="supplier">Supplier</label>
<input type="text" name="supplier" />
<input type="submil" value="submit"/>
</form>
<script>
$('#name').autocomplete({
minLength: 0,
source : 'material_chk.php',
focus: function( event, ui ) {
$( "#name" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( "#name" ).val( ui.item.label );
$( "#id" ).val( ui.item.id );
return false;
}
});
</script>
在material_chk.php中
<?php
$search = escape_string($_GET['term']);
$size = isset($_GET['size'])? escape_string($_GET['size']): null;
$sql = "SELECT * FROM `materials`
WHERE `name` LIKE '%$search%'";
$result = mysqli_query($connection,$sql);
confirm_query($sql);
$json = [];
while ( $row = mysqli_fetch_assoc($result) )
{
$json[] = array("id"=>$row['id']),"label"=>$row['item_name']);
}
echo json_encode($json);
}
我注意到您在問什么,但我確實有個建議。 這是一個一般性提示,不僅限於供應商,我將以它們為例。
我會使用更好的解決方案:一個包含所有供應商名稱的下拉列表。 每個清單項目的值是供應商ID。 因此,您直接提交供應商ID。
<select id="suppliers" name="supplierSelector">
<option value="1">Philips</option>
<option value="2">Sony</option>
<option value="3">Samsung</option>
<option value="4">Akai</option>
</select>
您還可以在下拉列表下方放置搜索文本輸入。 在該搜索框中鍵入的任何內容都會限制下拉列表。 這可以用Javascript完成。
但基本上,我的解決方案是讓用戶使用其名稱選擇正確的供應商ID。 在PHP中將是:
$sql = 'SELECT id, supplier_name FROM supplier';
$result = mysqli_query($connection,$sql);
echo '<select id="suppliers" name="supplierSelector">'.PHP_EOL;
while ($supplier = mysqli_fetch_assoc($result))
{
extract($supplier);
echo '<option value="'.$id.'">'.$supplier_name.'</option>'.PHP_EOL;
}
echo '</select>'.PHP_EOL;
這種方法的另一個優點是,沒有有效的供應商就無法提交表單。 通常,您應該嘗試將輸入限制為您所允許的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.