Article View: chile.comp.programacion
Article #1430Re: Script en PHP
From: 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>
Technical Details
Message-ID:
<Xns981F9BE1E9C80jmsnews@200.27.221.71>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!news.vcd.cl!not-for-mail!not-for-mailReferences:
<44e09fc4$1_1@nova.entelchile.net> <87ac67i43m.fsf@guti.cl>Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,68886b01d65beeee
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII
Newsgroups: chile.comp.programacion
Subject: Re: Script en PHP
From: "Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl>
References: <44e09fc4$1_1@nova.entelchile.net> <87ac67i43m.fsf@guti.cl>
Organization: Caos Consultores
Message-ID: <Xns981F9BE1E9C80jmsnews@200.27.221.71>
User-Agent: Xnews/5.04.25
X-Face: +|NgjgFM{<rs%\Q|vUu16]a6,}?MJTA<!PEEI+x&Gw-Gyq+?$}fvo+.(,-r;)~Qzn)#{{nxU,OT?w^s<7m4ckCJ*L$c#I)yHL7b)GdU*#l
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
NNTP-Posting-Host: 154-38-246-201.adsl.terra.cl
X-Original-NNTP-Posting-Host: 154-38-246-201.adsl.terra.cl
Date: 14 Aug 2006 14:25:36 -0400
X-Trace: news.vcd.cl!not-for-mail 1155579936 201.246.38.154 (14 Aug 2006 14:25:36 -0400)
X-Original-Trace: 14 Aug 2006 14:25:36 -0400, 154-38-246-201.adsl.terra.cl
Lines: 73
X-Authenticated-User: jms
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!news.vcd.cl!not-for-mail!not-for-mail