Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema Resultado Siempre Presente

Estas en el tema de Problema Resultado Siempre Presente en el foro de Mysql en Foros del Web. Buen dia! pido disculpas si este no es el medio adecuado para solicitar ayuda, pero aqui va mi problema. tengo una colsulta que hago en ...
  #1 (permalink)  
Antiguo 24/06/2008, 21:24
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema Resultado Siempre Presente

Buen dia!

pido disculpas si este no es el medio adecuado para solicitar ayuda, pero aqui va mi problema.

tengo una colsulta que hago en la base de datos para tomar el id del registro con la fecha mas mayor de un tipo en especifico, esta es.

SELECT id FROM article WHERE article_type = 1 ORDER BY apointmentdate DESC LIMIT 1

la consulta me trae el valor correcto cuando la consulto localmente, y cuando usando MySQL Administrator me conecto directamente al servidor, pero cuando la consulto desde un script de php me trae siempre un numero, que aunque sin existir el registro en la base da datos no se altera, este valor es 7 aunque no se si sirva de algo, verifique informacion referente al cache de MySQL, pero dice que con solo variar la consulta un poco el posible cache existente se debe eliminar. he hecho seguimiento a los datos obtenidos por el script desde la base de datos y solo falla cuando lo consulto con el script; creanme que soy lo suficientemente experimentado en MySQL como para saber que no estoy haciendo algo mal yo, pero no es descartable. espero ayuda de alguien.

el servidor MySQL es version 4.1.21

gracias!
  #2 (permalink)  
Antiguo 24/06/2008, 23:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema Resultado Siempre Presente

Si el id es numérico y autoincrement, podías probar esto para solucionarlo:

SELECT id FROM article WHERE article_type = 1 ORDER BY id DESC LIMIT 1

No obstante, yo también probaría el script de PHP en local y si sale lo mismo, el problema estaría en el PHP y no en el Servidor.
Muéstranos cómo tienes configurados los campos apointmentdate, id y article_type en la base (sus tipos); y si no viéramos nada, y el problema lo causara el modo en que se haces la consulta en PHP, tendrías que mostrar la sintaxis empleada en el foro PHP. Otra cosa que podrías hacer es seleccionar apointmentdate en la consulta del script y hacerle un echo para ver qué muestra exactamente:
SELECT id, apointmentdate FROM article WHERE article_type = 1 ORDER BY apointmentdate DESC LIMIT 1

a ver si encontramos el problema, aunque la primera consulta te lo solucionara por la vía de cambiar el campo que te causa el problema

Última edición por jurena; 25/06/2008 a las 00:02
  #3 (permalink)  
Antiguo 25/06/2008, 08:24
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema Resultado Siempre Presente

Jurena, te agradezco enormemente tu pronta ayuda, pero lastimosamente todo lo que me dices que haga ya lo hice, aqui pongo el query de la tabla. y las lineas de codigo que hacen la consulta. el problema con la consulta como me la muestras es que la misma tabla la uso para noticias y eventos y precisamente article_type = 1 son las noticias, estas noticias no siempre se ingresan en orden cronologico, asi que no me sirve.

Código:
CREATE TABLE article (
  id int(10) unsigned NOT NULL auto_increment,
  article_type int(10) unsigned NOT NULL,
  apointmentdate datetime NOT NULL,
  title varchar(255) collate utf8_unicode_ci NOT NULL,
  description text collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (id),
  KEY news_FKIndex2 (article_type)
);

CREATE TABLE article_type (
  id int(10) unsigned NOT NULL auto_increment,
  name varchar(16) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (id)
);
aqui va el script donde hago la consulta

Código:
function getLastId(){
		$getid = $this->db->query("SELECT id FROM article WHERE article_type = 1 ORDER BY apointmentdate DESC LIMIT 1");
		if (mysql_num_rows($getid)>0){
			$arr_array = mysql_fetch_array($getid);
			return $arr_array[0]['id'];
		} else {
			return 0;
		}
	}
