Thread View: chile.comp.programacion
11 messages
11 total messages
Started by T_Q_LEO
Mon, 14 Aug 2006 16:17
Script en PHP
Author: T_Q_LEO
Date: Mon, 14 Aug 2006 16:17
Date: Mon, 14 Aug 2006 16:17
29 lines
1901 bytes
1901 bytes
Saludos: En mi script de PHP poseia la siguiente instruccion para consultar datos de una base MYSQL: "select * from lider where MONTH(FROM_UNIXTIME(fecha))='$mescons' and YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT ".$st.",".$pp; Dicha instrucci�n funcionaba sin problemas, pero luego me di cuenta de que debia realizar un filtrado m�s y agregue el siguiente parametro cliente='$empresa' quedando la instruccion como sigue: select * from lider where cliente='$empresa' and MONTH(FROM_UNIXTIME(fecha))='$mescons' and YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT ".$st.",".$pp; Por una extra�a raz�n dicha consulta no me arroja ningun resultado, he intentado colocar el parametro de cliente en otras partes de la instruccion pero aun asi no me da resultados. Espero puedan orientarme a encontrar una solucion a mi problema. Agradeciendo de antemano se despide atentamente, -- Ricardo Carcass�n Santiago - Chile
Re: Script en PHP
Author: Eduardo Quiroz Salinas
Date: Mon, 14 Aug 2006 16:42
Date: Mon, 14 Aug 2006 16:42
44 lines
2537 bytes
2537 bytes
T_Q_LEO escribi�: > Saludos: > > En mi script de PHP poseia la siguiente instruccion para consultar datos de > una base MYSQL: > > "select * from lider where MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; > > Dicha instrucci�n funcionaba sin problemas, pero luego me di cuenta de que > debia realizar un filtrado m�s y agregue el siguiente parametro > cliente='$empresa' quedando la instruccion como sigue: > > select * from lider where cliente='$empresa' and > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; > > Por una extra�a raz�n dicha consulta no me arroja ningun resultado, he > intentado colocar el parametro de cliente en otras partes de la instruccion > pero aun asi no me da resultados. > > Espero puedan orientarme a encontrar una solucion a mi problema. > > Agradeciendo de antemano se despide atentamente, > Sin conocer lo que hay en la base de datos puede ser complicado. En primera instancia, se me ocurrir�a, por ejemplo, que empresa es un entero y tu lo comparas como si fuera String. Quiz� eso traiga problemas. Podr�as dar una breve descripci�n de la tabla y/o un par de tuplas? Saludos!! -- Eduardo Quiroz Salinas Ingeniero Civil Inform�tico eduardoquiroz@vtr.net -- Linux user number 344659 KDE User 2453 "...Los que pueden ser virtuosos sin dios, son la desesperaci�n de los creyentes..." ---------------------------------------------------
Re: Script en PHP
Author: Nitron
Date: Mon, 14 Aug 2006 16:51
Date: Mon, 14 Aug 2006 16:51
48 lines
2435 bytes
2435 bytes
Hola, �Haz probado hacer un echo de la instruccion, imprimirla en cualquier parte de la pagina y despues pegarla en phpmyadmin?. En una de esas MySql te indica donde esta el error, o quizas la consulta efectivamente devuelve vacio? Quizas inventarte un registro que efectivamente cumpla la condicion AND que estas poniendo. Salu2. Nitron. "T_Q_LEO" <programNOSPAM@inspectorate.cl> escribi� en el mensaje news:44e09fc4$1_1@nova.entelchile.net... > Saludos: > > En mi script de PHP poseia la siguiente instruccion para consultar datos > de > una base MYSQL: > > "select * from lider where MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; > > Dicha instrucci�n funcionaba sin problemas, pero luego me di cuenta de que > debia realizar un filtrado m�s y agregue el siguiente parametro > cliente='$empresa' quedando la instruccion como sigue: > > select * from lider where cliente='$empresa' and > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; > > Por una extra�a raz�n dicha consulta no me arroja ningun resultado, he > intentado colocar el parametro de cliente en otras partes de la > instruccion > pero aun asi no me da resultados. > > Espero puedan orientarme a encontrar una solucion a mi problema. > > Agradeciendo de antemano se despide atentamente, > > -- > Ricardo Carcass�n > Santiago - Chile > >
Re: Script en PHP
Author: T_Q_LEO
Date: Mon, 14 Aug 2006 16:59
Date: Mon, 14 Aug 2006 16:59
66 lines
3178 bytes
3178 bytes
Hola: No son campos de tipo entero sino mas bien VARCHAR: id bigint(20) informe varchar(255) ruta varchar(255) fecha varchar(255) comentario varchar(255) usuario varchar(50) cliente varchar(255) Espero pueda servirte esta informacion, agradeciendote de antemano tu tiempo se despide atentamente, -- Ricardo Carcass�n Santiago - Chile "Eduardo Quiroz Salinas" <eduardoquiroz@vtr.net> escribi� en el mensaje news:ebq8go$hge$1@news.nivel5.cl... > T_Q_LEO escribi�: > > Saludos: > > > > En mi script de PHP poseia la siguiente instruccion para consultar datos de > > una base MYSQL: > > > > "select * from lider where MONTH(FROM_UNIXTIME(fecha))='$mescons' and > > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > > ".$st.",".$pp; > > > > Dicha instrucci�n funcionaba sin problemas, pero luego me di cuenta de que > > debia realizar un filtrado m�s y agregue el siguiente parametro > > cliente='$empresa' quedando la instruccion como sigue: > > > > select * from lider where cliente='$empresa' and > > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > > ".$st.",".$pp; > > > > Por una extra�a raz�n dicha consulta no me arroja ningun resultado, he > > intentado colocar el parametro de cliente en otras partes de la instruccion > > pero aun asi no me da resultados. > > > > Espero puedan orientarme a encontrar una solucion a mi problema. > > > > Agradeciendo de antemano se despide atentamente, > > > Sin conocer lo que hay en la base de datos puede ser complicado. > En primera instancia, se me ocurrir�a, por ejemplo, que empresa es un > entero y tu lo comparas como si fuera String. Quiz� eso traiga > problemas. Podr�as dar una breve descripci�n de la tabla y/o un par de > tuplas? > Saludos!! > > -- > Eduardo Quiroz Salinas > Ingeniero Civil Inform�tico > eduardoquiroz@vtr.net > -- > Linux user number 344659 > KDE User 2453 > "...Los que pueden ser virtuosos sin dios, > son la desesperaci�n de los creyentes..." > ---------------------------------------------------
Re: Script en PHP
Author: T_Q_LEO
Date: Mon, 14 Aug 2006 17:12
Date: Mon, 14 Aug 2006 17:12
66 lines
3008 bytes
3008 bytes
Muchas gracias por la ayuda de ambos pero ya pude dar con la solucion :D Realice la famosa tecnica de hacerle un echo a la instruccion sql y ahi me di cuenta de que la variable $empresa estaba vacia, me falto asignar el rut de cliente que tenia almacenada en mi variable de sesion. Muchas gracias y disculpen las molestias =) -- Ricardo Carcass�n Santiago - Chile "Nitron" <roarriagadaNOSPAM@vtr.net> escribi� en el mensaje news:ebq9m7$hs3$1@news.nivel5.cl... > Hola, > > �Haz probado hacer un echo de la instruccion, imprimirla en cualquier parte > de la pagina y despues pegarla en phpmyadmin?. En una de esas MySql te > indica donde esta el error, o quizas la consulta efectivamente devuelve > vacio? > > Quizas inventarte un registro que efectivamente cumpla la condicion AND que > estas poniendo. > > Salu2. > Nitron. > > "T_Q_LEO" <programNOSPAM@inspectorate.cl> escribi� en el mensaje > news:44e09fc4$1_1@nova.entelchile.net... > > Saludos: > > > > En mi script de PHP poseia la siguiente instruccion para consultar datos > > de > > una base MYSQL: > > > > "select * from lider where MONTH(FROM_UNIXTIME(fecha))='$mescons' and > > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > > ".$st.",".$pp; > > > > Dicha instrucci�n funcionaba sin problemas, pero luego me di cuenta de que > > debia realizar un filtrado m�s y agregue el siguiente parametro > > cliente='$empresa' quedando la instruccion como sigue: > > > > select * from lider where cliente='$empresa' and > > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > > ".$st.",".$pp; > > > > Por una extra�a raz�n dicha consulta no me arroja ningun resultado, he > > intentado colocar el parametro de cliente en otras partes de la > > instruccion > > pero aun asi no me da resultados. > > > > Espero puedan orientarme a encontrar una solucion a mi problema. > > > > Agradeciendo de antemano se despide atentamente, > > > > -- > > Ricardo Carcass�n > > Santiago - Chile > > > > > >
Re: Script en PHP
Author: Cristian Gutierrez
Date: Mon, 14 Aug 2006 18:00
Date: Mon, 14 Aug 2006 18:00
37 lines
1887 bytes
1887 bytes
Hoy en la tarde, T. Q. LEO dijo: [...] > select * from lider where cliente='$empresa' and > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; Una sugerencia de estilo: es m�s legible (y hasta dir�a que un poco m�s mantenibile) usar `sprintf' para componer sentencias SQL: ,---- | $template =<<<ENDOFTEMPLATE; | | SELECT * | FROM lider | WHERE cliente = '%s' | AND MONTH(FROM_UNIXTIME(fecha)) = '%s' | AND YEAR(FROM_UNIXTIME(fecha)) = '%s' | ORDER BY fecha | DESC LIMIT %d,%d | | ENDOFTEMPLATE | | $query = sprintf($template, | $empresa, $mescons, $anocons, $st, $pp); `---- Lo ideal seria usar �prepared statements�, pero no siempre est�n disponibles (entiendo que para PHP5 + MySQL 4.1 s�). Salu2, -- Guti Code runs faster when Chuck Norris watches it.
Re: Script en PHP
Author: Cristian Gutierrez
Date: Mon, 14 Aug 2006 18:06
Date: Mon, 14 Aug 2006 18:06
37 lines
1973 bytes
1973 bytes
Hoy en la tarde, T. Q. LEO dijo: [...] > select * from lider where cliente='$empresa' and > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > ".$st.",".$pp; Una sugerencia de estilo: es m�s legible (y hasta dir�a que un poco m�s mantenible) usar `sprintf' para componer sentencias SQL: ,---- | $template =<<<ENDOFTEMPLATE; | | SELECT * | FROM lider | WHERE cliente = '%s' | AND MONTH(FROM_UNIXTIME(fecha)) = '%s' | AND YEAR(FROM_UNIXTIME(fecha)) = '%s' | ORDER BY fecha DESC | LIMIT %d,%d | | ENDOFTEMPLATE | | $query = sprintf($template, | $empresa, $mescons, $anocons, $st, $pp); `---- Lo ideal ser�a usar �prepared statements�, pero no siempre est�n disponibles (entiendo que para PHP5 + MySQL 4.1 s�). Salu2, -- Guti Code runs faster when Chuck Norris watches it.
Re: Script en PHP
Author: T_Q_LEO
Date: Mon, 14 Aug 2006 18:22
Date: Mon, 14 Aug 2006 18:22
51 lines
2207 bytes
2207 bytes
Hola: Es una interesate sugerencia la que me haces, creo que la implementare en futuros proyectos que tenga en PHP. Gracias =) -- Ricardo Carcass�n Depto. Inform�tica Inspectorate Griffith S.A Santiago - Chile "Cristian Gutierrez" <crgutier@dcc.uchile.cl> escribi� en el mensaje news:87fyfzi4dm.fsf@guti.cl... > Hoy en la tarde, T. Q. LEO dijo: > > [...] > > > select * from lider where cliente='$empresa' and > > MONTH(FROM_UNIXTIME(fecha))='$mescons' and > > YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT > > ".$st.",".$pp; > > Una sugerencia de estilo: es m�s legible (y hasta dir�a que un poco m�s > mantenibile) usar `sprintf' para componer sentencias SQL: > > ,---- > | $template =<<<ENDOFTEMPLATE; > | > | SELECT * > | FROM lider > | WHERE cliente = '%s' > | AND MONTH(FROM_UNIXTIME(fecha)) = '%s' > | AND YEAR(FROM_UNIXTIME(fecha)) = '%s' > | ORDER BY fecha > | DESC LIMIT %d,%d > | > | ENDOFTEMPLATE > | > | $query = sprintf($template, > | $empresa, $mescons, $anocons, $st, $pp); > `---- > > Lo ideal seria usar �prepared statements�, pero no siempre est�n > disponibles (entiendo que para PHP5 + MySQL 4.1 s�). > > Salu2, > > -- > Guti > Code runs faster when Chuck Norris watches it.
Re: Script en PHP
Author: Jos� Miguel Santib��ez
Date: Mon, 14 Aug 2006 18:25
Date: Mon, 14 Aug 2006 18:25
73 lines
3389 bytes
3389 bytes
En el cap�tulo anterior (news:87ac67i43m.fsf@guti.cl), Cristian Gutierrez
<crgutier@dcc.uchile.cl> dijo:
> Hoy en la tarde, T. Q. LEO dijo:
>
> [...]
>
>> select * from lider where cliente='$empresa' and
>> MONTH(FROM_UNIXTIME(fecha))='$mescons' and
>> YEAR(FROM_UNIXTIME(fecha))='$anocons' order by fecha DESC LIMIT
>> ".$st.",".$pp;
>
> Una sugerencia de estilo: es m�s legible (y hasta dir�a que un poco m�s
> mantenible) usar `sprintf' para componer sentencias SQL:
>
> ,----
>| $template =<<<ENDOFTEMPLATE;
>|
>| SELECT *
>| FROM lider
>| WHERE cliente = '%s'
>| AND MONTH(FROM_UNIXTIME(fecha)) = '%s'
>| AND YEAR(FROM_UNIXTIME(fecha)) = '%s'
>| ORDER BY fecha DESC
>| LIMIT %d,%d
>|
>| ENDOFTEMPLATE
>|
>| $query = sprintf($template,
>| $empresa, $mescons, $anocons, $st, $pp);
> `----
>
> Lo ideal ser�a usar �prepared statements�, pero no siempre est�n
> disponibles (entiendo que para PHP5 + MySQL 4.1 s�).
>
Yo no se cuan "ideal" es realmente eso...
Sobre todo, si se analiza la forma que tom� esta pregunta: hab�a un query
que funcionaba y despu�s se dio cuenta que le faltaba un par�metro
importante (el filtro por cliente)...
No quiero sonar pedante, pero ante un nivel tan bajo de dise�o previo,
pretender usar templates o prepared statments es un salto importante...
Por supuesto que, en beneficio de la legibilidad es bueno gastar un par de
"espacios" para identar el sql...
Algo as� como:
// preparar par�metros:
$cliente = $empresa;
$mescons = ... ;
$anocons = ... ;
$limit1 = $st ;
$limit2 = $pp ;
$query = select *
from lider
where cliente = '$cliente'
and MONTH(FROM_UNIXTIME(fecha)) = '$mescons'
and YEAR(FROM_UNIXTIME(fecha)) = '$anocons'
order by fecha DESC
LIMIT $limit1,$limit2";
Eso permite manejar adecuadamente el query en caso de necesitar nuevos
filtros posteriormente...
Saludos!
--
Apoye a la campa�a de alfabetizaci�n y | Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su | <jms@nivel5.cl>
lugar y el lugar exacto para cada post | <http://caos.cl/jms>
Re: Script en PHP
Author: Cristian Gutierrez
Date: Mon, 14 Aug 2006 20:11
Date: Mon, 14 Aug 2006 20:11
39 lines
2513 bytes
2513 bytes
Hoy en la tarde, Jos� Miguel Santib��ez dijo: > En el cap�tulo anterior (news:87ac67i43m.fsf@guti.cl), Cristian Gutierrez > <crgutier@dcc.uchile.cl> dijo: [...] >> Lo ideal ser�a usar �prepared statements�, pero no siempre est�n >> disponibles (entiendo que para PHP5 + MySQL 4.1 s�). > > Yo no se cuan "ideal" es realmente eso... * Legibilidad (se separa la consulta de los par�metros) * Seguridad (chequeo de los tipos de los par�metros y escape de strings) * Eficiencia (consulta parseada una sola vez; se nota harto en los ciclos) Si bien "ideal" es algo fuerte, me quedar�a de todas formas con "bastante mejor"; rara vez puedes mejorar esos tres aspectos a la vez! [ Puede deberse tambi�n a la -justificable o no- urticaria que me produce el interpolar strings :-) ] > Sobre todo, si se analiza la forma que tom� esta pregunta: hab�a un query > que funcionaba y despu�s se dio cuenta que le faltaba un par�metro > importante (el filtro por cliente)... > > No quiero sonar pedante, pero ante un nivel tan bajo de dise�o previo, > pretender usar templates o prepared statments es un salto importante... Pero si puedes redise�ar despu�s de tener c�digo m�s ordenado, mejor :) > Por supuesto que, en beneficio de la legibilidad es bueno gastar un par de > "espacios" para identar el sql... [...] 120% agree. -- Guti If you get a ChuckNorrisException you'll probably die.
Re: Script en PHP
Author: Jos� Miguel Santib��ez
Date: Tue, 15 Aug 2006 03:05
Date: Tue, 15 Aug 2006 03:05
20 lines
2039 bytes
2039 bytes
En el cap�tulo anterior (news:8764gvhybj.fsf@guti.cl), Cristian Gutierrez <crgutier@dcc.uchile.cl> dijo: [...] >> No quiero sonar pedante, pero ante un nivel tan bajo de dise�o >> previo, pretender usar templates o prepared statments es un salto >> importante... > > Pero si puedes redise�ar despu�s de tener c�digo m�s ordenado, mejor > :) despu�s de lo que he visto no una sino demasiadas veces, y a riesgo de pedanter�a: "redise�ar" si que queda grande... ;-) Salute! -- Apoye a la campa�a de alfabetizaci�n y | Jose M. Santiba�ez A. ordenaci�n de las news, cada post en su | <jms@nivel5.cl> lugar y el lugar exacto para cada post | <http://caos.cl/jms>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads