Foros del Web » Programando para Internet » PHP »

Eliminar Registros Con Checkbox

Estas en el tema de Eliminar Registros Con Checkbox en el foro de PHP en Foros del Web. HOLA ES MI PRIMER CONSULTA QUIERO BORRAR UNOS REGISTROS DE UNA TABLA DE UNA BASE DE DATOS A PARTIR DE LA SELECCION DE UN CHECK ...
  #1 (permalink)  
Antiguo 07/12/2007, 10:08
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Eliminar Registros Con Checkbox

HOLA ES MI PRIMER CONSULTA
QUIERO BORRAR UNOS REGISTROS DE UNA TABLA DE UNA BASE DE DATOS A PARTIR DE LA SELECCION DE UN CHECK BOX, LEI EL POST QUE HAY AQUI PERO NO OCURRE EL BORRADO NO SE EN QUE ME HE EQUIVOCADO ESPERO ME PUEDAN AYUDAR DE ANTEMANO GRACIAS.
INCLUYO EL CODIGO QUE OCUPO

PAGINA2.PHP

sq = "SELECT * FROM temporal WHERE numero_control='$numcon' ";
$result=mysql_query($sq);
echo "<table border = '1'> \n";
echo "<tr> \n";
echo "<td></td>";
echo "<td><b>CLAVE</b></td> \n";
echo "<td><b>MATERIA</b></td> \n";
echo "<td><b>HORA</b></td> \n";
echo "<td><b>DIA</b></td> \n";
echo "<td><b>MAESTRO</b></td> \n";
echo "</tr> \n";

echo "<form action=\"borratodmat.php\" method=\"post\"> \n";
while ($row = mysql_fetch_row($result)){
echo "<tr> \n";
echo "<td> \n";
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['cve_grupo']."\">".$row['materia']."<br>";
}


?>



<?php

echo "<td>$row[5]</td> \n";
echo "<td>$row[1]</td> \n";
echo "<td>$row[6]</td> \n";
echo "<td>$row[7]</td> \n";
echo "<td>$row[3]</td> \n";
echo "</tr> \n";
/*
$cvemat=$row[1];
$nomae=$row[3];
$cvegrupo=$row[6];
$var=$var++;
*/


echo "</table> \n";
echo "<table> \n";
echo "<tr> \n";
echo "<td> \n";
echo "<input type=\"submit\" name=\"Submit\" value=\"BORRAR\">";
echo "</form>";
echo "</td> \n";
echo "</tr> \n";
echo "</table> \n";

?>

BORRARTODMAT.PHP
<?PHP
$lista=implode(",",$_POST['seleccion']);

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
mysql_query("DELETE FROM temporal WHERE cve_grupo IN((".$lista."))");


?>
  #2 (permalink)  
Antiguo 07/12/2007, 10:49
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: Eliminar Registros Con Checkbox

La sentencia $lista=implode(",",$_POST['seleccion']); va a producir un string del tipo: "valor1,valor2,valor3".

Si metes ese string en tu consulta te va a quedar así:

DELETE FROM temporal WHERE cve_grupo IN((valor1,valor2,valor3))

Esta sentencia (aparte de sobrarle un juego de paréntesis y faltarle un espacio despues del IN) no funcionará si cve_grupo no es numérico ya que debería ser del tipo:

DELETE FROM temporal WHERE cve_grupo IN ('valor1','valor2','valor3')


¿Es un campo numérico cve_grupo?
__________________
Kelpie
  #3 (permalink)  
Antiguo 07/12/2007, 11:35
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Eliminar Registros Con Checkbox

Lo hicistes con mi query ? haber la cosa va asi ....



Ahora supongamos que La pagina que genera la lista de datos las cuales son tablas las cuales mediante un Check Box vas a eliminar de la base de datos dinamicamente con PHP.. Ok algo asi tiene que aparecer en tus checkbox

Código PHP:
 <input type="checkbox" name="lista[]" id="lista[]" value="<?=$info['id_tabla'];?>">
Esto le va a decir al Check Box cuales tablas va a borrar de la base de datos... estos checkboxes los vas a enviar a borrar.php previamente descrito por mi persona en un post anterior la cual debe seguir la linea de parametros que tiene tu listado.. saludos y mucho exitos en tu proyecto.

Código PHP:


