У меня есть 2 таблицы, users
а также short_style
,
Поля таблицы users
:
id int primary not null auto increment
username
password
firstname
lastname
данные, вставленные пользователями в таблицу users
:
users
id username password firstname lastname
1 jsmith md5hash john smith
2 jbrown md5hash jane brown
данные, вставленные пользователями в таблицу short_style
:
short_style
id style_name style_cost style_time number_of_styles
1 bald 10 30 1
2 wash 5 15 2
1 shave 12 30 3
2 line 8 15 4
1 wash Free 15 6
2 color 20 30 7
Я могу предложить пользователям добавить новый стиль, этот код работает отлично.
Я могу попросить пользователей обновить свои данные, этот код работает отлично.
Я застрял в удалении пользовательских данных, так как понятия не имею, как нацелить number_of_styles
данные, так как это единственные уникальные данные.
Из того, что я узнал (за это короткое время) DELETE
взять только 2 параметра, имя таблицы и строку таблицы (я предполагаю).
Как я могу сделать эту работу?
Извините за длинный HTML, я до сих пор не понял, как показать HTML в комментариях. Что я имею:
<?php
if (isset($_POST['delete_servicename'])&&
isset($_POST['update_category'])) {
$delete_servicename = $_POST['delete_servicename'];
$category = $_POST['update_category'];
$atta = '_name';
$delete = "$category$atta";
$query = "SELECT $delete FROM $category WHERE `id`='".$_SESSION['user_id']."'";
$query_run = mysql_query($query);
if(mysql_num_rows($query_run)==1) {
$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."'";
}
}
?>
<form action="services_update.php" method="POST">
<div class="a_u_d_sort">
<ul>
<li class="a_u_d_sort_left">
<p>Category:</p>
</li>
<li class="a_u_d_sort_right">
<select name="update_category">
<option value="">select</option>
<option value="short_style">Short Style</option>
<option value="medium_style">Medium Style</option>
<option value="long_style">Long Style</option>
<option value="other_services">Other Service</option>
</select>
</li>
</ul>
</div>
<div class="a_u_d_sort">
<ul>
<li class="a_u_d_sort_left">
<p>Service Name:</p>
</li>
<li class="a_u_d_sort_right">
<input type="text" name="delete_servicename"></input>
</li>
</ul>
</div>
<button class="add" type="submit">Delete</button>
</form>
Вы должны ВСЕГДА использовать поле автоинкремента для каждой создаваемой таблицы, чтобы у вас всегда был уникальный идентификатор, используемый при удалении строк.
Если это не вариант, вам нужно изменить запрос на удаление, чтобы убедиться, что вы удаляете правильную строку:
$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."' AND `style_name` = $stylename AND style_cost = $stylecost AND style_time = $styletime AND number_of_styles = $numberofstyles LIMIT 1";
редактировать
Я не поняла твои number_of_styles
был автоматический прирост. В этом случае вы можете просто:
$dquery = "DELETE FROM $category WHERE number_of_styles = $numberofstyles LIMIT 1";
Поскольку он уникален, нет необходимости упоминать все остальные поля.
Других решений пока нет …