Borrar registros con checkbox

Quiero saber lo siguiente ¿cómo puedo borrar con checkbox?, acá tengo mi código fuente para mostrarte:
index.php
<html>
<head>
<title>Agenda de Contactos</title>
<link type="text/css" rel="stylesheet" href="styles/style_listados.css">
<script language="javascript" type="text/javascript" src="scripts/onalert_borrar.js"></script>
<script language="javascript" type="text/javascript" src="scripts/onkeypress.js"></script>
<script language="javascript" type="text/javascript" src="scripts/onayuda.js"></script>
</head>
<body onLoad="javascript:document.frmcontactos.txtcontacto.focus()">
<div class="divs">AGENDA DE CONTACTOS</div>
<br />
<?php
    $contactos=$_POST['txtcontacto'];
    $comienzo=$_GET["comienzo"];
    if($comienzo<0 || $comienzo=="")
    {
        $comienzo=0;
    }
    $link=mysql_connect("localhost","root","") or die(mysql_error($link));
    mysql_select_db("agenda",$link) or die(mysql_error($link));
    $result=mysql_query("select * from contactos",$link) or die(mysql_error($link));
    $nfilas=mysql_num_rows($result);
    $diferencia=$nfilas-7;
    if($comienzo>=$nfilas)
    {
        $comienzo-=7;
    }
    $result=mysql_query("select * from contactos where nombre_contacto like '%$contactos%' limit ".$comienzo.",7",$link);
    @$nfilas=mysql_num_rows($result);
?>
<table align="center" border="1">
<tr>
<td colspan="10" class="tituloscolumnas">Contactos</td>
</tr>
<tr>
<td colspan="10" class="tituloscolumnas"><a href="contactosav.php" class="vinculos">Agregar Contacto Nuevo</a></td>
</tr>
<tr>
<td colspan="10" class="tituloscolumnas">
    <form action="index.php" name="frmcontactos" method="post">
<table class="filassimples">
<tr class="tituloscolumnas">
<td>  Buscar Contacto  <input type="text" name="txtcontacto" value="<?php echo $contactos; ?>" onKeyPress="return Enter(this,event)" tabindex="1" class="cajasdetexto" /></td>
<td><input type="button" name="accion" value="Buscar" onClick="frmcontactos.submit();" class="botones" tabindex="2"/></td>
</tr>
</table>
</form>
    </td>
</tr>
<?php
    if($nfilas<=0)
    {
        echo "
<tr class='listavacia'>
<td colspan='8'>No se encontraron registros</td>
</tr>
";
    }
    else
    {
?>
<tr class="tituloslistado">
<td>    </td>
<td>    </td>
<td>  Contacto  </td>
<td>  Apellido  </td>
<td>  Nombre  </td>
<td>  Dirección  </td>
<td>  Telefono  </td>
<td colspan="2">  </td>
</tr>
<?php
        for($i=0; $i<$nfilas; $i++)
        {
            $row=mysql_fetch_array($result);
        ?>
<tr class="filasdedatos" onMouseOver="this.style.background='lightblue'" onMouseOut="this.style.background='white'">
<?php echo "
<td class='tituloslistado'>    </td>
";
            ?>
<td class='tituloslistado'>  <input type="checkbox" name="ckcagenda" value="<?php echo $row["codigo_contacto"]; ?>">  </td>
//acá los checkbox en la tabla
            <?php
                echo "
<td>  ".$row["codigo_contacto"]."  </td>
<td>  ".$row["apellido_contacto"]."  </td>
<td>  ".$row["nombre_contacto"]."  </td>
<td>  ".$row["direccion_contacto"]."  </td>
<td>  ".$row["telefono_contacto"]."  </td>
<td><a href='contactomod.php?contacto=".$row["codigo_contacto"]."' class='vinculos' onMouseOver='mostrarAyuda(\"Modifica el Contacto Seleccionado\",\"imagen\")' onMouseOut='borrarAyuda();'><img border='0' src='images/modificar.png' id='imagen'></a></td>
<td><a href='#'><img border='0' src='images/eliminar.png' onclick='avisar(".$row["codigo_contacto"].");' onMouseOver='mostrarAyuda(\"Elimina el Contacto Seleccionado\",\"imagen2\")' onMouseOut='borrarAyuda();' id='imagen2'></a></td>
</tr>
";
        }
    }
