hacer una consulta en mysql desde php con parámetros variables

1,809 views
Skip to first unread message

Offray Vladimir Luna Cárdenas

unread,
Dec 27, 2005, 4:47:04 AM12/27/05
to sl-...@googlegroups.com
Hola a todos :),

Reciban un cordial saludo y los tradicionales buenos deseos decembrinos.
Es época de amor, paz, pero sobre todo regalos y consumismo desbordado
:-P. Así que en estas navidades no caigas en la trampa, regala amor,
regala la respuesta a la inquietud en el script de un conocido. Tu
conocido y la familia de él te lo agradecerán indirectamente :-) (este
trozo del correo debe ser leido tarareando mentalmente el tutaina
tuturumaina)

<Tutaina tuturumaina mode off>

He estado trabajando en migrar El Directorio de mediawiki a moin. Las
razones y los adelantos del proceso están escritos acá:

http://el-directorio.org/index.php/Migrando_de_mediawiki_a_moin

y para esto he adaptado un script en php que encontré en Internet, cuya
función es conectarse a la base de datos de mediawiki y extraer los
artículos en formato Moin. La versión modificada la pueden encontrar acá:

http://el-directorio.org/index.php/MediaWikiExtractor

El corazón del mismo es la consulta:

$sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=3 AND cur_user_text not like \"MediaWiki default\" ORDER BY cur_title;";
$query = mysql_query($sql) or die(mysql_error());

Que modifiqué ayer explorando los namespaces de la Wikipedia[1]. Lo
ideal sería colocar el valor de "cur_namespace" como un parámetro que
puede ir de 0 a 3, de modo que se puedan hacer consultas diferenciales
por artículo, usuario, discusión de artículo o discusión de usuario.
¿Cómo puedo hacer esto en php?, ¿se usa algún truco como el de 'cadena'
+ variable de Python?

Bueno y ahora para lo que usan el querido Python otra preguntica para un
momento de ocio: ¿Cómo puedo hacer que Python busque todas los bloques
de líneas de un archivo que empiezan con espacio (' ') y coloque una
etiqueta '<pre>' antes del bloque y una '</pre>' después, en caso de que
no estén puestas anteriormente?

Chao y felices fiestas con verdadero espíritu navideño (que para mí es
unión familiar).

Offray

[1] http://en.wikipedia.org/wiki/Wikipedia:Namespace

--
El Directorio
------------------------------
.:| Tecnología |:.
.:| Comunidad | Libertad |:.
\| Colombia |/
------------------------------
www.el-directorio.org

Wilfredo I. Pachon Lopez

unread,
Dec 27, 2005, 11:24:13 AM12/27/05
to sl-...@googlegroups.com
> $sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=3 AND cur_user_text not
> like "MediaWiki default" ORDER BY cur_title;";
> $query = mysql_query($sql) or die(mysql_error());
>
> Que modifiqué ayer explorando los namespaces de la Wikipedia[1]. Lo
> ideal sería colocar el valor de "cur_namespace" como un parámetro que
> puede ir de 0 a 3, de modo que se puedan hacer consultas diferenciales
> por artículo, usuario, discusión de artículo o discusión de usuario.
> ¿Cómo puedo hacer esto en php?, ¿se usa algún truco como el de 'cadena'
> + variable de Python?

Si creo entender bien la pregunta lo que debes hacer es algo como:

$sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=".$parametro."


AND cur_user_text not like 'MediaWiki default' ORDER BY cur_title;";

Es decir el operador . es el concatenador en PHP, claro que también en PHP es
posible tener variables dentro de cadenas sin necesidad de la concatenación,
todo esto está mucho mejor explicado en [1].

Saludos y felices fiestas.

[1] http://www.php.net/manual/es/language.types.string.php

--
Att:

Wilfredo I. Pachón López
Coordinador Desarrollo de Software y Asesor en Software Libre
Dirección Nacional de Sistemas
CUN (www.cun.edu.co)

----
Si desea conocer más sobre Software Libre en Colombia, puede visitar:
www.el-directorio.org


Manuel Alejandro Cerón Estrada

unread,
Dec 27, 2005, 3:32:46 PM12/27/05
to sl-...@googlegroups.com
Hola Offray,

¡Feliz Navidad y Próspero año nuevo!

El 27/12/05, Offray Vladimir Luna
Cárdenas<offra...@javeriana.edu.co> escribió:


> Bueno y ahora para lo que usan el querido Python otra preguntica para un
> momento de ocio: ¿Cómo puedo hacer que Python busque todas los bloques
> de líneas de un archivo que empiezan con espacio (' ') y coloque una
> etiqueta '<pre>' antes del bloque y una '</pre>' después, en caso de que
> no estén puestas anteriormente?
>

Aquí hay un snippet de más o menos cómo sería la cosa:

archivo1 = open('input.txt')
archivo2 = open('output.txt', 'w')

block = False
has_pre = False

for line in archivo1:
if line.find('<pre>') >= 0: has_pre = True

if not has_pre:
if line.startswith(' ') and not block:
block = True
archivo2.write('<pre> \n')

elif block:
block = False
archivo2.write('</pre> \n')

archivo2.write(line)

if line.find('</pre>') >= 0: has_pre = False

Por supuesto le faltan algunos ajustes, pero esa es la ídea.

Un saludo,

Manuel.
--
· Manuel Alejandro Cerón Estrada
· cero...@gmail.com
· http://ceronman.blogspot.com

Offray Vladimir Luna Cárdenas

unread,
Dec 27, 2005, 10:03:36 AM12/27/05
to sl-...@googlegroups.com
Hola :),

Gracias Wilfredo. Ahí estaba el truco. Ya actualicé el script
MediaWikiExtractor en El Directorio. Ahora me falta colocar dentro de un
ciclo en cambio de variables y listo :).

Chao,

Offray

Wilfredo I. Pachon Lopez wrote:

>>$sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=3 AND cur_user_text not
>>like "MediaWiki default" ORDER BY cur_title;";
>>$query = mysql_query($sql) or die(mysql_error());
>>
>>Que modifiqué ayer explorando los namespaces de la Wikipedia[1]. Lo
>>ideal sería colocar el valor de "cur_namespace" como un parámetro que
>>puede ir de 0 a 3, de modo que se puedan hacer consultas diferenciales
>>por artículo, usuario, discusión de artículo o discusión de usuario.
>>¿Cómo puedo hacer esto en php?, ¿se usa algún truco como el de 'cadena'
>>+ variable de Python?
>>
>>
>
>Si creo entender bien la pregunta lo que debes hacer es algo como:
>
>$sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=".$parametro."
>AND cur_user_text not like 'MediaWiki default' ORDER BY cur_title;";
>
>Es decir el operador . es el concatenador en PHP, claro que también en PHP es
>posible tener variables dentro de cadenas sin necesidad de la concatenación,
>todo esto está mucho mejor explicado en [1].
>
>Saludos y felices fiestas.
>
>[1] http://www.php.net/manual/es/language.types.string.php
>
>
>


--

Reply all
Reply to author
Forward
0 new messages