PHP - eliminar campos con checkbox

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por Charly (69 intervenciones) el 05/02/2019 17:37:11
Tengo una tabla con varios mensajes de correo, y cada mensaje tiene un checkbox , para que al apretar un botón Eliminar que hay debajo de la tabla, se borren los marcados y se actualice la tabla.
La lista me aparece bien, pero no me borra los mensajes seleccionados.
Este es el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<html>
	<head>
		<title>MENSAJES</title>
	</head>
	<body>
		<?php
			define("SERVIDOR","localhost");
			define("USUARIO","root");
			define("CLAVE","");
			//define("BD","mensajes");
			$BD="mensajes";
			$db;
			try{
				if($BD!='')
					$db=new PDO("mysql:host=".SERVIDOR.";dbname=".$BD.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				else
					$db=new PDO("mysql:host=".SERVIDOR.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
				$db->setAttribute(PDO::NULL_TO_STRING,true);
				if($BD==''){
					$sql=file_get_contents('mensajes.sql');
					$this->ejecuta_SQL($sql);
				}
			}catch(PDOException $e){
				die("<p><h3>No se ha podido establecer la conexión.
					<p>Compruebe si está activado el servidor de bases de
					datos MySQL.</h3></p>\n<p>Error: ".$e->getMessage()."</p>\n");
			}
			echo "<h1>LISTADO DE MENSAJES DE CORREO.</h1>
				<p>Selecciona el 'asunto' de un mensaje para ver su contenido.</p>
				<p>Maraca los que deseas borrar y pulsa el botón 'Eliminar'.</p>
				<form name='form1' method='post' action=\"index.php\">";
			$_POST['Eliminar']="";
			$_POST['checkbox']="";
			$sql1='SELECT id,de,asunto,fecha FROM mensajes';
			$resultado1=$db->query($sql1);
			echo "<table border=1>
				<tr bgcolor='#FF0000'><th align='left'>De</th><th align='left'>Asunto</th><th align='left'>Fecha</th><th align='left'>Operaciones</th></tr>";
			while(($fila1=$resultado1->fetch(PDO::FETCH_ASSOC))!=NULL){
				echo "<tr bgcolor='#F78181'><td>".$fila1['de']."</td><td><a href='asunto.php?id'>".$fila1['asunto']."</td><td>".$fila1['fecha']."</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='".$fila1['id']."'></td>";
			};
			echo "<tr colspan='4' bgcolor='#F78181'><td colspan='4' align='right'><input type='submit' name='Eliminar' value='Eliminar'></td></tr>
				</table></form>";
			if(isset($_POST['Eliminar'])){
				$borrar=implode(",",(array)$_POST['checkbox']);
				$sql2="DELETE FROM mensajes WHERE id IN ($borrar)";
				$resultado2=$db->query($sql2);
 
			}
		?>
	</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por xve (6935 intervenciones) el 05/02/2019 22:46:19
Hola Charly, la verdad es que no se puede ser, y no puedo probarlo, ya que no dispongo de la base de datos...
Una vez tengas la pagina en el navegador, puedes hacer "ver código fuente" y pegarlo para poder probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por Charly (69 intervenciones) el 06/02/2019 10:38:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
	<head>
		<title>MENSAJES</title>
	</head>
	<body>
		<h1>LISTADO DE MENSAJES DE CORREO.</h1>
				<p>Selecciona el 'asunto' de un mensaje para ver su contenido.</p>
				<p>Maraca los que deseas borrar y pulsa el botón 'Eliminar'.</p>
				<form name='form1' method='post' action="index.php"><table border=1>
				<tr bgcolor='#FF0000'><th align='left'>De</th><th align='left'>Asunto</th><th align='left'>Fecha</th><th align='left'>Operaciones</th></tr><tr bgcolor='#F78181'><td>Virginia Santamaria</td><td><a href='asunto.php?id'>Proximo examen</td><td>2014-01-18</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='4'></td><tr bgcolor='#F78181'><td>Almudena Jackson</td><td><a href='asunto.php?id'>Otra vez lo mismo</td><td>2014-01-13</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='5'></td><tr bgcolor='#F78181'><td>Brad McGanauy</td><td><a href='asunto.php?id'>Saludos de nuevo</td><td>2014-01-11</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='6'></td><tr bgcolor='#F78181'><td>Xavi Villanova</td><td><a href='asunto.php?id'>Re: Visita seguros</td><td>2014-01-10</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='7'></td><tr bgcolor='#F78181'><td>Javier Gomez</td><td><a href='asunto.php?id'>Re: Re: Visita seguros</td><td>2014-01-10</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='8'></td><tr bgcolor='#F78181'><td>Anne Wintertur</td><td><a href='asunto.php?id'>Happy Birhtday</td><td>2014-01-09</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='9'></td><tr bgcolor='#F78181'><td>Joaquim Pitt</td><td><a href='asunto.php?id'>Asunto de negocios</td><td>2014-01-08</td><td><input type='checkbox' name='checkbox[]' id='checkbox[]' value='10'></td><tr colspan='4' bgcolor='#F78181'><td colspan='4' align='right'><input type='submit' name='Eliminar' value='Eliminar'></td></tr>
				</table></form>array(1) {
  [0]=>
  string(0) ""
}
	</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por xve (6935 intervenciones) el 06/02/2019 16:58:50
Hola Charly, en la parte inferior del código que no has enviado, puedes poner algo así:
1
2
3
4
5
6
7
8
<?php
if($_POST["checkbox"]) {
    foreach($_POST["checkbox"] as $value)
    {
        echo "<br>".$value;
    }
}
?>
Donde esta el echo "..." puedes eliminar el elemento de la base de datos.

Es esto lo que necesitas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por Charly (69 intervenciones) el 06/02/2019 17:32:26
Ya lo he arreglado, en el action del form había puesto el index.php con comillas dobles y una barra.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<html>
	<head>
		<title>MENSAJES</title>
	</head>
	<body>
		<?php
			define("SERVIDOR","localhost");
			define("USUARIO","root");
			define("CLAVE","");
			$BD="mensajes";
			$db;
			try{
				if($BD!='')
					$db=new PDO("mysql:host=".SERVIDOR.";dbname=".$BD.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				else
					$db=new PDO("mysql:host=".SERVIDOR.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
				$db->setAttribute(PDO::NULL_TO_STRING,true);
				if($BD==''){
					$sql=file_get_contents('mensajes.sql');
					$this->ejecuta_SQL($sql);
				}
			}catch(PDOException $e){
				die("<p><h3>No se ha podido establecer la conexión.
					<p>Compruebe si está activado el servidor de bases de
					datos MySQL.</h3></p>\n<p>Error: ".$e->getMessage()."</p>\n");
			}
			echo "<h1>LISTADO DE MENSAJES DE CORREO.</h1>
				<p>Selecciona el 'asunto' de un mensaje para ver su contenido.</p>
				<p>Maraca los que deseas borrar y pulsa el botón 'Eliminar'.</p>";
			echo "<form name='form1' method='post' action='index.php'>";
			$sql1='SELECT id,de,asunto,fecha FROM mensajes';
			$resultado1=$db->query($sql1);
			echo "<table border=1>
				<tr bgcolor='#FF0000'><th align='left'>De</th><th align='left'>Asunto</th><th align='left'>Fecha</th><th align='left'>Operaciones</th></tr>";
			while(($fila1=$resultado1->fetch(PDO::FETCH_ASSOC))!=NULL){
				echo "<tr bgcolor='#F78181'><td>".$fila1['de']."</td><td><a href='asunto.php?id'>".$fila1['asunto']."</td><td>".$fila1['fecha']."</td><td><input type='checkbox' name='checkbox[]' id='' value='".$fila1['id']."'></td>";
			};
			echo "<tr colspan='4' bgcolor='#F78181'><td colspan='4' align='right'><input type='submit' name='Eliminar' value='Eliminar'></td></tr>
				</table></form>";
			if(isset($_POST['Eliminar'])){
				if($_POST['checkbox']){
					foreach($_POST['checkbox'] as $value){
						$sql2="DELETE FROM mensajes WHERE id=".(int)$value;
						$resultado2=$db->query($sql2);
					}
				}
			}
		?>
	</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

eliminar campos con checkbox

Publicado por xve (6935 intervenciones) el 06/02/2019 18:35:56
Gracias por comentarlo Charly!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar