Página 1 de 1

Error con bucle while php

Publicado: 08 Jul 2017, 04:12
por Firemanve
Saludos cordiales,disculpen las molestias que pueda causar.

Estoy haciendo un proyecto para la institución a la que pertenezco "Cuerpo de Bomberos del Estado Mérida", resulta que estoy haciendo un historial del mantenimiento de las unidades.

Bien, cuando hago el bucle while + mysql_fetch_array, efectivamente el lee la cantidad de filas que tienen el la unidad X pero no me muestra el primer registro encontrado en pantalla, se salta un espacio el indice, espero em puedan ayudar, saludos cordiales a todos

Por acá les dejo el código:

<?php

include('localhost.php');


$codigo2= $_POST['codigo2'];
$registros = mysql_query("SELECT * FROM historial_rutina where codigo2= '$codigo2' ");
$fila = mysql_fetch_array($registros);
$numunidad=mysql_num_rows($registros);

if ($numunidad==0)
{
echo "La unidad no ha sido registrada aún en el sistema, diríjase al módulo ..::REGISTRO DE UNIDADES::... y proceda a ingresar la misma";

exit();
}
<?php
while ($fila=mysql_fetch_array ($registros))
{

?>
<tr>

<form action="imprimir_rutina.php" method="post">
<td width="26%" align="right" valign="middle"><div align="center"> <?php echo $fila["codigo2"];?>
<input type="hidden" name="codigo2" id="codigo2" value="<?php echo $fila['codigo2'] ?>">
</div> </td>
<td width="25%" align="right" valign="middle"><div align="center"> <?php echo $fila["fecha"];?>
<input type="hidden" name="fechaimprimir" id="fechaimprimir" value="<?php echo $fila['fecha'] ?>">
</div> </td>
<td width="25%" align="right" valign="middle"><div align="center"> <?php echo $fila["funcionario"];?> </div> </td>
<td width="24%" align="right" valign="middle"><div align="center"> <button type="submit" class="btn btn-success">Imprimir Rutina</button> </div> </td>

</form>
</tr>
<tr>

</tr>
<?php
}
?>



Una vez más espero me puedan ayudar, mil gracias.

Re: Error con bucle while php

Publicado: 08 Jul 2017, 07:47
por AlfredoRamos
Antes que nada compañero, te recomiendo urgentemente migrar tu código a MySQLi o PDO y usar sentencias preparadas, tu código no sólo es muy inseguro (lee acerca de injecciones SQL) sino que además es considerado mala práctica bajo los estándares actuales combinar lógica (PHP) con diseño (HTML), lee acerca del modelo MVC.

Dejando a un lado lo anterior, no obtienes el primer resultado porque ya has obtenido los resultados previamente:

Código: Seleccionar todo

$registros = mysql_query("SELECT * FROM historial_rutina where codigo2= '$codigo2' ");
$fila = mysql_fetch_array($registros);

...

while ($fila=mysql_fetch_array ($registros))
La función mysql_fetch_array() cambia el puntero interno, es decir que la primera vez que llamaste esta función obtuviste el primer valor, pero no lo imprimiste, luego en el búcle while comienzas desde el segundo registro.

Elimina la línea que tienes después de registros = mysql_query(...) ya que no la estas usando y es la que te esta creando conflicto.

Te dejo unos enlaces:

PDO: https://php.net/manual/es/book.pdo.php
MySQLi: https://php.net/manual/es/book.mysqli.php
Smarty: http://www.smarty.net/