Ich versuche, alle Checkbox-Werte zu bekommen und sie mit AJAX auf meine PHP-Funktion zu analysieren.PHP/AJAX Checkbox Werte
Ich benutze foreach, um zu versuchen und jede ID der Checked Checkbox zu bekommen.
Mein Problem ist, dass wenn ich versuche, die Datenbank zu aktualisieren, gibt es nicht "1" zurück, die ich bei Erfolg widerhallen.
Wenn ich meinen foreach-Code herausnehme, funktioniert es.
Meine Löschtaste ist:
<form class="form -dark" id="form-inline" method="POST">
<div class="btn-group">
<button type="button" onclick="deleteSelectedTokens()" class="btn -dark" style="margin-left: 5px;" title="Delete all selected tokens"><i class="fa fa-trash"> </i></a>
</div>
</form>
Meine Checkbox html/PHP-Code ist:
<table class="table -dark -striped">
<thead>
<tr>
<th style="text-align: center;"><input type="checkbox" id="selectall"/></th>
<th style="text-align: center;">Token</th>
<th style="text-align: center;">Date/Time Generated</th>
<th style="text-align: center;">Status</th>
<th style="text-align: center;">Durbaility</th>
</tr>
</thead>
<tbody>
<tr>
<?php
$username = $_SESSION['username'];
$token_result = mysqli_query($con, "SELECT id, token, used, time_generated, durability FROM tokens WHERE user_id = '$username' ORDER BY used");
if(mysqli_num_rows($token_result) > 0) {
while($token_row = mysqli_fetch_array($token_result)) {
$result = array($token_row['durability']); $sub_struct_month = ($result[0]/30) ; $sub_struct_month = floor($sub_struct_month); $sub_struct_days = ($result[0] % 30); $sub_struct = "<i>".$sub_struct_month."</i> month(s) <i>".$sub_struct_days."</i> day(s)";
echo '
<tr style="text-align: center;">
<td>
<center><input type="checkbox" id="checkedTokens" class="checkbox" value='.($token_row['id']).'></center>
</td>
<td>
'.$token_row['token'].'
</td>
<td>
'.($token_row['time_generated']).'
</td>
<td>
'.($token_row['used'] == "0" ? "<span class='label label-primary'><i class='fa fa-check'></i> Valid </span>" : "<span class='label label-primary'><i class='fa fa-fa fa-times'></i> Used </span>").'
</td>
<td>
'.$sub_struct.'
</td>
';
} }else{ ?>
<tr>
<td colspan="12" style="padding: 30px;">
<div class="alert -dark">
<div class="alert-icon _text-danger">
<i class="fa fa-exclamation-circle"></i>
</div>
No tokens in your account
</div>
</td>
</tr>
<?php } ?>
</tr>
</tbody>
Hinweis I foreach verwenden, müssen hole jeden check-checkbox-Wert, damit ich die ausgewählten entfernen kann, wenn ich die delete-Taste drücke.
Meine AJAX PHP-Funktion senden ist:
<script>
function deleteSelectedTokens() {
var selectedTokens = document.getElementById("checkedTokens").value;
$.ajax({
type: "POST",
url: "includes/form_submit.php",
data: {
deleteSelectedTkns: true,
checked_id: selectedTokens
},
success: function(msg){
if(msg == 1) {
update_myDays_success();
} else {
general_error_forms();
}
},
});
return false;
}
</script>
Ich denke, das Problem ist die Javascript ist ... wenn ich den Wert des Kontrollkästchen erhalten und nach ihnen, ich denke, es wird immer nur 1 Wert innerhalb der checkedTokens ID.
Mein php erhalten Code (das ist nicht das Problem):
$username = $_SESSION['username'];
$selectedTokens = mysqli_real_escape_string($con, $_POST['checked_id']);
foreach($selectedTokens as $id) {
$doUpdateDelete = 'DELETE FROM tokens WHERE id = "'.$id.'" AND user_id = "'.$username.'"';
$result = $con->query($doUpdateDelete) or die("Error");
if($result)
{
echo '1';
}
else
{
echo 'Failed';
}
}
Meine console.log hat Fehler nicht. Wie ich schon sagte, ich denke, es ist der JavaScript-Code, um den Wert meiner Checkbox nicht alle Werte zu erhalten.
Sie wiederholen die ID mehrere Kontrollkästchen, Dies ist nicht die Art, wie Sie alle Checkbox-Werte erhalten, seien Sie bitte spezifisch mit Ihren 'ids', dh sie sollten nicht für alle Elemente gleich sein. –
@FarrukhAyyaz Nein, ich verwende die IDs jeder Zeile in meiner Datenbank für den Wert jedes Textfelds. – Benza
In Ihrem Code sind die Checkbox-IDs, Ihre Zuweisung und Verwendung in Ihrem Javascript identisch mit jedem Kontrollkästchen. Es ist nicht Ihr Tisch-IDs. –