Я довольно новичок в мире программирования. Я пытаюсь создать базу данных активных студентов, которая была добавлена с формой. Сейчас я пытаюсь добавить возможность архивировать ребенка, как только он перестанет быть активным. Я пробовал много разных методов, но я не знаю, как действовать.
Я добавил кнопку рядом с каждым дочерним элементом, и идея заключается в том, что если я нажму на кнопку, этот дочерний элемент затем будет удален изосновной список и добавляется в «архивированный» список, но вызывая запрос в Python для обновления активного поля с 1 (активное) до 0 (неактивное). Я попытался получить идентификатор строки конкретного ребенка с помощью jQuery, а затем сделал обновление. Одна идея, которую я прочитал, заключалась в том, чтобы поместить таблицу в другую форму и затем вызвать функцию через POST.
Я предполагаю, что единственный способ - это сделать это с уникальным идентификатором студента, но заставить этот идентификатор работать в функции сложно.
<h1>CHILD LIST</h1>
<div class="row">
<div class="col-lg-12">
<section class="panel">
<a href="/add_new_child"><button id="newChild" style="width:auto;" class="nav-item openbtn">Add a Child</button></a>
<form action="/archive" method="post">
<table class="table" id="myTable2">
<colgroup>
<col style="width:50px">
<col style="width:150px">
<col style="width:150px">
<col style="width:150px">
<col style="width:150px">
<col style="width:150px">
</colgroup>
<tbody>
<tr>
<th onclick="sortTable(0)" scope="col"><i class="fas fa-snowman"></i> ID <i class="fas fa-sort"></th>
<th onclick="sortTable(1)" scope="col"><i class="fas fa-snowman"></i> NAME <i class="fas fa-sort tooFar"></i></th>
<th onclick="sortTable(2)" scope="col"><i class="fas fa-snowman"></i> SURNAME <i class="fas fa-sort tooFar"></th>
<th onclick="sortTable(3)" scope="col"><i class="fas fa-snowman"></i> PARENT <i class="fas fa-sort tooFar"></th>
<th onclick="sortTable(4)" scope="col"><i class="fas fa-snowman"></i> SCHOOL <i class="fas fa-sort tooFar"></th>
<th scope="col"><i class="icon_pin_alt"></i><i class="fas fa-snowman"></i> ACTION</th>
</tr>
{% for row in childData %}
<tr>
<td>{{ row.id }}</td>
<td class="pdata">{{ row.childName }}</td>
<td class="pdata">{{ row.childSurname }}</td>
<td class="pdata">{{ row.parentName }}</td>
<td class="pdata">{{ row.schoolName }}</td>
<td>
<div class="btn-group">
<a class="btn btn-danger" name="inactive" href="#" ng-click="archiveChild({{ row.id }})" disabled><i class="fas fa-times-circle"></i></a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
</section>
</div>
</div>
<script>
$('tr').click(function(){
$(this).siblings().removeClass('selected');
$(this).addClass('selected');
$('.btn-danger').removeAttr('disabled');
});
function archiveChild(child)
{
alert(child);
$('.btn-danger').click(function(){
// python function call
$.post("/child/10")
.done(function (reply)
{
$('tr.selected').remove();
$('.btn-danger').attr('disabled','disabled');
})
.fail(function() {
alert( "error" );
});
});
}
</script>
@app.route("/" , methods=["GET", "POST"])
@login_required
def index():
"""Show Child data"""
if request.method == "POST":
db.execute("UPDATE childData SET active = 0 WHERE childData.id=:rowid",
rowid=request.form['rowid'])
# Select the necessary data to view from Child Data, Parent data and school data
childData = db.execute("SELECT DISTINCT childData.id, childData.childName, childData.childSurname, childData.fees, parentData.parentName, schoolData.schoolName, schoolData.contactName FROM childData, parentData, schoolData WHERE childData.parentID = parentData.parentID AND childData.schoolID = schoolData.schoolID AND childData.userID=:userID AND parentData.userID=:userID AND schoolData.userID=:userID AND childData.active = 1",
userID=session["user_id"])
return render_template("index.html", childData=childData)
@app.route("/child/<id>" , methods=["POST"])
@login_required
def archive_child(id):
"""archive Child data"""
db.execute("UPDATE childData SET active = 0 WHERE childData.id = :childId",
childId=id)
return '1'
Все учащиеся с активным 1 находятся в одном списке, а 0 - в другом. Затем кнопка должна изменить активное значение любого ученика, которого я выберу, с 0 на 1 или с 1 на 0.