我真的是一個PHP和MySQL的新手。所以爲了學習,我正在做一個小項目。 該項目的目標是這樣的。我有一個數據庫與id,名稱,公共名稱屬性。現在我必須獲取所有公開名稱的值,並在每個複選框中顯示它們。現在,當有人選擇任何複選框,並單擊保存按鈕,然後該值應該來在列表format.For我有命名爲ps_attribute_group預定義數據庫容器,數據庫中有這樣php從數據庫中刪除值並使其他值不變
CREATE TABLE IF NOT EXISTS `ia_attribute_group` (
`id_attribute_group` int(10) unsigned NOT NULL,
`name` varchar(128) NOT NULL,
`public_name` varchar(64) NOT NULL,
PRIMARY KEY (`ia_attribute_group`,`id_lang`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `ia_attribute_group` (`id_attribute_group`, `name`, `public_name`) VALUES
(1, 'Disk space', 'Disk space'),
(2, 'Color', 'Color'),
(3, 'ICU', 'Processor'),
(4, 'color', 'color');
現在我的工作價值從複選框的列表中獲取數據庫中的所有名稱,並在列表下方顯示我的保存按鈕。所以,當我將選擇任何複選框並單擊保存,那麼這將在另一個名爲數據庫ia_attribute_names
所以對我做了一個數據庫ia_attribute_names這樣
CREATE TABLE IF NOT EXISTS `ia_attribute_names` (
`attribute_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`attribute_name` text NOT NULL,
PRIMARY KEY (`attribute_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
保存所以從開始我有我的數據庫連接
$host = 'localhost';
$username = 'root';
$password = 'root';
$dbname = 'database_name';
$con=mysqli_connect($host,$username,$password,$dbname);
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
當我需要我的表格所有的複選框內從數據庫ia_attribute_group的PUBLIC_NAME。我已經制作了這個代碼。
$query = mysqli_query($con,"SELECT DISTINCT `public_name` FROM `ia_attribute_group`") or die (mysql_error());?>
<form id="formID" method="post" action="" enctype="multipart/form-data">
<?php
while ($results = mysqli_fetch_assoc($query)){
foreach($results as $result) {
echo '<input type="checkbox" name="attribute[]" value="'.$result.'"/>';
echo $result.'<br />';
}
}
?>
<input type="submit" name="save" id="save" value="save"/>
</form>
這是一個獲取所有公共名稱並將它們轉換爲複選框。現在在窗體中可以看到提交按鈕。所以當有人在選擇複選框後點擊它時,它會將值保存到數據庫ia_attribute_names中。
if(isset($_POST['save'])) {
$insert_query = "INSERT INTO `ia_attribute_names`(`attribute_id`, `attribute_name`) VALUES ('', '".$attribute_values."')";
$insert = mysqli_query($con, $insert_query) or die(mysqli_error());
if($insert) {
echo 'success';
}
else {
echo 'error';
}
}
現在來自數據庫ia_attribute_names我將獲取數據,像他們都在列表中。所以爲了我有我這樣的代碼
<div id="container">
<?php
$attribute_name = @$_POST['attribute'];
$attribute_values= @implode(',', $_POST['attribute']);
$sql_query = "SELECT `attribute_name` FROM `ia_attribute_names` ORDER BY `attribute_id` DESC LIMIT 1 ";
$attributes_name = mysqli_query($con,$sql_query);
$list_names = mysqli_fetch_array($attributes_name);
//echo $list_names['attribute_name'];
$resultArr = explode(",",$list_names['attribute_name']);
print_r($resultArr);
echo '<ul>';
foreach($resultArr as $atributeValue){
$listId = str_replace(' ','',$atributeValue);
?>
<li class="<?php echo $listId; ?>"><?php echo $atributeValue; ?> <a href="" onClick="deleteAttribute(); return false;">Delete</a> </li>
<?php }
?>
</ul>
</div>
現在到這一點,我已經完成了所有的獲取和數據。但我很糊塗與刪除功能。正如你可以看到裏面的列表中我有一個標籤。所以當有人點擊刪除時,選擇的列表應該從列表中刪除,也可以從數據庫中刪除。假設我有3個列表磁盤空間,顏色和處理器。如果有人點擊顏色,則顏色將從前端和後端刪除。其餘兩個應該保持不變。那麼有人可以告訴我該怎麼做?任何幫助都將非常可觀。謝謝。 代碼中可能存在一些錯誤,因爲我現在正在學習。所以如果你糾正錯誤,我會很開心。
更新 您可以看到我將值存儲爲文本格式。那麼如何從數據庫文本中刪除所選文本並保持其他文本不變?
備註 公共名稱值不應該是數字常量。這裏我只用了3個(磁盤空間,顏色,處理器)。它可能有所不同。
你能否僅在必要的部分分解你的問題?只描述你的問題。你試圖刪除什麼? – createproblem