PHP - Ayuda con sentencia TOP con sqlsrv

 
Vista:
sin imagen de perfil

Ayuda con sentencia TOP con sqlsrv

Publicado por Cesar Eduardo (10 intervenciones) el 02/02/2017 02:42:30
Hola buena noche, quiero ver si me pueden ayudar con problema que tengo, apenas me estoy empapando de programar en php y tengo una duda con el siguiente codigo me podrian ayudar por favor. Pongo el codigo y les explico que necesito y que es lo hace el codigo original.

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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
 
$serverName = 'localhost';
$connectionInfo = array( "Database"=>"nombre", "UID"=>"user", "PWD"=>"passwd");
/* Connect using Windows Authentication. */
try
{
$conn = sqlsrv_connect($serverName, $connectionInfo);
	//echo 'Conectado';
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
 
// Hacer una consulta simple, seleccionar la versión de
// SQLsrv y mostrarla.
 
//print_r($array);
$sql = "SELECT * FROM tExpedientes WHERE IdTipo =1 ORDER BY folio DESC";
$version = sqlsrv_query($conn, $sql);
 
if ($version === false){
	die( print_r( sqlsrv_errors(), true) );
}
$array = array();
while($row = sqlsrv_fetch_array($version)) {
	array_push($array,$row['IdExpediente']);
}
//print_r($array);
//var_dump($array);
if( empty( $array )){
	echo "1";
}
else{
 
if($valor=array_search($_GET['folio'],$array)!=0){
$valor=array_search($_GET['folio'],$array)+1;
echo "$valor";
 
}
}

el la consulta remarcada con negro esa es la que yo cambio por esta otra

$sql = "SELECT TOP 1 * FROM tExpedientes WHERE IdTipo =1 ORDER BY fecha DESC";

el primer codigo me manda los datos de la tabla pero del 2016 el primer registro y yo necesito los del 2017 ya que necesito todos los registros, entonces lo que hago es ordenarlos por fecha y en la consulta de sql si me da el resultado que necesito, pero en la pagina no me manda ningun resultado no se que este haciendo mal, podrian ayudarme un poco por favor.
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con sentencia TOP con sqlsrv

Publicado por xve (6935 intervenciones) el 02/02/2017 17:18:38
Hola Cesar, porque lo pasas a un array, si sqlsrv_fetch_array($version) ya devuelve un array??
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
sin imagen de perfil

Ayuda con sentencia TOP con sqlsrv

Publicado por Cesar Eduardo (10 intervenciones) el 02/02/2017 19:19:33
Hola muchas gracias por la respuesta, la verdad como apenas me estoy enseñando a mandar un arreglo la verdad estoy un poco confundido, entonces lo que me me de de sqlsrv_fetch_array($version) mando a imprimir la variable en la que lo estoy guardando y seria todo?
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
sin imagen de perfil

Ayuda con sentencia TOP con sqlsrv

Publicado por Cesar Eduardo (10 intervenciones) el 02/02/2017 22:37:33
Se podra que me pusieras un ejemplo de como seria para yo darme una idea, lo que pasa que con esto yo lo utilizo para ir contanto cuantas quejas se van acumulando en el año y asi llear el conteo por decir si IdTipo es igual a 1 entonces yo solo muestro las quejas y en base a eso me va diciendo cuantas quejas tengo o cuantas quejas van o que numero de queja es. no se si me di a entender.
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con sentencia TOP con sqlsrv

Publicado por xve (6935 intervenciones) el 03/02/2017 09:09:25
Si exacto, es un array de valores, que lo recorres así:
1
2
3
while($row = sqlsrv_fetch_array($version)) {
...
}

Siendo $row cada uno de los elementos del array que devuelve sqlsrv_fetch_array($version)


Si quieres ver su contenido puedes utilizar:
1
print_r(sqlsrv_fetch_array($version));
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

Ayuda con sentencia TOP con sqlsrv

Publicado por Cesar Eduardo (10 intervenciones) el 17/02/2017 21:27:00
Otra molestia, tengo la tabla tExpedientes en la cual almaceno todos los registros en el cual tengo un campo que voy ingresando el tipo de expediente que se lleva, si es "Queja" = 1, "Asesoria" = 2, "Gestion" = 3, etc, lo cual me sirve para contabilizar cuantas quejas se han hecho por decir en el año, lo que hago en el codigo de arriba es tomar todos los registros que tengan "1" y guardarlos en el array
1
2
3
4
5
6
7
8
9
$sql = "SELECT * FROM tExpedientes WHERE IdTipo =1 ORDER BY folio DESC";
$version = sqlsrv_query($conn, $sql);
if ($version === false){
	die( print_r( sqlsrv_errors(), true) );
}
$array = array();
while($row = sqlsrv_fetch_array($version)) {
	array_push($array,$row['IdExpediente']);
}
y en la parte de abajo los muestro segun el numero en el que esten acomodados por el folio ejemplo - empezando de 1, 2 , 3 , 4 etc,

1
2
3
if($valor=array_search($_GET['folio'],$array)!=0){
$valor=array_search($_GET['folio'],$array)+1;
echo "$valor";
Aqui es lo que me muestra en el circulo rojo.

consulta

lo que me esta dando problemas es que si tengo los registros del 2016 y empece a guardar los del 2017 existen campos los cuales se repiten, por ejemplo del 2016 los que tienen "1" son los numeros 2, 3, 4, 5 y ya el 6 de queja, con el folio 8 tiene el "2" entonces ya no es igual
Entonces en el 2017 tengo 1, 2, 3, 4, 5, 6, 7, 8, 9, y sigo, con el numero "1", cuando llego al folio 9 y lo registroal visualizar no me manda 6, que se supone que seguiria y me manda el consecutivo desde el 1 de 2016 hasta el ultimo del 2017, y me da 327 que es el consecutivo que se lleva desde el folio 1 del 2016 hasta la fecha, aqui mi duda como puedo hacer para que me de solo los del 2017 y no me tome los registros del 2016. que ya estaban

consultaerror

Espero y me diera a entender si no lo explico de otra forma, tambien me puedan ayudar, gracias.
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
sin imagen de perfil

Ayuda con sentencia TOP con sqlsrv

Publicado por Cesar Eduardo (10 intervenciones) el 23/02/2017 22:57:44
Hola, bucandole a sql en los query, me puse a hacer mas convinaciones de order by y por fin me da lo que estaba buscando, por si a alguien le sirve aqui les dejo el codigo, ya cada quien lo acomoda a su conveniencia.

1
$sql = "Select IdTipo, IdExpediente, NoExpediente, year(fecha) as aaa, fecha from tExpedientes where IdTipo=1 order by IdTipo, aaa desc, IdExpediente, NoExpediente desc";
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