PHP - Botón On-Off publicar noticias

 
Vista:
sin imagen de perfil

Botón On-Off publicar noticias

Publicado por peceyo8253 (1 intervención) el 27/08/2023 09:34:02
¡Hola a todos! A ver si podeis ayudarme.

Estoy desarrollado una web de noticias de música y para ello lo estoy haciendo en bootstrap, por un lado la parte de administración y por otro la web como tal.
Me salen publicadas todas las noticias que publico, pero lo que quiero es que a través del admin aparezca en el listado de lo publicado una columna de activar/desactivar publicación, la cual pasa un valor 0 o 1 a un campo de la base de datos, y de ese modo el contenido se verá o no en la web,
Me sale al 50% ya que si pincho en on o en off de una noticia se cambia correctamente el valor, pero sin embargo, si pincho en otra noticia me vuelve a cambiar la misma noticia de antes. Es decir, pinche el enlace que sea, siempre me va a activar o desactivar la misma. No se por que és, creo que es un tema de bucle pero no consigo encontrar la causa.
¿Alguien puede ayudarme a ver que es lo que esta mal?
Gracias por la ayuda.

Adjunto parte del código de la página de listado de consultas, y el de la actualización del registro.

LISTADO CONSULTAS:
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
<thead>
    <tr>
      <th scope="col">Ref.</th>
      <th scope="col">Título</th>
      <th scope="col">Subtítulo</th>
      <th scope="col" width="10%">Autor</th>
      <th scope="col" width="10%">Fecha</th>
      <th scope="col" width="10%" style="text-align:center;">Activo</th>
    </tr>
  </thead>
  <tbody>
 
			<?php
			if ($result->num_rows > 0) {
			while($row = $result->fetch_assoc()) {
			echo "<tr><td>".$row['ID']."</td><td><b><a style='max-width: 300px;' href='c.php?r=".$row['ID']."'>".$row['Titulo']."</a></b></td><td><span>".$row['Subtitulo']."</span></td><td width='10%'>".$row['Autor']."</td><td width='10%'>".$row['Fecha']."</td><td class='text-center' width='10%'><div class='custom-control custom-switch'>";?>
 
 
			<?php
			$pasa_id = $row['ID'];
			echo "el id es ".$pasa_id;
 
			echo "<input type='hidden' name='input_pasa_id[]' id='input_pasa_id' value='".$pasa_id."'>";
			if ($row['Activo'] == '1' ) {
				//echo "encendido";
				//echo "<input type='hidden' name='pasa_valor' id='pasa_valor' value='1'/>";
				//echo "<a href='".htmlspecialchars($_SERVER["PHP_SELF"])."' role='button' class='btn btn-light btn-sm' name='btn_on' id='btn_on' disabled>on</a>";
				//echo "<a href='".htmlspecialchars($_SERVER["PHP_SELF"])."?act=0' role='button' class='btn btn-danger btn-sm' name='btn_off' id='btn_off'>off</a>";
				echo "<input type='submit' class='btn btn-success btn-sm' name='btn_on_off' value='on' id='btn_on_off' disabled>";
				echo "<input type='submit' class='btn btn-danger btn-sm' name='btn_on_off' value='off' id='btn_on_off'>";
 
				} else {
				//echo "apagado";
				//echo "<input type='hidden' name='pasa_valor' id='pasa_valor' value='0'/>";
				//echo "<a href='".htmlspecialchars($_SERVER["PHP_SELF"])."' role='button' class='btn btn-light btn-sm' name='btn_off' id='btn_off' disabled>off</a>";
				//echo "<a href='".htmlspecialchars($_SERVER["PHP_SELF"])."?act=1' role='button' class='btn btn-success btn-sm' name='btn_on' id='btn_on'>on</a>";
				echo "<input type='submit' class='btn btn-light btn-sm' name='btn_on_off' value='on' id='btn_on_off'>";
				echo "<input type='submit' class='btn btn-danger btn-sm' name='btn_on_off' value='off' id='btn_on_off' disabled>";
			}
 
			echo "</div></td></tr>";
			?>
			<input type="hidden" name="campo_id[]" id="campo_id" value="<?php echo $_SESSION['ID_rsfm'];?>">
			<?php
			}
			echo "<table><tr><td><span class='numregistros'>hay ".$rowcount." registro/s en la base de datos.</span></td></tr></table>";
			} else {
			echo "<table><tr><td>No hay resultados.</td></tr></table>";
			}
			?>

ACTUALIZACION DEL REGISTRO:
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
<?php
if(isset($_POST['input_pasa_id'], $_POST['btn_on_off'])){ // Comprobar los valores a mandar a 'Activo'
$valor_id = $_POST['input_pasa_id'];
$valor_f = $_POST['btn_on_off'];
 
$contar = count($valor_id);
echo "hay ".$contar. " elementos en el array.<br />";
 
foreach ($valor_id as $valor) {
echo "el valor actual de ".$valor." es ".$valor_f. "<br />";
}
 
switch ($valor_f) {
	case "on":
	$sql3 = "UPDATE contenidos SET Activo = '1' WHERE ID='".$valor."'";
	break;
	case "off":
	$sql3 = "UPDATE contenidos SET Activo = '0' WHERE ID='".$valor."'";
	break;
}
 
if (mysqli_query($conn, $sql3)) {
    $nuevo_registro = "Modificada disponibilidad de contenido";
	//echo'<script type="text/javascript">alert("¡El formulario se ha enviado exitosamente!"); window.location.href="pizza.php";</script>';
    //echo 'Mensaje enviado correctamente';
	//echo '<script language="javascript">alert("Publicación actualizada.");</script>';
} else {
	echo '<script language="javascript">alert("Error: ". $sql3 . "<br>" . mysqli_error($conn););</script>';
}
 
}
?>


error_RSFM_admin1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Botón On-Off publicar noticias

Publicado por Kathyu (905 intervenciones) el 28/08/2023 16:24:46
No he podido analizar bien tu código. Acá mis consejos

- Usa un solo botón. Este al recibir el clic consulta en la DB y cambia al valor contrario de lo que tenga ahora en la DB.
- Si se ejecuta bien el UPDATE en la DB ya lo tienes TODO.
- Dependiendo de si es uno o cero debes hacer que el query de noticias funcione. Algo tan básico como:
1
WHERE activo = 1
- Dependiendo de si es uno o cero debes poner las clases a tu botón.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Botón On-Off publicar noticias

Publicado por Alejandro (849 intervenciones) el 28/08/2023 17:53:41
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
No se ve la parte donde inicia y termina tu form por lo que me da a pensar que todos están en uno solo formulario así que mandas todos.
Los input submit tienen el mismo nombre btn_on_off.
Al actualizar iteras valor_id por lo que valor es el ultimo elemento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar