Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/07/2006, 09:43
Cluster
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 roilld
solo tengo un problema, que cuando no se encuentran en la base de datos los parametros de la consulta me da el siguiente error:

Warning: mysql_data_seek(): Offset 0 is invalid for MySQL result index 3 (or the query data is unbuffered) in D:\Divelopment\syshotels php\hotels.php on line 127

la linea 127 es la mysql_data_seek. En cambio cuando se encuentran los parametros en la base de datos todo funciona bien.
Como veras .. dicha función "mueve" punteros del resultado .. pero si existe. Por eso antes de aplicar esa función deberías ver si realmente obtuvistes resultados y no sólo esa función .. sino todas las _fetch_ o _result .. acutan sobre el "record-set" generado .. y eso esperan como parámetro. Para eso se usa:

mysql_num_rows() .. y validas con ese dato >0 resultado o lo que esperes. Tu sólo lo obtienes pero no lo validas:

Código PHP:
if (mysql_num_rows($consulta)>0){
// Operas con tu resultado ..
} else {
// no hay resultados .. 
return $arreglob=array();

Tampoco veo claro por qué incluyes la conexión a tu BBDD y seleccion de la BBDD en esa función .. no debería estar junto .. sobre todo cuando se supone que no vas hacer esa consulta SQL a tu BBDD en tu aplicación y/o Script .. es probable que hagas más consultas SQL diferentes en un script (tiempo de ejecución) .. así que deberías separa en funciones si quieres la conexión y selección de la BBDD para llamarla UNA VEZ sólo y cuando la necesites . .sobre todo cuando tienes más de una consulta SQL que ejecutar en un script.

En tu ejemplo ..
mysql_data_seek($consulta,0);

No corresponde .. dicha función moverá el puntero al inicio de un resultado .. pero en tu caso llegas con un resultado siempre diferente .. no recorres el mismo resultado una y otra vez (por lo menos no así como lo haces que ejecutas tu consulta SQL siempre en esa función devolviendo un resultado . .aunque envies a ejecutar la misma sentencia SQL).

mysql_data_seek($consulta,0); es útil cuando tu "separas" o desglosas ese tipo de procesos más; una función para conectarse .. otra para ejecutar la consulta .. otra para procesar tu resultado .. en ese caso si observas que una misma consulta SQL (resultado) lo vas a re-usar .. ahí deberías mover el puntero .. pero eso sería si usases las funciones de mysql_xxx() en tu caso creas un array y así trataras un problema de ese estilo (moviendote por -tu- array).


Es decir .. tu código quedaría en funciones tipo:
Código PHP:
$link1=conectarse_BBDD(...);

$resultado1=DBFunction($link1,$consulta);
$resultado2=DBFunction($link1,$otra_consulta); 
Por si tienes que cambiar de BBDD .. uso el "$link" y se lo paso a la función (sería el $db que de "link de conexión" al aplicar mysql_connect() ..).

En ese caso .. las variables: global $numrecords, $numcampos no podrían ser globales (tendrías confusiones si usas llamadas a conexiones diferentes) .. deberían ir en tu arreglo (array) que devuelves.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.