Foros del Web » Programando para Internet » PHP »

problema con array y chekbutton

Estas en el tema de problema con array y chekbutton en el foro de PHP en Foros del Web. Hola... Estoy haviendo un panel de administrador donde inserto noticias, y las borro... El problema lo tengo al borrarlas. Lo que hago es un formulario ...
  #1 (permalink)  
Antiguo 05/07/2009, 08:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
problema con array y chekbutton[SOLUCIONADO]

Hola...
Estoy haviendo un panel de administrador donde inserto noticias, y las borro...
El problema lo tengo al borrarlas. Lo que hago es un formulario donde las muestro con un checkbutton para elegir las que deseo eliminar de la base de datos. Luego las envio a un php donde elimino las seleccionadas...la verdad es que estoy un poco liada...Cuando selecciono uno sí lo borra, pero cuando selecciono 3 o 4, me borra uno de ellos...puede ser que el problema esté en el value que le doy a los checkbutton?

Si alguien me puede hechar una mano, lo agradecería...


Código PHP:
<div id="contenedor">
  <form name="frm" id="frm" action="elimnot2.php" method="post">
  <table width="603" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td colspan="2" class="noticias">NOTICIAS PCI </td>
    </tr>
    <?php
    $n
=0;
            while(
$n<$totaltitulos1)
            {
                if(
$titulo1[$n]!=NULL)
                {
                
?>    
    <tr>
      <td width="52"><input type="checkbox" name="borradopci[<?php echo $n ?>]" 
                                            value="<?php echo $titulo1[$n?>" ></td>
      <td width="551" class="titulo"><?php echo $titulo1[$n?></td>
    </tr>
   <?php
                
}
                    
$n++;
            }
     
?>


elimnot2.php


Código PHP:
    $pci=$_POST['borradopci'];
    
//conexion    
    
$di="localhost";
    
$usuario="localhost";
    
$clave="localhost";
    
$conexion=mysql_connect($di,$usuario,$clave);
    if(
$conexion==NULL)
    {
        echo (
"Error");
    }
    
$db='deinsa';
    
mysql_select_db($db,$conexion);


$arraypci=count($pci);


$n=0;
while(
$n<$arraypci)
{
    
$borrar1="DELETE FROM noticias WHERE titulo='".$pci[$n]."'";
        
$consultamysql=mysql_query($borrar1,$conexion);
    
$n++;


Última edición por lauramiracle; 10/07/2009 a las 10:53
  #2 (permalink)  
Antiguo 05/07/2009, 09:38
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: problema con array y chekbutton

Saludos

No hace falta que en el nombre del Check le coloques el ID dentro del arrego:

Código:
name="borradopci[<?php echo $n ?>]"


Puedes colocar simplemente:

Código:
name="borradopci[]"
Sugerencias:

1) No hagas una ejecucion del query con cada opción seleccionada, consumes muchos recursos.

Cambia esto:
Código PHP:
while($n<$arraypci

    
$borrar1="DELETE FROM noticias WHERE titulo='".$pci[$n]."'"
        
$consultamysql=mysql_query($borrar1,$conexion); 
    
$n++; 

por esto:
Código PHP:
if ($arraypci 0) {

$borrar1="DELETE FROM noticias WHERE (";

while(
$n<$arraypci

    
$borrar1.=" titulo='".$pci[$n]."'"
    
    if (
$n<($arraypci-1)) {
        
$borrar1.=" OR ";
    }
    
$n++; 
}

$borrar1.=")";
$consultamysql=mysql_query($borrar1,$conexion); 

2) No hagas el mach por el TITULO de la noticia. Debes hacerlo por el ID autonumerico y unico de la tabla noticias

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #3 (permalink)  
Antiguo 10/07/2009, 10:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 77
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema con array y chekbutton

Cita:
Iniciado por José Molina Ver Mensaje
Saludos

No hace falta que en el nombre del Check le coloques el ID dentro del arrego:

Código:
name="borradopci[<?php echo $n ?>]"


Puedes colocar simplemente:

Código:
name="borradopci[]"
Sugerencias:

1) No hagas una ejecucion del query con cada opción seleccionada, consumes muchos recursos.

Cambia esto:
Código PHP:
while($n<$arraypci

    
$borrar1="DELETE FROM noticias WHERE titulo='".$pci[$n]."'"
        
$consultamysql=mysql_query($borrar1,$conexion); 
    
$n++; 

por esto:
Código PHP:
if ($arraypci 0) {

$borrar1="DELETE FROM noticias WHERE (";

while(
$n<$arraypci

    
$borrar1.=" titulo='".$pci[$n]."'"
    
    if (
$n<($arraypci-1)) {
        
$borrar1.=" OR ";
    }
    
$n++; 
}

$borrar1.=")";
$consultamysql=mysql_query($borrar1,$conexion); 

2) No hagas el mach por el TITULO de la noticia. Debes hacerlo por el ID autonumerico y unico de la tabla noticias

Suerte
Lo solucioné....muchas gracias.
El error exactamente estaba en name="borradopci[]
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 23:59.