Foros del Web » Programando para Internet » PHP »

Problemas eliminar campos de mysql con checkbox

Estas en el tema de Problemas eliminar campos de mysql con checkbox en el foro de PHP en Foros del Web. Hola, estoy empezando con esto de la programación y tengo un problema a la hora de borrar los campos con checkbox La cosa es que ...
  #1 (permalink)  
Antiguo 04/09/2011, 18:07
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Problemas eliminar campos de mysql con checkbox

Hola, estoy empezando con esto de la programación y tengo un problema a la hora de borrar los campos con checkbox

La cosa es que muestro bien los resultados pero a la hora de pasar la variable con un arrray creo que no lo hago correctamente, gracias de ante mano y a ver si algun alma caritativa me puede ayudar.

Código:
<?php

/**
 * @author SyToo22
 * @copyright 2011
 */

$connect=mysql_connect("localhost","root","");
$selectDb=mysql_select_db("test",$connect);
$query=mysql_query("SELECT id, incl1, incl2 FROM test",$connect);

//$result=mysql_fetch_array($query);
$i=0;
?><form id="form1" name="form1" method="post" action="borrar.php"><?
while ($row=mysql_fetch_array($query))
{
    $i++;//contado para borrar
    ?> <label>
    <input type="checkbox" name="delete[]" id="<? $row['id']?>">
  </label><?
    echo $row['id']." ".$row['incl1']." y ".$row['incl2']."<br>";
    
}
  
      ?><p>
    <label>
      <input type="submit" name="2" id="2" value="Enviar">
    </label>
  </p>
  </form><?
echo "<br><center><a href=\"../ejercicios post/borrar.php\">Borrar registros</a>";
echo "<br> Numero de campos totales:".$i;
?>
Ahora paso a borrar e imprimo el paso de las variables para que pueda ver si se pasan o no y después las intento borrar:

Código:
<?php

/**
 * @author SyToo22
 * @copyright 2011

*/
$connect=mysql_connect("localhost","root","");
$selectDb=mysql_select_db("test",$connect);

//Muestro de forma humana si pasan las variables
	$fields = $_POST['delete']; 
	if (is_array($fields)) { 
		echo "<pre>";
		print_r($fields);
		echo "</pre>";
	}
    
//Intento eliminar con un loop todos los campos seleccionados    
    $count=count($fields);
    for($i=0;$i<$count;$i++)
{
   $consulta = mysql_query("DELET FROM test WHERE id = $fields");
   if(!$consulta)
   {
    echo "CAMPO NO BORRADO<BR>";
   }
   else
   {
    echo "CAMPO BORRADO<BR>";
   }
} 

?>
El resultado en pantalla de lo que muestra esta aplicación si seleccionamos dos checkbox es el siguiente:

Código:
Array
(
    [0] => on
    [1] => on
)

CAMPO NO BORRADO
CAMPO NO BORRADO
Creo que es porque no estoy pasando bien las ID sino que estoy pasando el valor ON e intentado borrar con ON como si fuera la id, y como es lógino no borra.

¿Alguna idea? gracias de antemano!
  #2 (permalink)  
Antiguo 05/09/2011, 09:26
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

A nadie se le ocurre que puedo estar haciendo mal?
  #3 (permalink)  
Antiguo 05/09/2011, 09:34
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problemas eliminar campos de mysql con checkbox

Hola skirlappa, por favor no reflotes tú tema, ahora pasando a tú inconveniente, tal vez sea esta linea:

Código PHP:
Ver original
  1. $consulta = mysql_query("DELET FROM test WHERE id = $fields");

La instrucción es delete, por lo cuál debiera quedar así:

Código PHP:
Ver original
  1. $consulta = mysql_query("DELETE FROM test WHERE id = $fields");

Saludos.


__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #4 (permalink)  
Antiguo 05/09/2011, 09:40
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Problemas eliminar campos de mysql con checkbox

Jajajaj... He estado como 2 minutos mirando las dos consultas para ver que era la E del DELETE. Este tipo de fallos son los que te hacen perder dos días y pelo de la cabeza.

Espero que fuera eso, un saludo y suerte.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #5 (permalink)  
Antiguo 05/09/2011, 09:41
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Problemas eliminar campos de mysql con checkbox

hace esto:

$consulta = "DELETE FROM test WHERE id = $fields";
echo $consulta;