IF(isset($_POST['borrar']))
{
    
$contar 0;
    
$sql "DELETE FROM admins ";
    
    foreach (
$_POST['lista'] as $valor
    {
        IF(
$contar == 0)
        {
            
$sql.= "WHERE `admin_id` = '" $valor "'";
        }
        ELSE
        {
            
$sql.= " OR `admin_id` = '" $valor "'";
        }
        
        
$contar++;
    } 
    
$sql.= " LIMIT " count($_POST['lista']);
    
    
mysql_query($sql);
    
    
header("Location: ver_lista.php");
    exit;

  #4 (permalink)  
Antiguo 10/12/2007, 12:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Eliminar Registros Con Checkbox

Kelpie gracias antes que nada, bueno lo del parentesis ya sabia qu estaba mal cve_grupo no es un campo numerico si no que es varchar, como lo puedo solucionar??? estare muy agradecido con cualquier comentario que me pueda ayudar..
  #5 (permalink)  
Antiguo 10/12/2007, 15:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Eliminar Registros Con Checkbox

eddwin paz gracias por contestar no utilize tu codigo si no el de cluster si me hiceras el favor de mandar el link a tu post te estaria muy agradecido para probar lo que tu realizas
  #6 (permalink)  
Antiguo 10/12/2007, 20:02
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Eliminar Registros Con Checkbox

HOLA DE NUEVO BUSCANDO EN INTERNET ME ENCONTRE CON ESTO PERO NO REALIZA EL BORRADO NO SE EN QUE ESTOY MAL YA PROBE VARIAS COSAS.
PAGINA2.PHP

while ($row = mysql_fetch_row($result)){
$id=$row[0];
echo "<input type='checkbox' name='campos[]' value='$id'>";
}

ELIMINAR.PHP
if(!empty($_POST['campos'])) {
$aLista=$_POST['campos'];
$sQuery="DELETE FROM temporal where id IN (".implode(',',$aLista).")";
mysql_query($sQuery,$db);
print_r($_POST['campos']);
$nfilas=mysql_affected_rows();
echo $nfilas;

}
  #7 (permalink)  
Antiguo 11/12/2007, 04:31
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: Eliminar Registros Con Checkbox

EL problema es añadir las comillas simples que deben rodear cada valor en la lista. Se me ocurre que podrías hacer así:

Código PHP:
<?php
....
$lista="";
//Recorremos a mano cada valor recibido
foreach ($_POST['seleccion'] as $valor){
    
$lista.="'"+$valor+"',";  //Vamos generando la lista añadiendo las comillas simples de cada valor
}
if (
strlen($lista)>0) {
  
$lista=substr($lista,0,strlen($lista));  //Si hay algo en la lista, quitamos la coma del final...
  // Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
  
mysql_query("DELETE FROM temporal WHERE cve_grupo IN((".$lista."))");
}else{
  echo(
"Lista vacía");
}
?>
__________________
Kelpie
  #8 (permalink)  
Antiguo 11/12/2007, 11:54
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Eliminar Registros Con Checkbox

KELPIE
GRACIAS ANTES QUE NADA, CAMBIE LA LLAVAE PRIMARIA DE MI TABLA DONDE ESTA CVE_GRUPO Y PUSE ID como auto_increment para que fuera numerico
pero no hace el borrado en la tabla. pongo el codigo
pagina1.php
while ($row = mysql_fetch_row($result)){
$id=$row[0];
$cve_grupo=$row[2];
echo "<tr> \n";
echo "<td> \n";
echo "<input type='checkbox' name='campos[$id]' >";
}

pagina 2. php

$db=mysql_connect("localhost","root");
mysql_select_db("inscripciones",$db);

if(!empty($_POST['campos'])) {
$aLista=array_keys ($_POST['campos']);
$sQuery="DELETE FROM temporal where id IN (".implode(',',$aLista).")";
$resultado=mysql_query($sQuery,$db);
print_r($_POST);//imprimo el array en este caso campos para ver que se reciba
echo $sQuery;//imprimo la consulta
}
NO SE EN QUE ESTOY
MAL Y YA ME HE DADDO DE TOPES CONTRA LA PARED DE ANTEMANO GRACIAS POR TODAS LAS RESPUES A TODOS
  #9 (permalink)  
Antiguo 26/06/2008, 16:47
 
Fecha de Ingreso: junio-2008
Mensajes: 25
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Re: Eliminar Registros Con Checkbox

hola que tal.. ya veo que sabes como eliminar registros? sera q me peudes hechar un mano? estoy tratatno de eliminar un registro pero por formulario como lo hago con checkbox??
  #10 (permalink)  
Antiguo 26/06/2008, 22:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Eliminar Registros Con Checkbox

como lo hizo pangallo, es correcto... así que no es tan complejo como parece... espero este ejemplo sirva de algo mas...

mostrar registros
Código PHP:
while ($row mysql_fetch_assoc($result))
// esto, solo es para mostrar los checkboxes
   // como se lee... usamos como name un "arreglo"
  
echo '<input type="checkbox" name="foo['.$row['id'].']"/>';

procesar registros
Código PHP:
foreach ($_POST['foo'] as $id)
// asi es como obtenemos los ID, desde el formulario...
  
echo $id;

  
// solo resta procesar estos ID, recuerda que
  // mientras este seleccionado... existira en el arreglo POST
  
  
mysql_query("DELETE FROM `candy` WHERE id=$id"); // por ejemplo

suerte!

NOTA que usar IN() es la mejor forma de hacerlo... cuando tomas decisiones que afectan a un grupo determinado
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:50.