mysql_close($link) or die(mysql_error($link));
?>
<tr align="center" bgcolor="#FFFFFF">
<td colspan="10">  <a href="#"><img src="images/eliminar.png" border="0"></a>  Elimina los agendados seleccionados  </td>
</tr>
<tr>
<td align="center" colspan="10">
<table class="filassimples">
<tr>
<td align="left"><a href="index.php?comienzo=0" class="vinculos">  Primero</a></td>
<td align="left"><a href="index.php?comienzo=<?php echo $comienzo-7; ?>" class="vinculos">  Anterior</a></td>
<td align="right"><a href="index.php?comienzo=<?php if($nfilas<7){echo $comienzo;}else{echo $comienzo+7;} ?>" class="vinculos">Siguiente  </a></td>
<td align="right"><a href="index.php?comienzo=<?php...

1 Respuesta

Respuesta
1
Claro que puedes, tienes que montarte un bucle para ir recorriendo todos los checkbox marcados, de esta forma, cada vez que uno esté marcado, llama al a función para eliminar ese registro.
Hola, cuando me hablas de un bucle me hablas for sería así entonces:
for($i=0;$i<$diferencia;$i++)
{
       $_POST["ckcagenda"]="selected";
}
Sería más o menos así, por cierto $diferencia es la variable por ir a los últimos 7 registros, sí puedes responder este mje te lo agradezco.
Si, la idea es en ese bucle detectar si está checkeado, y en ese caso llamar a una función que realice el borrado
Hola jorvidu, verás hice unos leves cambios:
Al checkbox me quedo así:
<input name="campos[]" type="checkbox" value="<?php echo $row["codigo_contacto"]; ?>">
Eso es en index.php y puse una imagen por borrar los registros seleccionados con el checkbox:
<a href='#'><img border="0" src="images/eliminar.png" onClick="mensaje(<?php echo $row["codigo_contacto"]; ?>);" onMouseOver="mostrarAyuda('Elimina los Contacto Seleccionados','imagen2')" onMouseOut='borrarAyuda();' id="imagen2"></a>
un msgbox para preguntar sí quiero borrar los registros seleccionados con el checkbox:
onalert_borrarvarios.js
function mensaje(xContacto)
{
    var respuesta = confirm("Realmente desea eliminar los contacto seleccionados");
    if(respuesta)
    {
        window.location="contactoselect.php?campos=" + xContacto;
    }
    else
    {
        window.location="index.php";
    }
}
después de eso me lleva al archivo contactoselect.php
<?php
    if(!empty($_GET['campos']))
    {
          $lista=$_GET['campos'];
          $link=mysql_connect("localhost","root","") or die(mysql_error($link));
        mysql_select_db("agenda",$link) or die(mysql_error($link));
          $result=mysql_query("delete from contactos WHERE codigo_contacto in (".implode(',',$lista).")",$link) or die(mysql_error($link));
        mysql_close($link) or die("Error al cerrar la conexion");
    }
?>
<script language="JavaScript">window.location="index.php";</script>
la cuestión es que no me borra y me sale un error diciendo:
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\practica1\contactoselect.php on line 7
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1.
No sé porque ni sé cómo solucionarlo, sí puedes responder este mje te lo agradezco.
Revisa el resultado de la función implode, que es la que te está cascando y fastidiando el Query.
Hazlo más sencillo, mira como funciona implode:
http://php.net/manual/es/function.implode.php
Hola, verás miré como me dijiste a lo tengo igual que en la página te muestro:
<?php
    if(!empty($_GET['campos']))
    {
        $lista=implode(",", $_GET['campos']);
          $link=mysql_connect("localhost","root","") or die(mysql_error($link));
        mysql_select_db("agenda",$link) or die(mysql_error($link));
          $result=mysql_query("delete from contactos WHERE codigo_contacto in (".$lista."))",$link) or die(mysql_error($link));
        mysql_close($link) or die("Error al cerrar la conexion");
    }
