Foros del Web » Programando para Internet » PHP »

Borrar registros con check seleccionados

Estas en el tema de Borrar registros con check seleccionados en el foro de PHP en Foros del Web. Hola a todos .... por aca nuevamente a ver si me dan una manito Estoy haciendo un script para eliminar unas noticias para cual listo ...
  #1 (permalink)  
Antiguo 11/04/2005, 12:17
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 13 años, 3 meses
Puntos: 1
Borrar registros con check seleccionados

Hola a todos .... por aca nuevamente a ver si me dan una manito

Estoy haciendo un script para eliminar unas noticias para cual listo todas las noticias y para cada noticia le coloco un checkbox.

El archivo : eliminar_noticia.php es el siguiente

$consulta=mysql_query("select * from noticias order by id desc",$conectar);

<form name="form1" method="post" action="noticia_eliminar_grabar.php>

$i=1;
while ($row=mysql_fetch_array($consulta))
{
echo $i;
echo $row["fecha_noti"];
echo $row["desc1_noti"];
echo "<input type='checkbox' name='chk_col[]' value='$row[id]'>";$i++;
}
<input type="submit" name="Submit" value="Eliminar Noticias Seleccionadas">
</form>

Bueno hasta aca todo bien, me hace el listado ok.

Pero quisiera usar la etiqueta confirm de Javascript.... Como haria esto

Es decir si le digo Si que me borre todas las noticias seleccionadas en la pagina : eliminar_noticias.php pero para cada noticia tengo una fotografia el cual lo borro con
@unlink("../ruta_archivo/nombre_archivo") pero como lo haria con el array que lo envio.

Espero haberme explicado.

Gracias y saludos
  #2 (permalink)  
Antiguo 11/04/2005, 13:10
Avatar de CarlosMtnez  
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 14 años, 3 meses
Puntos: 1
Imagino que necesitas leer el array para realizar las acciones que necesites, como por ejemplo, eliminar de la BD y además eliminar una fotografía.

la estructura es la siguiente:

Código:
if ((isset($HTTP_POST_VARS['chk_col'])) and (is_array($HTTP_POST_VARS['chk_col']))) {
    $chk_col=$HTTP_POST_VARS['chk_col'];
    
    // Se prepara la consulta a MySQL
    $cadena='';
    $contador=0;
    foreach ($chk_col as $valor) {
           $contador++;
           $cadena.="'$valor'"; // <--- Se añaden comillas simples a cada valor
           if (($contador>1) and ($contador<count($chk_col))) $cadena.=",";

           //Ejecutamos el resto de acciones pendientes Ej. Borrar imágen
           @unlink(" ..... $valor ");
    }
    $Consulta="DELETE FROM tabla WHERE id IN ($cadena)"; 
    //Ejecutamos la consulta
    $resultado = mysql_query($Consulta, $conectar);          
}
Esto es un código de ejemplo que he programado sobre la marcha, también podría usarse implode(",", $chk_col) para separar los valores en comas, pero ahora tengo mucho dolor de cabeza y no se me ocurre otra manera de poder además añadirle comillas simples para que no te dé error la consulta SQL.

PD: Optimiza el algoritmo que seguro que se puede hacer mejor.

Saludetes y espero que te sirva de ayuda.

Edito: He añadido las etiquetas CODE porque el codigo se veía feo.

Última edición por CarlosMtnez; 11/04/2005 a las 13:11
  #3 (permalink)  
Antiguo 11/04/2005, 13:11
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
Haber si te entendi:
para eliminar las noticias de los checkbox seleccionados
lo que hago es asignarle al valor del checkbox un identificador del registro, es decir:
Código PHP:
do{
        
    echo 
"<input type = \"checkbox\" name=\"existe[]\" value =\"$row[id]\">";
}while(
$row=mysql_fetch_array($result)); 
despues recibir ese arreglo en otro programa y eliminarlos con un ciclo algo asi:
Código PHP:
<?php
 
   $existe 
$HTTP_POST_VARS['existe'];
  
//aqui va la conexion a tu base de datos
   
for ($i=0;$i<=count($existe);$i++){
       if (isset(
$existe[$i])){
           echo 
"estos son los registros seleccionados <br>";
           echo 
$existe[$i]."<br>";
           
$mata =("delete from $nombre where No_Consecutivo = $existe[$i]");
           
mysql_query($mata,$link);
        }
   }
     
?>
espero eso sea lo que quieres.
  #4 (permalink)  
Antiguo 11/04/2005, 16:18
Avatar de CarlosMtnez  
Fecha de Ingreso: agosto-2003
Mensajes: 68
Antigüedad: 14 años, 3 meses
Puntos: 1
Lo que hemos puesto ambos es mas o menos equivalente, sólo que en mi algoritmo utilizo un foreach en vez de un for y hago una sóla consulta a la base de datos que borra todo de una vez en lugar de una por cada registro de la matriz.

Saludos!
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:08.