multiple - php checkbox checked or not
Eliminar múltiples filas seleccionando casillas de verificación usando PHP (8)
Quiero eliminar varias filas de la base de datos MYSQL. He creado este archivo delete.php para seleccionar varios enlaces y eliminarlos mediante casillas de verificación.
<html>
<head>
<title>Links Page</title>
</head>
<body>
<h2>Choose and delete selected links.</h2>
<?php
$dbc = mysqli_connect(''localhost'',''root'',''admin'',''sample'')
or die(''Error connecting to MySQL server'');
$query = "select * from links ORDER BY link_id";
$result = mysqli_query($dbc,$query)
or die(''Error querying database'');
$count=mysqli_num_rows($result);
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>
</tr>
<?php
while ($row=mysqli_fetch_array($result)) {
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row[''link_id'']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_id'']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_name'']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_url'']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>
</tr>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>
</tr>
<?php
while ($row=mysqli_fetch_array($result)) {
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row[''link_id'']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_id'']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_name'']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row[''link_url'']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if(isset($_POST[''delete'']))
{
$checkbox = $_POST[''checkbox''];
for($i=0;$i<count($checkbox);$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM links WHERE link_id=''$del_id''";
$result = mysqli_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=/"refresh/" content=/"0;URL=view_links.php/">";
}
}
mysqli_close($dbc);
?>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Esto no parece eliminar ninguna fila. Mis datos están poblados en la tabla. Supongo que el problema es con el código PHP. Por favor, ayúdame aquí.
Algo que a veces surge, usted puede / no puede ser consciente de
No siempre será recogido por $ _POST [''eliminar''] cuando se usa IE. Sin embargo, Firefox y Chrome deberían funcionar bien. Yo uso un isntead separado que resuelve el problema para IE
En cuanto a no eliminar en el código anterior, parece que hace eco de dos conjuntos de casillas de verificación que extraen los mismos datos. ¿Es solo un error de copiar y pegar o es así como es realmente tu código?
Si es así como es su código, ese será el problema ya que el usuario podría estar marcando un elemento de matriz de casilla de verificación, pero el otro estará desmarcado para que el código de php para eliminar se confunda. ¿Cambia el nombre de la segunda casilla de verificación o elimina ese bloque de html, seguramente no necesita mostrar la misma lista dos veces?
<?php $sql = "SELECT * FROM guest_book";
$res = mysql_query($sql);
if (mysql_num_rows($res)) {
$query = mysql_query("SELECT * FROM guest_book ORDER BY id");
$i=1;
while($row = mysql_fetch_assoc($query)){
?>
<input type="checkbox" name="checkboxstatus[<?php echo $i; ?>]" value="<?php echo $row[''id'']; ?>" />
<?php $i++; }} ?>
<input type="submit" value="Delete" name="Delete" />
if($_REQUEST[''Delete''] != '''')
{
if(!empty($_REQUEST[''checkboxstatus''])) {
$checked_values = $_REQUEST[''checkboxstatus''];
foreach($checked_values as $val) {
$sqldel = "DELETE from guest_book WHERE id = ''$val''";
mysql_query($sqldel);
}
}
}
Eliminar casilla de verificación múltiple usando código PHP
<input type="checkbox" name="chkbox[] value=".$row[0]."/>
<input type="submit" name="delete" value="delete"/>
<?php
if(isset($_POST[''delete'']))
{
$cnt=array();
$cnt=count($_POST[''chkbox'']);
for($i=0;$i<$cnt;$i++)
{
$del_id=$_POST[''chkbox''][$i];
$query="delete from $tablename where Id=".$del_id;
mysql_query($query);
}
}
Use notación de matriz como name="checkbox[]"
en su elemento de input
. Esto le dará $_POST[''checkbox'']
como matriz. En la consulta puede utilizarlo como
$sql = "DELETE FROM links WHERE link_id in ";
$sql.= "(''".implode("'',''",array_values($_POST[''checkbox'']))."'')";
Esa es una sola consulta para eliminarlos todos.
Nota : debe evitar los valores pasados en $_POST[''checkbox'']
con mysql_real_escape_string
o similar para evitar la inyección de SQL .
Deberías tratarlo como una matriz como esta,
<input name="checkbox[]" type="checkbox" value="<?php echo $row[''link_id'']; ?>">
Entonces solo, puede tomar su cuenta y recorrerlo para borrarlo.
También debe pasar la conexión de la base de datos a la consulta.
$result = mysqli_query($dbc, $sql);
El tuyo no lo incluyó
$result = mysqli_query($sql);
$deleted = $_POST[''checkbox''];
$sql = "DELETE FROM $tbl_name WHERE id IN (".implode(",", $deleted ) . ")";
Recientemente di respuesta sobre el paso del valor de la casilla de verificación a través de js a php.
Ahora, como a partir del enlace de respuesta anterior puede consultar para eliminar para iDs que obtendrá en el código backend php.
Es muy fácil eliminar múltiples filas usando PHP.
Paso 1: Mientras visualiza crear una matriz usando la casilla de verificación (asegúrese de agregar un valor único)
Paso 2: botón Agregar enviar
Paso 3: Recibir matriz de la página anterior (casilla de verificación seleccionada)
Paso 4: procesa cada fila paso a paso
Enlace de referencia Haga clic aquí