Php 使用Jquery删除多行
我正在尝试使用Php 使用Jquery删除多行,php,jquery,sql-server,Php,Jquery,Sql Server,我正在尝试使用复选框从sql数据库中删除行。只要只标记了一个复选框,就可以正常工作。但我也希望能够删除多行。我见过很多例子,但我不能使它起作用。希望这里的任何人都能帮助我 因此,首先是result.php文件(这里是创建的所有行/表): while($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u两者)){ 回声“; 回声“; 回显“$行[1]”; 回显“$行[2]”; 回声“; } 回声“; 这个文件包含在我的主html(main.html)文件中
复选框
从sql数据库中删除行。只要只标记了一个复选框
,就可以正常工作。但我也希望能够删除多行。我见过很多例子,但我不能使它起作用。希望这里的任何人都能帮助我
因此,首先是result.php文件(这里是创建的所有行/表):
while($row=sqlsrv\u fetch\u数组($stmt,sqlsrv\u fetch\u两者)){
回声“;
回声“;
回显“$行[1]”;
回显“$行[2]”;
回声“;
}
回声“;
这个文件包含在我的主html(main.html)文件中,下面是Jquery
Jquery将chechbox变量发送到delete.php文件:
<script type="text/javascript">
$(".deletelogg").on('click', function(){
$.ajax({
type: 'POST',
url: "php/delete.php",
data: {id:$('.toedit:checked:first').val()},
success: function(data) {
alert(data);
$("p").text(data);
}
});
});
</script>
include 'connect-database.php';
for ($i = 0; $i < count($_POST['id']); $i++) {
if ($_POST['id'][$i] != "") {
echo $_POST['id'] ;
$sql = "DELETE FROM Logg Where LoggID LIKE '".$_POST['id']."'";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt == false) {
die( print_r(sqlsrv_errors(), true) );
}
}
}
$(.deletelogg”)。在('click',function()上{
$.ajax({
键入:“POST”,
url:“php/delete.php”,
数据:{id:$('.toedit:checked:first').val()},
成功:功能(数据){
警报(数据);
$(“p”)。文本(数据);
}
});
});
我的delete.php文件中的最后一个:
<script type="text/javascript">
$(".deletelogg").on('click', function(){
$.ajax({
type: 'POST',
url: "php/delete.php",
data: {id:$('.toedit:checked:first').val()},
success: function(data) {
alert(data);
$("p").text(data);
}
});
});
</script>
include 'connect-database.php';
for ($i = 0; $i < count($_POST['id']); $i++) {
if ($_POST['id'][$i] != "") {
echo $_POST['id'] ;
$sql = "DELETE FROM Logg Where LoggID LIKE '".$_POST['id']."'";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt == false) {
die( print_r(sqlsrv_errors(), true) );
}
}
}
包括“connectdatabase.php”;
对于($i=0;$i
我试图从
复选框中创建一个包含所有id
的数组,但没有成功。。需要帮忙吗 我会这样做:首先做一个“全选”复选框,当选中时,选中所有复选框。然后在表单的末尾,点击“删除”按钮。按下此按钮时,所有复选框都将被删除。我认为这甚至适用于某些复选框(如果只选中其中一些复选框,而不是全部复选框)
我不知道这是否是最好的方式,但这是一个起点。另外,别忘了保护你的应用程序。一个有效的例子:
您应该遍历复选框并收集值。给定以下HTML:
<table>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="1" />
</td>
<td>One</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="2" />
</td>
<td>Two</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="3" />
</td>
<td>Red</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="4" />
</td>
<td>Blue</td>
<td>Fish</td>
</tr>
</table>
<button class="deletelogg">Delete</button>
<p></p>
这样,您也可以切换到foreach()
循环:
include 'connect-database.php';
foreach ($_POST['id'] as $id) {
echo $id;
$sql = "DELETE FROM Logg Where LoggID = $id";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt == false) {
die( print_r(sqlsrv_errors(), true) );
}
}
你不能那样做。如果要传递多个值,则需要解析查询中的值。此外,还需要参数化查询。这里有一个sql注入的教科书示例。
<table>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="1" />
</td>
<td>One</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="2" />
</td>
<td>Two</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="3" />
</td>
<td>Red</td>
<td>Fish</td>
</tr>
<tr>
<td>
<input type="checkbox" name="id[]" class="toedit" value="4" />
</td>
<td>Blue</td>
<td>Fish</td>
</tr>
</table>
<button class="deletelogg">Delete</button>
<p></p>
$(".deletelogg").on('click', function () {
var ids = [];
$(".toedit").each(function () {
if ($(this).is(":checked")) {
ids.push($(this).val());
}
});
if (ids.length) {
$.ajax({
type: 'POST',
url: "php/delete.php",
data: {
id: ids
},
success: function (data) {
alert(data);
$("p").text(data);
}
});
} else {
alert("Please select items.");
}
});
include 'connect-database.php';
foreach ($_POST['id'] as $id) {
echo $id;
$sql = "DELETE FROM Logg Where LoggID = $id";
$stmt = sqlsrv_query( $conn, $sql);
if ($stmt == false) {
die( print_r(sqlsrv_errors(), true) );
}
}