PHP - CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

 
Vista:
sin imagen de perfil

CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

Publicado por Marcos (5 intervenciones) el 18/08/2017 12:48:20
Buenas,
Soy nuevo en esto de la programación y me estoy iniciando, así que de antemano agradezco la paciencia y aporte que me podáis dar ;-)
Estoy intentando hacer una consulta a mi BBDD MSSQL y mostrarla en una web, el problema que tengo es que sólo me muestra el último registro de esa BBDD. Este es el código en cuestión:
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
<div class="col-md-8 col-md-offset-2">
	<table class="table table-bordered table-responsive">
		<tr>
			<td>Nombre</td>
			<td>Edad</td>
		</tr>
		<?php
			$consulta = "SELECT * FROM Usuarios";
 
			$ejecutar = sqlsrv_query($conn, $consulta);
 
			$i = 0;
 
 
			while ($fila = sqlsrv_fetch_array($ejecutar)){
				$Nombre = $fila['Nombre'];
				$Edad = $fila['Edad'];
				$i++;
 
			}
		?>
 
		<tr align="center">
			<td><?php echo $Nombre; ?></td>
			<td><?php echo $Edad; ?></td>
		</tr>
 
	</table>
 
</div>

Gracias compañeros
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 Vainas
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

Publicado por Vainas (262 intervenciones) el 18/08/2017 13:21:37
Buenas:

cada vez que pasas por el while:

1
2
3
4
5
while ($fila = sqlsrv_fetch_array($ejecutar)){
$Nombre = $fila['Nombre'];
$Edad = $fila['Edad'];
$i++;
}

$nombre, $edad se reemplazan por el nuevo valor asi que al final es como si borras lo que esta dentro de nombre y lo sustituyes por el siguiente asi hasta el final (esto se entiende?). y esto se ejecuta todo dentro de el abrir y cerrar llaves. si metes dentro lo que se imprime no te pasara ya que se sustityen los valores anteriores e inmediatamente se imprimen:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
 
while ($fila = sqlsrv_fetch_array($ejecutar)){
	$Nombre = $fila['Nombre'];
	$Edad = $fila['Edad'];
	$i++;
?>
<tr align="center">
<td><?php echo $Nombre; ?></td>
<td><?php echo $Edad; ?></td>
</tr>
 
<?php
//fijate que aqui cierro el while
}
?>

Saludos.

Actualizo: si te puedo dar un consejo mas de buenas practicas es que no mezcles codigo con html, en lo posible intenta separarlo. las consultas en otro archivo o arriba del todo. cuando quieras recorrer datos lo puedes meter en un array y luego ya haces un simple foreach para mostrar lo que necesitas. quedaria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
//arriba o en otro sitio trabajo mi consulta sql
$consulta = "SELECT * FROM Usuarios";
$ejecutar = sqlsrv_query($conn, $consulta);
$i = 0;
$output = array();
while ($fila = sqlsrv_fetch_array($ejecutar)){
array_push($output, array('Nombre' => $fila['Nombre'], 'Edad' => $fila['Edad'], 'i' => $i++));
?>
<div class="col-md-8 col-md-offset-2">
<table class="table table-bordered table-responsive">
<tr>
<td>Nombre</td>
<td>Edad</td>
</tr>
<?php foreach ($output as $data): ?>
<tr align="center">
<td><?php echo $data['Nombre']; ?></td>
<td><?php echo $data['Edad']; ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>

Es acostumbrarse a trabajar bien desde el principio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
4
Comentar
sin imagen de perfil

CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

Publicado por Marcos (5 intervenciones) el 18/08/2017 13:29:28
Efectivamente era eso ;-) Lo acababa de solucionar así
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
<!-- Hacemos la consulta-->
<?php $consulta="SELECT * FROM usuarios";?>
<?php $resultado=sqlsrv_query($conn, $consulta); ?>
<div class="col-md-8 col-md-offset-2">
	<table class="table table-bordered table-responsive">
		<tr>
			<td>Nombre</td>
			<td>Edad</td>
		</tr>
 
<!-- Obtenemos los registros y lo metemos en la tabla -->
<?php while($rows=sqlsrv_fetch_array($resultado)){?>
 
<tr align="center">
			<td><?php echo $rows['Nombre'] ?> </td>
			<td><?php echo $rows['Edad'] ?></td>
 
		</tr>
 
<?php } ?>
 
 
 
 
	</table>
 
	</div>

Tu solución me parece más fina, jejeje.
Gracias!!!
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
sin imagen de perfil

CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

Publicado por Marcos (5 intervenciones) el 21/08/2017 09:42:17
Gracias por el apunte, tomo nota ;-)
Comentarte que tú código tiene un pequeño fallo, faltaba cerrar el While, lo pego aquí por si a alguien le sirve...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
//arriba o en otro sitio trabajo mi consulta sql
$consulta = "SELECT * FROM Usuarios";
$ejecutar = sqlsrv_query($conn, $consulta);
$i = 0;
$output = array();
while ($fila = sqlsrv_fetch_array($ejecutar)){
array_push($output, array('Nombre' => $fila['Nombre'], 'Edad' => $fila['Edad'], 'i' => $i++));
}
?>
<div class="col-md-8 col-md-offset-2">
<table class="table table-bordered table-responsive">
<tr>
<td>Nombre</td>
<td>Edad</td>
</tr>
<?php foreach ($output as $data): ?>
<tr align="center">
<td><?php echo $data['Nombre']; ?></td>
<td><?php echo $data['Edad']; ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
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 Victorio
Val: 56
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA PHP EN MSSQL SÓLO MUESTRA ÚLTIMO REGISTRO

Publicado por Victorio (29 intervenciones) el 18/08/2017 16:37:20
es porque la variable em el while termina siendo definida como el registro de mayor identificador
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