Foros del Web » Programando para Internet » PHP »

PHP OO Modificar datos solo imprime los 100 primeros

Estas en el tema de Modificar datos solo imprime los 100 primeros en el foro de PHP en Foros del Web. Buenas, Tengo un problema un tanto extraño en un proceso muy simple. Tengo un formulario con varios campos el cual se autorellena con valores de ...
  #1 (permalink)  
Antiguo 16/01/2018, 03:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Modificar datos solo imprime los 100 primeros

Buenas,

Tengo un problema un tanto extraño en un proceso muy simple. Tengo un formulario con varios campos el cual se autorellena con valores de una tabla mysql. Es el típico formulario para modificar datos.

Esta es la estructura (simplificada para hacerlo más fácil):

Código HTML:
<form id="modificarDatos" name="modificarDatos" method="post" action="modificaDatos.php">
<table class="verUsuarios">
 <tbody>
	<tr class="modificarDatos">
		<td width="160">Nombre</td>
		<td width="50">Móvil</td>
		<td width="50">Fijo</td>
		<td width="95">Otro</td>
	</tr>
	
<?php
			
	$contador = 0;
						
	$sql = "SELECT *
  		    FROM usuarios
		    ORDER BY id";
						 
	$res = mysql_query ($sql);
				
	while($row = mysql_fetch_array( $res))
	{
					
				
		$contador++;
					
?>
        <tr>
                <td><?php echo $row["nombre"];	?></td>
		<td><input name="<?php echo ('M'.$contador); ?>" id="movil" value="<?php echo $row["movil"]; ?>"></td>
		<td><input name="<?php echo ('F'.$contador); ?>" id="fijo" value="<?php echo $row["fijo"]; ?>"></td>
                <td><input name="<?php echo ('O'.$contador); ?>" id="otro" value="<?php echo $row["otro"]; ?>"></td>
	</tr>			

<?php			
	}	
						
	mysql_close ($conexion); /*Cerramos la base de datos*/				
			
?>
</tbody>
</table>
	<br>
	<br>
	<input type="submit" name="Submit" class="modificarButton" value="Modificar" onclick="return confirm('¿Estás seguro que quieres modificar los datos?')"/>
</form> 
ModificaDatos.php tiene:

Código PHP:
 <?php
            
    $contador 
0;
                            
    
$sql "SELECT *
           FROM usuarios
           ORDER BY id"
;
                         
    
$res mysql_query ($sql);
                
    while(
$row mysql_fetch_array$res))
    {
                    
                
        
$contador++;

                
$movil 'M'.$contador;
        
$fijo 'F'.$contador;
        
$otro 'O'.$contador;

                
/*Debug*/

                
echo 'Contador: '.$contador;
        echo 
'<br>';
        echo 
'Nombre: '.$row["nombre"];
        echo 
'<br>';
        echo 
'Movil:'.$_POST[$movil];
        echo 
'<br>';
        echo 
'Fijo:'.$_POST[$fijo];
        echo 
'<br>';
                echo 
'Otro:'.$_POST[$otro];
        echo 
'<br>';
       }
?>
Al imprimir los datos, $contador está bien porque cuenta bien los 500 y pico registros. Sin embargo, a partir del 100 (justo en ese número tan redondo) deja de imprimir Movil, Fijo y Otro. Solo imprime Contador y Nombre. Da igual si modifico algún campo o no, siempre hace lo mismo. No me salta ningún error, pero no sé muy bien qué pasa.

¿Alguien tiene alguna idea de por qué pasa esto?
  #2 (permalink)  
Antiguo 16/01/2018, 17:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Modificar datos solo imprime los 100 primeros

Te recomiendo paginar, teniendo en cuenta que hay una cantidad de información específica que php procesa al recibir una petición.

Por supuesto, también puedes intentar cambiar configuraciones en php.ini, como post_max_size, max_input_vars, etc. Y creo recordar que también hay una etiqueta HTML para este propósito, lamentablemente olvidé cuál.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/01/2018, 01:34
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: Modificar datos solo imprime los 100 primeros

Cita:
Iniciado por Triby Ver Mensaje
Te recomiendo paginar, teniendo en cuenta que hay una cantidad de información específica que php procesa al recibir una petición.

Por supuesto, también puedes intentar cambiar configuraciones en php.ini, como post_max_size, max_input_vars, etc. Y creo recordar que también hay una etiqueta HTML para este propósito, lamentablemente olvidé cuál.
Buenas Triby,

Muchas gracias por tu respuesta. He cambiado post_max_size a sin límite pero sigo teniendo el mismo problema.

max_input_vars está puesto a 1000 pero comentado, por lo que entiendo que no aplica.

Lamentablemente me es difícil paginar porque no sé muy bien como tratar el paso de datos para actualizar la base de datos una vez modificados.

Alguna otra idea?

Muchas gracias por anticipado!
  #4 (permalink)  
Antiguo 17/01/2018, 07:04
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Modificar datos solo imprime los 100 primeros

Para páginar es fácil usas limit y offset donde limit es la cantidad de registros a ver y offset desde que registro empezar

SELECT * FROM usuarios ORDER BY id ASC LIMIT a OFFSET b

Cambia a y b por tus valores.
  #5 (permalink)  
Antiguo 17/01/2018, 18:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Modificar datos solo imprime los 100 primeros

Siguiendo la sugerencia de alvaro_trewhela, solo modifica los nombres de campos, en lugar del valor del contador, agrega la id del registro.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: formulario, imprime, modificar, mysql, nombre, primeros, select, simple, sql, tabla
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 17:10.