me parece rara tu consulta
  #6 (permalink)  
Antiguo 05/09/2011, 09:43
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problemas eliminar campos de mysql con checkbox

Cita:
Iniciado por Patriarka Ver Mensaje
hace esto:

$consulta = "DELETE FROM test WHERE id = $fields";
echo $consulta;

me parece rara tu consulta

Toda la razón debiera ser $fields[$i] , para ir recorriendo el array
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #7 (permalink)  
Antiguo 05/09/2011, 10:15
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

Cita:
Iniciado por Patriarka Ver Mensaje
hace esto:

$consulta = "DELETE FROM test WHERE id = $fields";
echo $consulta;

me parece rara tu consulta
Bien ejecutando su consulta es cierto que no estoy recorriendo el array

Código:
Array
(
    [0] => on
    [1] => on
    [2] => on
    [3] => on
    [4] => on
    [5] => on
)


DELETE FROM test WHERE id = Array
CAMPO BORRADO

DELETE FROM test WHERE id = Array
CAMPO BORRADO

DELETE FROM test WHERE id = Array
CAMPO BORRADO

DELETE FROM test WHERE id = Array
CAMPO BORRADO

DELETE FROM test WHERE id = Array
CAMPO BORRADO

DELETE FROM test WHERE id = Array
CAMPO BORRADO

NOTA: lo de campo borrado es porque al ejecutar la consulta suya el if entiende que si hay datos en la variable y por eso salta al else.
  #8 (permalink)  
Antiguo 05/09/2011, 10:18
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problemas eliminar campos de mysql con checkbox

Probaste con $fliesd[$i] para que recorra los valores del array, te resultó? a qué se debe tú post anterior, por favor debes ser más claro, saludos.
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #9 (permalink)  
Antiguo 05/09/2011, 10:30
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Probaste con $fliesd[$i] para que recorra los valores del array, te resultó? a qué se debe tú post anterior, por favor debes ser más claro, saludos.
si ejecute:

$consulta = mysql_query("DELETE FROM test WHERE id = $fields[$i]");


Si pero me da fallo en la definicion de variable

Notice: Undefined variable: fields in C:\xampp\htdocs\curso\ejercicios post\borrar.php on line 18


Lo que pasa es que estoy pasando de la página ver.php (la primera que puse en el codigo) una variable con el valor "on" en vez del valor de la id es por eso que no me borra nada... o eso creo, estoy un poco perdido...
  #10 (permalink)  
Antiguo 05/09/2011, 10:34
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problemas eliminar campos de mysql con checkbox

Mira, esto tienes tú :

Código PHP:
Ver original
  1. <input type="checkbox" name="delete[]" id="<? $row['id']?>">


te falta el value que será el id del campo que quieres eliminar :


Código PHP:
Ver original
  1. <input type="checkbox" name="delete[]" value="<?php echo $row['id']?>">


creo que con eso debería funcionar, de igual manera realiza un var_dump al arreglo de checkbox para ver que datos te arroja, Saludos.



__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #11 (permalink)  
Antiguo 05/09/2011, 10:46
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

Hola, gracias por la ayuda que estais ofreciendo,

He cambiado la linea tal y como tu me indicabas el código queda asi:

Código PHP:
<?php

/**
 * @author SyToo22
 * @copyright 2011
 */

$connect=mysql_connect("localhost","root","");
$selectDb=mysql_select_db("test",$connect);
$query=mysql_query("SELECT * FROM test",$connect);

//$result=mysql_fetch_array($query);
$i=0;
?><form id="form1" name="form1" method="post" action="borrar.php"><?
while ($row=mysql_fetch_array($query))
{
    
$i++;//contado para borrar
    
?> <label>
    <input type="checkbox" name="delete[]"  value="<?php echo $row['id']?>">
  </label><?
    
echo $row['id']." ".$row['incl1']." y ".$row['incl2']."<br>";
    
}
  
      
?><p>
    <label>
      <input type="submit" name="2" id="2" value="Enviar">
    </label>
  </p>
  </form><?
echo "<br><center><a href=\"../ejercicios post/borrar.php\">Borrar registros</a>";
echo 
"<br> Numero de campos totales:".$i;
?>

En la página borrar hago un var_dump para ver que datos me da sobre el array:

Código PHP:
<?php

