Ayuda con SELECCION en codigo PHP.

Hola a todos,

mi intencion es tener una lista de noticias con los campos Selección, Título, Fecha y Accion. Pues bien en el "admin_GNoticias-action.php" me gustaría que se comprobase que han sido seleccionadas(mediante checkbox's) entre 2 y 4, y cambiar el estado en la BD de esas 2-4 Noticias ponerlo a 1(1=activo).
Esta tarea que a priori pensaba sencilla, ahora no sé como hacerlo, pues el campo del checkbox al que he llamado "selección", es igual para todas las noticias, entonces no podría saber cuales poner el estado a 1 y cuales no, igual que tampoco sabría como comprobar que no he marcado mas de 2 y menos de 4.

Alguien tiene idea de como solucionarlo?

Muchísimas gracias!.

<h1>Gestión de Noticias</h1>     
      <p>En esta página podrás gestionar las noticias, tanto insertar nuevas noticias como modificar o eliminar algunas ya existentes. Además seleccionaremos entre 2-4 Noticias para que estén visible para los usuarios de nuestro sistema.</p>
 
<!-- Estado 1= Visible, Estado 0= Oculta--> 
 <form name="noticias" method="post" action="admin_GNoticias-action.php"  target="a">         
 <table class="table" width="500" border="1" align="left" cellpadding="5" cellspacing="0">
    <tr>
        <th class="td" width="100">Selección</th>
    	<th class="td" width="200">Título</th>
        <th class="td" width="100" >Fecha</th>
        <th class="td" width="100">Accion</th>
    </tr>
<?php 
 $res= mysql_query("SELECT * FROM noticias ORDER BY fecha_reg");
 
 if(mysql_num_rows($res)>0){
			while($r=mysql_fetch_assoc($res))
			{   
				
	?>			<tr>
    				<td><input type="checkbox" id="seleccion></td>
   					<td><?php echo $r['titulo'];?></td>
					<td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
                    <td><!-- Imagenes con enlace para eliminar, y modificar noticias-->  </td>
				</tr>
<?php 		 }?>
				<tr>		
            		<td style="text-align:left" colspan="7"> <input type="submit" name="submit"  value="Guardar" ></td>
               </tr>
<?php 		}else{ ?>
			    <tr>		
            		<td colspan="7"> <?php echo "No se obtuvieron resultados.. " ?> </td>
               </tr>
	<?php	} ?>
</table>
</form>        	
Hola Rixi69,

Haría falta ver también el código del proceso que recibe el $_POST del formulario (en tu caso el admin_GNoticias-action.php) para ver que haces después con esos datos que le llegan.

De todas formas, veo un par de cositas en la fila del checkbox que a lo mejor te ayudan. Tienes abiertas las comillas del "id" y has dejado mal cerrado el input. Quedaría algo así:

<td><input type="checkbox" id="seleccion" /></td>

Además, deberías indicar un value, en este caso "1" si está marcado, para que lo envíe en el post. Si a un checkbox no le das value devuelve "True" o "False" y esto creo que no es lo que quieres, no?

<td><input type="checkbox" id="seleccion" value="1" /></td>

Por cierto, en el foro hay una sección específica para PHP y Bases de Datos. Quizás colgando el post ahí lo vea más gente que entienda del tema y encuentres más rapido la solución.

Un saludo Rixi. Ya nos cuentas que tal.
Gracias por tu respuesta SuperHipo.

He modificado el código, si alguien lo pudiese revisar se lo agradecería muchísimo, ya que no funciona. Y como pongo al final en //comentario me gfustaria tambien que las noticias NO seleccionadas se pusiesen a estado 0, si alguien sabe como.. Gracias

GNoticias.php:
<?php include_once('../General/cabecera.php');?>

 <section id="principal">
		<div id="Admin_Noticias">
      <h1>Gestión de Noticias</h1>     
      <p>En esta página podrás gestionar las noticias, modificando o eliminando las existentes. Además seleccionaremos entre 2-4 Noticias para que estén visible para los usuarios de nuestro sistema.</p>
      <p>Pulse <a href="admin_GNoticias_nueva.php">aquí</a> para insertar una nueva noticia en el sistema.</p>
 
<!-- Estado 1= Visible, Estado 0= Oculta--> 
 <form name="noticias" method="post" action="admin_GNoticias-action.php"  target="a">         
 <table class="table" width="500" border="1" align="left" cellpadding="5" cellspacing="0">
    <tr>
        <th class="td" width="100">Selección</th>
    	<th class="td" width="200">Título</th>
        <th class="td" width="100" >Fecha</th>
        <th class="td" width="100">Accion</th>
    </tr>
<?php 
 $res= mysql_query("SELECT * FROM noticias ORDER BY fecha_reg");
 
 if(mysql_num_rows($res)>0){
			while($r=mysql_fetch_assoc($res))
			{   
				$seleccionado=mysql_query("SELECT estado FROM noticias WHERE id_noticia= '".$r['id_noticia']."'");// La noticia aparece seleccionada si lo estaba.
					?>		
            	<tr>
    				<td><input <?php if($seleccionado==1){?> checked <?php }?> type="checkbox" value="1" id="seleccion"/></td>
   					<td><?php echo $r['titulo'];?></td>
					<td><?php echo date("d/m/Y", strtotime($r['FECHA']));?></td>
                    <td><!-- Imagenes con enlace para eliminar, y modificar noticias-->  </td>
				</tr>
<?php 		 }?>
				<tr>		
            		<td style="text-align:left" colspan="7"> <input type="submit" name="submit"  value="Guardar" /></td>
               </tr>
<?php 		}else{ ?>
			    <tr>		
            		<td colspan="7"> <?php echo "Inserte su primera noticia.. " ?> </td>
               </tr>
	<?php	} ?>
</table>
</form>        	
     
        </div>   
            
      </section>
<?php include_once('../General/footer.php');?>


GNoticias-action.php:
<?php
		if(isset($_POST['submit']))
		{	
			$res= mysql_query("SELECT * FROM noticias");
			$contador=0; 

 			if(mysql_num_rows($res)>0){
			while(mysql_fetch_assoc($res))  
			{	
				if($_POST['seleccion']==1)
						$contador= $contador+1;	  //Contabilizamos que hay entre 2 y 4 noticias seleccionadas

			}
				if($contador>=2 and $contador<=4){
					
					if(mysql_num_rows($res)>0){
						while($r=mysql_fetch_assoc($res))
						{	
							if($_POST['seleccion']==1){
								$sql =mysql_query("UPDATE noticias SET estado=1 WHERE id_noticia='".$r['id_noticia']."'");
								die("<script>alert('Noticias seleccionadas con éxito.'); parent.location.href='admin_GNoticias.php'</script>");
								exit;	
							}
						}
					}
				}else
					echo("<script>alert('Debe seleccionar entre 2 y 4 noticias.');parent.location.href='admin_GNoticias.php'</script>"); 
			}
		
		//Me guistaria poner el resto de noticias con estado=0 como lo hago?	
	}
?>