la funcion corre dentro de una clase y hace uso de una clase que me gestiona lo referente a la base de datos que realice hace unos meses y funciona correctamente.

Otra cosa localmente me funciona bien la consulta SQL.
  #4 (permalink)  
Antiguo 25/06/2008, 09:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema Resultado Siempre Presente

He probado con PHP y a mí me funciona el script siguiente:
Código:
<?php 
$link = mysql_connect ('localhost', 'uno', 'otro');
	if (!$link){
		echo 'error al conectar';
		die;
	}
	$bd = mysql_select_db('diegoluisr');
	if (!$bd){
		echo 'error al seleccionar la base d datos';
		die;
	}
	mysql_query ("SET NAMES 'utf8'"); 


function getLastId(){
		$query= "SELECT id FROM article WHERE article_type = 1 ORDER BY apointmentdate DESC LIMIT 1";
		$getid=mysql_query($query);
		if (mysql_num_rows($getid)>0){
			$arr_array = mysql_fetch_array($getid);
			return $arr_array[0]['id'];
		} else {
			return 0;
		}
	}
	echo getLastId();
?>
Comprueba las versiones de PHP que usas en local y la del servidor, y la sintaxis de tu PHP

Última edición por jurena; 25/06/2008 a las 09:44
  #5 (permalink)  
Antiguo 25/06/2008, 10:50
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema Resultado Siempre Presente

la versión local de php es 5.1.1, y la del servidor es 4.4.8, el reporte de errores esta activo para mostrar todos los tipos, como puedes ver el script funciona correctamente, en el servidor funciona todo bien a excepciona del inconveniente que se me presenta. el script no me reporta ningún error cuando corre en el servidor. realmente es algo que no entiendo.

la base de datos no creo que sea, ya que al usar MySQL administrator como cliente remoto, y hacer la consulta, esta me trae el valor correcto. pienso que podria ser algo con las varsion de las funciones MySQL de php pero ni idea.
  #6 (permalink)  
Antiguo 25/06/2008, 11:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema Resultado Siempre Presente

Has probado la sintaxis php que te he puesto yo. Sube un archivo php simple con esta sintaxis (adaptando los datos de la conexión, el nombre de la base, etc.) y lánzalo desde internet. Si todo va bien, es probable que tenga que ver con lo que tú dices...
  #7 (permalink)  
Antiguo 25/06/2008, 12:20
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema Resultado Siempre Presente

nada!

ya lo probe como lo pusiste y no funciono.
  #8 (permalink)  
Antiguo 25/06/2008, 12:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema Resultado Siempre Presente

¿pero lo probaste dentro de la clase o fuera de ella...?
  #9 (permalink)  
Antiguo 25/06/2008, 12:56
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema Resultado Siempre Presente

fuera de la clase tal como lo propusiste
  #10 (permalink)  
Antiguo 25/06/2008, 15:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema Resultado Siempre Presente

la verdad, ya no se me ocurre nada, salvo que en el servidor apointmentdate sea una palabra reservada. Yo en mi debugueo particular trataría de mostrar en el servidor la fecha, es decir, añadiría el campo apointmentdate al select y luego haría un echo para mostrarlo, pero no desde la clase, sino en ese archivo de prueba; o haría un alias select apointmentdate as ffecha... order by ffecha. Trataría de descartar estas causas...
  #11 (permalink)  
Antiguo 26/06/2008, 22:25
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Problema Resultado Siempre Presente

Cerrado por poner código de php.

jurema, esta muy pero muy bien que te guste ayudar, pero sos vos quien responde a cada momento con código y estoy cansado de que leas la función de base de datos.

Te repito que está bien, pero si ves que la consulta se acomoda mejor en PHP, reporta el mensaje para que sea movido a esa sección y contestas con código.

Si no lo haces y por la cantidad de veces que respondes en BD con php, voy a tener que amonestarte. No quiero hacerlo porque ayudas, pero quiero tener también orden en esta sección.

Espero que lo comprendas y lo tomes en cuenta.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:29.