/**
 * @author SyToo22
 * @copyright 2011

*/
$connect=mysql_connect("localhost","root","betis");
$selectDb=mysql_select_db("test",$connect);


    
$fields $_POST['delete']; 
    if (
is_array($fields)) { 
        echo 
"<pre>";
        
var_dump($fields);
        echo 
"</pre>";
    }
    
$count=count($fields);
    for(
$i=0;$i<$count;$i++)
{
   
$consulta mysql_query("DELETE FROM test WHERE id = $fields");
   
$consulta1 "DELETE FROM test WHERE id = $fields";
   echo 
"<br>" .$consulta1."<br>";

   if(!
$consulta)
   {
    echo 
"<br>CAMPO NO BORRADO<BR>";
   }
   else
   {
    echo 
"CAMPO BORRADO<BR>";
   }


?>
Y la pagina me sigue sin borrar y me da el siguiente mensaje:

Código:
array(3) {
  [0]=>
  string(2) "on"
  [1]=>
  string(2) "on"
  [2]=>
  string(2) "on"
}


DELETE FROM test WHERE id = Array

CAMPO NO BORRADO

DELETE FROM test WHERE id = Array

CAMPO NO BORRADO

DELETE FROM test WHERE id = Array

CAMPO NO BORRADO
  #12 (permalink)  
Antiguo 05/09/2011, 10:57
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Problemas eliminar campos de mysql con checkbox

Prueba con esto:

Código PHP:
Ver original
  1. <?php
  2. $connect=mysql_connect("localhost","root","betis");
  3. $selectDb=mysql_select_db("test",$connect);
  4. $fields = $_POST['delete'];
  5. for($i=0;$i<count($fields);$i++)
  6. {
  7.    $consulta = "DELETE FROM test WHERE id = '$fields[$i]'";
  8.    $ejecutar=mysql_query($consulta) or die ("Error de consulta");
  9.     echo "<br>CAMPO NO BORRADO<BR>";
  10. }
  11. ?>

Un poco más simplificado tú code
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #13 (permalink)  
Antiguo 05/09/2011, 11:00
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Problemas eliminar campos de mysql con checkbox

proba esto, menos antiguo que el anterior:


Código PHP:
Ver original
  1. $atributosSeleccionados = $_POST['delete'];
  2. if(!empty($atributosSeleccionados)){
  3.           $lista="'".implode("','",$atributosSeleccionados)."'";
  4.           $filterAttributes = $fisrtOperator."(t_attr.att_id IN ($lista))";
  5.        }
  6. $sql = "DELETE FROM test WHERE id = $filterAttributes";
  7.  
  8. echo $sql; // fijate que el sql sea coherente
  #14 (permalink)  
Antiguo 05/09/2011, 11:14
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Prueba con esto:

Código PHP:
Ver original
  1. <?php
  2. $connect=mysql_connect("localhost","root","betis");
  3. $selectDb=mysql_select_db("test",$connect);
  4. $fields = $_POST['delete'];
  5. for($i=0;$i<count($fields);$i++)
  6. {
  7.    $consulta = "DELETE FROM test WHERE id = '$fields[$i]'";
  8.    $ejecutar=mysql_query($consulta) or die ("Error de consulta");
  9.     echo "<br>CAMPO NO BORRADO<BR>";
  10. }
  11. ?>

Un poco más simplificado tú code

Solucionado... con tu codigo funciona, asi que lo he comparado con el mio...y el fallo estaba.... en la consulta me faltaban las '' ak valor $fields[$i] una vez puestas funciona...son los fallitos del principiante me imagino jejej muchas gracias!!! SOLUCIONADO
  #15 (permalink)  
Antiguo 05/09/2011, 11:46
 
Fecha de Ingreso: junio-2005
Mensajes: 107
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

COPIO EL CODIGO FUNCIONANDO PARA EL QUE LE PUEDA INTERESAR:


FECHA: 05/09/2011

Estructura base de datos con algunos campos para ejecutar el código:

Código:
--
-- Base de datos: `test`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `test`
--

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `incl1` varchar(255) NOT NULL,
  `incl2` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

--
-- Volcar la base de datos para la tabla `test`
--

INSERT INTO `test` (`id`, `incl1`, `incl2`) VALUES
(5, 'eeee', 'eeee'),
(10, 'eduardo', 'medina'),
(16, '1111111wq', 'medina');
Página ver: Muestra en pantalla todos los datos de la base de datos y podemos seleccionar los que queremos borrar:

Código PHP:
<?php

/**
 * @author Skirlappa
 * @copyright 2011
 */

$connect=mysql_connect("localhost","root","");
$selectDb=mysql_select_db("test",$connect);
$query=mysql_query("SELECT * FROM test",$connect);

//$result=mysql_fetch_array($query);
$i=0;
?><form id="form1" name="form1" method="post" action="borrar.php"><?
while ($row=mysql_fetch_array($query))
{
    
$i++;//contado para borrar
    
?> <label>
    <input type="checkbox" name="delete[]"  value="<?php echo $row['id']?>">
  </label><?
    
echo $row['id']." ".$row['incl1']." y ".$row['incl2']."<br>";
    
}
  
      
?><p>
    <label>
      <input type="submit" name="2" id="2" value="Enviar">
    </label>
  </p>
  </form><?
echo "<br><center><a href=\"../ejercicios post/borrar.php\">Borrar registros</a>";
echo 
"<br> Numero de campos totales:".$i;
?>

Página borrar
: Borra los campo seleccionados en la página anterior

Código PHP:
<?php

/**
 * @author Skirlappa
 * @copyright 2011

*/
$connect=mysql_connect("localhost","root","");
$selectDb=mysql_select_db("test",$connect);


    
$fields $_POST['delete']; 
    
$count=count($fields);
    for(
$i=0;$i<$count;$i++)
{
   
$consulta mysql_query("DELETE FROM test WHERE id = '$fields[$i]'");

   if(!
$consulta)
   {
    echo 
"<br>CAMPO NO BORRADO<BR>";
   }
   else
   {
    echo 
"CAMPO BORRADO<BR>";
   }

?>

ATENCIÓN SI NO SEÑALA NADA DARA UN MENSAJE DE ERROR VARIABLE NO ESPECIFICADA, este código es un ejercicio


Gracias a Patriarka y bUllan9ebrio por solucionar el fallo inicial.
  #16 (permalink)  
Antiguo 16/02/2012, 12:48
Avatar de xinote  
Fecha de Ingreso: enero-2012
Ubicación: Valladolid, Spain
Mensajes: 78
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas eliminar campos de mysql con checkbox

toy volviendome loco¡¡¡¡

tengo este codigo:

Código PHP:
<HTML>
<HEAD>
<TITLE>contenido_bd</TITLE>
</HEAD>
<BODY>
<h1><div align="center">Lectura de la tabla</div></h1>
              

<?
//Conecto con la BD..
require("config.php");

//selección de la base de datos con la que vamos a trabajar 
mysql_select_db("test2"); 

//Ejecutamos la sentencia SQL
$result=mysql_query("select * from clientes ORDER BY codigo");
?>
<table align="center" border="2" align="center" bordercolor="#000000" width="100%">
<tr>
<th>Codigo</th>
<th>Nombre</th>
<th>Direccion</th>
<th>Telefono</th>
<th>E-mail</th>
<th>Pedidos</th>



</tr>

<?

//Mostramos los registros
while ($row=mysql_fetch_array($result))

echo 
'<tr><td bgcolor="#0099FF"><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["codigo"].'</td>';
echo 
'<td><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["nombre"].'</td>';
echo 
'<td><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["direccion"].'</td>';
echo 
'<td><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["telefono"].'</td>';
echo 
'<td><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["email"].'</td>';
echo 
'<td><font color="#FF0000" face="Courier New, Courier, monospace"><b>'.$row["pedidos"].'</td>';
echo 
'<td><input type="checkbox" name="campos[]" value="$id"></td></tr>';



}
mysql_free_result($result)
?>
</table>

<div align="center">
<a href="clientes.php">Añadir un nuevo registro</a><br>

</div>

</BODY>
</HTML>
si lo vieseis graficamente consta de una tabla con varias celdas y en cada una de ellas se escribe el contenido de cada columna de la base de datos ( codigo,nombre,telefono,etc.... )
al final hay un chekbox y me gustaria saber como hacerlo con un boton o algo para que al marcar ese checkbox y pulsar el boton BORRAR pues eso lo borre xd
muchas gracias

Etiquetas: campos, checkbox, mysql, registro, sql, variables
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 22:23.