?>
<script language="JavaScript">window.location="index.php";</script>
y me sale el mismo error:
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\practica1\contactoselect.php on line 4
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1
No sé cómo lo de las comillas del implode o cómo mejorar el código, ¿puedes ayudarme?, sí puedes responder este mje te lo agradezco.
Haz un echo de $_GET['campos'] para ver lo que le está llegando a esa función
Hola, hice lo que me dijiste y verás muestra el último id del contacto, crees que el problema sea con el checkbox para seleccionar varios contactos o el hipervínculo en imagen del index.php, o que es el msgbox del archivo onalert_borrarvarios.js o el implode porque otra cosa no se me ocurre para saber el problema, sí puedes responder este mje te lo agradezco.
Si te muestra solo el ultimo, obviamente no lo está haciendo bien.
La idea es que recorras todos los id de los campos checkbox para comprobar si están o no clickados. En caso de que si, debes de llamar a la función correspondiente.
A ver si aquí te puedes inspirar:
http://php.apsique.com/contenido/borrar_multiples_registros_con_checkbox
Hola, verás me di cuenta que con get siempre me iba a mandar un sólo id (el último) y intenté mandar los datos con post y no me borra nada una cosa más puse todo el código en el index.php acá te paso el código fuente para que le des una mirada:
<html>
<head>
<title>Agenda de Contactos</title>
<link type="text/css" rel="stylesheet" href="styles/style_listados.css">
<script language="javascript" type="text/javascript" src="scripts/onalert_borrar.js"></script>
<script language="javascript" type="text/javascript" src="scripts/onkeypress.js"></script>
<script language="javascript" type="text/javascript" src="scripts/onayuda.js"></script>
<?php
    if(!empty($_POST['campos']))
    {
        //$lista=array_keys($_POST['campos']);
        $lista=($_POST['campos']);
        echo $lista;
        $link=mysql_connect("localhost","root","") or die(mysql_error($link));
        mysql_select_db("agenda",$link) or die(mysql_error($link));
          $result=mysql_query("delete from contactos WHERE codigo_contacto in (".implode(',',$lista).")",$link) or die(mysql_error($link));
        mysql_close($link) or die("Error al cerrar la conexion");
    }
?>
</head>
<body onLoad="javascript:document.frmcontactos.txtcontacto.focus()">
<div class="divs">AGENDA DE CONTACTOS</div>
<br />
<?php
    $contactos=$_POST['txtcontacto'];
    $comienzo=$_GET["comienzo"];
    if($comienzo<0 || $comienzo=="")
    {
        $comienzo=0;
    }
    $link=mysql_connect("localhost","root","") or die(mysql_error($link));
    mysql_select_db("agenda",$link) or die(mysql_error($link));
    $result=mysql_query("select * from contactos",$link) or die(mysql_error($link));
    $nfilas=mysql_num_rows($result);
    $diferencia=$nfilas-7;
    if($comienzo>=$nfilas)
    {
        $comienzo-=7;
    }
    $result=mysql_query("select * from contactos where nombre_contacto like '%$contactos%' limit ".$comienzo.",7",$link);
    @$nfilas=mysql_num_rows($result);
?>
<table align="center" border="1">
<tr>
<td colspan="10" class="tituloscolumnas">Contactos</td>
</tr>
<tr>
<td colspan="10" class="tituloscolumnas"><a href="contactosav.php" class="vinculos">Agregar Contacto Nuevo</a></td>
</tr>
<tr>
<td colspan="10" class="tituloscolumnas">
    <form action="index.php" name="frmcontactos" method="post">
<table class="filassimples">
<tr class="tituloscolumnas">
<td> Buscar Contacto <input type="text" name="txtcontacto" value="<?php echo $contactos; ?>" onKeyPress="return Enter(this,event)" tabindex="1" class="cajasdetexto" /></td>
<td><input type="button" name="accion" value="Buscar" onClick="frmcontactos.submit();" class="botones" tabindex="2"/></td>
</tr>
</table>
</form>
    </td>
</tr>
<?php
    if($nfilas<=0)
    {
        echo "
<tr class='listavacia'>
<td colspan='8'>No se encontraron registros</td>
</tr>
";
    }
    else
    {
?>
<tr class="tituloslistado">
<td colspan="3"> </td>
<td> Contacto </td>
<td> Apellido </td>
<td> Nombre </td>
<td> Dirección </td>
<td> Telefono </td>
</tr>
<?php
        for($i=0; $i<$nfilas; $i++)
        {
            $row=mysql_fetch_array($result);
        ?>
<tr class="filasdedatos" onMouseOver="this.style.background='lightblue'" onMouseOut="this.style.background='white'">
<td><input name="campos[]" type="checkbox" value="<?php echo $row["codigo_contacto"]; ?>" /></td>
<td><a href="contactomod.php?contacto=<?php echo $row["codigo_contacto"]; ?>" class="vinculos" onMouseOver="mostrarAyuda('Modifica el Contacto Seleccionado','imagen')" onMouseOut='borrarAyuda();'><img border="0" src="images/modificar.png" id="imagen"></a></td>
<td><a href='#'><img border="0" src="images/eliminar.png" onClick="avisar(<?php echo $row["codigo_contacto"]; ?>);" onMouseOver="mostrarAyuda('Elimina el Contacto Seleccionado','imagen2')" onMouseOut='borrarAyuda();' id="imagen2"></a>
                </td>
<td> <?php echo $row["codigo_contacto"]; ?> </td>
<td> <?php echo $row["apellido_contacto"]; ?> </td>
<td> <?php echo $row["nombre_contacto"]; ?> </td>
<td> <?php echo $row["direccion_contacto"]; ?> </td>
<td> <?php echo $row["telefono_contacto"]; ?> </td>
</tr>
<?php
        }
    }
