Foros del Web » Programando para Internet » PHP »

problema con mssql_fetch_array()

Estas en el tema de problema con mssql_fetch_array() en el foro de PHP en Foros del Web. hola, tengo el siguiente problema cuando la query me devuelve una sola fila no se ejecuta el siguiente codigo: Código PHP: while ( $row = mssql_fetch_array ...
  #1 (permalink)  
Antiguo 24/03/2004, 06:43
 
Fecha de Ingreso: junio-2002
Ubicación: Rosario
Mensajes: 230
Antigüedad: 21 años, 10 meses
Puntos: 0
problema con mssql_fetch_array()

hola, tengo el siguiente problema cuando la query me devuelve una sola fila no se ejecuta el siguiente codigo:

Código PHP:
while ($row=mssql_fetch_array($result)) { 
    echo 
$row["numero_sucursal"];

pero si la consulta tiene mas de 1 si se ejecuta, porque me esta sucediendo esto?
La conexion y la query estan bien.

saludos
__________________
www.enricodev.com.ar
web applications development studio

-- You can be anything you want to be.--
  #2 (permalink)  
Antiguo 24/03/2004, 06:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Tienes antes de ese codigo otro mysql_fetch_*() del mismo resultado? Si es asi, esa es la razon.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 24/03/2004, 06:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En teoría las funciones xxx_fetch_array() lo que hacen es entregar el primer registro de ese "record-set" generado y mover el puntero interno de la consulta una posición hacia adelante .. si no hay más que posiciones que mover (llegó al final del record-set) devuelve un "false" ..

El bucle while() que usas hace eso .. "mientras no sea false ves almacenando en $row el registro actual .. y vueve a obtener otro registro del record-set ...

Tienes algún otro mssql_fetch_array() antes de ese del bucle while() ..? (recuerda que esa función obtiene un registro y mueve el puntero .....)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 25/03/2004, 06:29
 
Fecha de Ingreso: junio-2002
Ubicación: Rosario
Mensajes: 230
Antigüedad: 21 años, 10 meses
Puntos: 0
antes que eso tengo

if (!mssql_fetch_array($result)){

}

y despues el while

saludos
__________________
www.enricodev.com.ar
web applications development studio

-- You can be anything you want to be.--
  #5 (permalink)  
Antiguo 25/03/2004, 07:40
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Pues ese es el problema. Con esa linea lees el primer registro. Ni siquiera lo recoges en una variable. No usas sus datos. Luego en el while primero ejecuta el otro mssql_fetch y recoge el segundo registro y lo muestra.

Ahora no se si hay una mssql_num_rows() o semejante que te devuelva el numero de registros devueltos. Si la tiene, usala para el if.

Si no, en lugar del while usa un do..while (http://www.php.net/manual/en/control...s.do.while.php). Es semejante al while, pero ejecuta el contenido del bucle antes de ejecutar la condicion. Asi podrias usar el if tal como lo tienes, solo que añadiendole la lectura del registro:
Código PHP:
if (!($row=mssql_fetch_array($result))){ 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 25/03/2004, 09:06
 
Fecha de Ingreso: junio-2002
Ubicación: Rosario
Mensajes: 230
Antigüedad: 21 años, 10 meses
Puntos: 0
ya lo pude solucionar gracias a sacar esa linea

gracias a todos
__________________
www.enricodev.com.ar
web applications development studio

-- You can be anything you want to be.--
  #7 (permalink)  
Antiguo 10/10/2006, 14:25
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Piluso, como lo solucionastes..? Pon el ejem:
__________________
Necesito aprender para compartir mi saber...
  #8 (permalink)  
Antiguo 10/10/2006, 14:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Mulato Ver Mensaje
Piluso, como lo solucionastes..? Pon el ejem:
(Hace 2 años de este mensaje!!!).

Será mejor que reformules tu pregunta.

De hecho existe la función mencionada para ver el n° de resultados:

mssql_num_rows()
http://www.php.net/manual/es/functio...l-num-rows.php

Código PHP:
if (mssql_num_rows($result) > 0){
   while (
$row=mssql_fetch_array($result)) {  
      echo 
$row["numero_sucursal"]."<br>"
   }
} else {
  echo 
"No hay resultados";


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 11/10/2006, 06:43
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Ok...
tengo esto en la el archivo uno.php
//Se invoca conexión de Informix...
include_once 'src_cnn_cont.php';
//Conexión a Informix...
$ifx_cnn = new cnn();
$cnn_ifx = $ifx_cnn->ifxcnn();
//Realiza una consulta para listar la busqueda de datos comunes...
$ifxpers = ("select db.id_usu, bd.nombre bd.apellido bd.telf FROM bd WHERE id_usu = '$var' ");
$ifxpers=ifx_query($ifxpers, $cnn_ifx);
$num_pers = ifx_num_rows ($ifxpers);
}

y en la pagina dos.php esto

if ($num_pers > -1){
while($ifxrow=ifx_fetch_row($ifxpers)){
echo "<tr>";
echo "<td class='cel_blan_lin' width='35%'>";
echo $ifxrow['id_usu']; echo "</td>";
echo $ifxrow['id_nombre']; echo "</td>";
echo "</tr>";
}
ifx_close();
}

Así si funciona pero si hago...
$total = ifx_num_rows($ifxpers);
siempre me sale en 0 pero si
$total = ifx_num_field($ifxpers);
me sale un valor 8 ..?

probe tu ejemplo colocando
if (mssql_num_rows($ifxpers) > 0){ antes del while y me sale que la variable $ifxpers no esta definida..?
__________________
Necesito aprender para compartir mi saber...

Última edición por Mulato; 11/10/2006 a las 06:54
  #10 (permalink)  
Antiguo 11/10/2006, 06:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Mulato Ver Mensaje
Ok...
tengo esto en la el archivo uno.php
//Se invoca conexión de Informix...
include_once 'src_cnn_cont.php';
//Conexión a Informix...
$ifx_cnn = new cnn();
$cnn_ifx = $ifx_cnn->ifxcnn();
//Realiza una consulta para listar la busqueda de datos comunes...
$ifxpers = ("select personal.is_cedula AS cons_ced, personal.is_apellido AS cons_apellido, personal.is_nombre AS cons_nombre, personal.chr_tel_oficina AS cons_pbax, personal.is_celular AS cons_celular, personal.chr_correo AS cons_correo, estructura_sap.sigla AS cons_siglas, ubic_fisica.chr_des_ubic_fis AS cons_asig " .
" FROM personal, estructura_sap, ubic_fisica" .
" WHERE personal.in_codigo = estructura_sap.codigo AND personal.chr_ubic_fisica = ubic_fisica.chr_ubic_fisica " .
" AND $variable order by personal.is_apellido");
$ifxpers=ifx_query($ifxpers, $cnn_ifx);
$total = ifx_num_rows($ifxpers);
$num_pers = ifx_num_rows ($ifxpers);
}
Disculpame . .pero ya estás mezlcando "peras con manzanas" .. Entras a este mensaje a "revivirlo" cuando usan "MS SQL Server y las extensioens mssql de PHP directas" .. ahora tu vienes con otro motor de BBDD.

Por favor, sé ordenado. Realiza tu pregunta en un tema nuevo, indica un título del mensaje coherente y sobre todo explica tu problema concreto. Pusistes código a ver si "adivinamos" que pasa, que no te funciona como esperas o que quieres hacer.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 11/10/2006, 07:38
Avatar de Mulato  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 158
Antigüedad: 22 años, 4 meses
Puntos: 0
Tienes rzón replanteare la question...
__________________
Necesito aprender para compartir mi saber...
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 04:46.