mysql_close($link) or die(mysql_error($link));
?>
<tr>
<td align="center" colspan="10">
<table bgcolor="#FFFFFF" height="100%" width="100%">
<tr>
<td><input type="button" value="Eliminar Contactos Marcados" class="botones" onClick="frmcontactos.submit();" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" colspan="10">
<table class="filassimples" height="100%" width="100%">
<tr>
<td align="left">
            <a href="index.php?comienzo=0" class="vinculos"> Primero</a>
        </td>
<td align="left">
            <a class="vinculos"> Anterior</a>
        </td>
<td align="right">
            <a href="index.php?comienzo=<?php if($nfilas<7){echo $comienzo;}else{echo $comienzo+7;} ?>" class="vinculos">Siguiente </a>
        </td>
<td align="right">
            <a href="index.php?comienzo=<?php if($nfilas<7){echo $comienzo;}else{echo $diferencia;} ?>" class="vinculos">Último </a>
        </td>
</tr>
</table>
</td>
</tr>
</table>
<br />
<table align="center">
<tr>
<td><input type="text" id="ayuda" size="80" readonly="true" class="ayudatrans"></td>
</tr>
</table>
</body>
</html>
Sí puedes responder este mje te lo agradezco.
¿Has visto el ejemplo que te he pasado?, ahí está explicado perfectamente. Olvidate de tu código, es largo y confuso, y el otro que te paso está explicado perfecto.
De verdad, comprende que no tengo tiempo para revisar todo tu código. Te puedo echar una mano, pero no resolvértelo entero
En el link que te paso, está resuelto
Hola, entiendo lo que dices y la verdad no te mostré todo el código para que lo soluciones sino contarte de la idea que se me ocurrió para solucionarlo el son en las líneas del borrar del php:
<?php
    if(!empty($_POST['campos']))
    {
        //$lista=array_keys($_POST['campos']);
        $lista=($_POST['campos']);
        echo $lista;
        $link=mysql_connect("localhost","root","") or die(mysql_error($link));
        mysql_select_db("agenda",$link) or die(mysql_error($link));
          $result=mysql_query("delete from contactos WHERE codigo_contacto in (".implode(',',$lista).")",$link) or die(mysql_error($link));
        mysql_close($link) or die("Error al cerrar la conexion");
    }
?>
es exactamente idéntica a la página que me mostraste y el otro problema es el del botón:
<td><input type="button" value="Eliminar Contactos Marcados" class="botones" onClick="frmcontactos.submit();" /></td>
Supuestamente al hacer click en el botón la página se recarga y debería borrar las filas que seleccioné con el checkbox y no lo hace esos son los problemas y no todo el código fuente, sí puedes responder este mje te lo agradezco.
Saca el contenido de $result con un echo y así verás la consulta que está haciendo
Hola, hice lo que me dijiste y verás no muestra nada con el echo, de hecho cuando selecciono no muestra nada los id de las filas que seleccione y además no borra nada, sí puedes responder este mje te lo agradezco.
Si pones
echo $result
¿No te sale nada?... o sea, ¿qué realmente no estás ejecutando ninguna consulta a la BD?... por favor, revisa con cuidado para ver si lo que estás enviando por parámetro, llega definitivamente.
Si no le llega nada, nunca funcionará, claro...
Hola, la verdad no sale nada sí pongo:
$lista=array_keys($_POST['campos']);
echo $lista;
o sí pongo
$lista=$_POST['campos'];
echo $lista;
$result=mysql_query("delete from contactos WHERE codigo_contacto in (".implode(',',$lista).")",$link) or die(mysql_error($link));
echo $result;
En ninguno de los tres casos muestra ningún valor, sí puedes responder este mje te lo agradezco.
Entonces ya tienes parte del problema y de la soulción, lo primero que debes hacer es asegurarte de que llega algo a esa variable, porque parece que está vacía, por eso no te va la consulta.
¿Estás mandando el Formulario por POST?
Hola, sí lo por POST.
Me pierdo un poco, esto es demasiado largo, a ver si te vale este ejemplo:
http://php.apsique.com/node/383
Hola, de ese misma página saque la idea de mostrarte mi código actualizado y no logré nada, sí puedes responderme te lo agradezco
¿Por qué no coges ese código que funciona 100% y dejas de marearte con el tuyo?... este post está siendo infinito!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas