elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 2 [3]
21  Programación / Programación C/C++ / ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C? en: 6 Abril 2014, 21:31 pm
¡Hola todas y todos!

En el siguiente programa realizo dos consultas MySQL desde C. Como podrán apreciar hago una de ellas muy mal.. A saberl, la primera.

Me gustaría saber de qué modo lograr que la primera consulta sea pasada a la segunda pero no como sentencia misma, sino el resultado de mi consulta. La primera pretende estimar mis horas trabajadas en un determinado mes para devolver un valor numérico de tipo float. Pero en vez de devolver un valor numérico, traspasa toda la gigante e inacabable sentencia.

Obtengo el error:

Código
  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'xxxx', '', 'xxxxxxxx', 'xxx', 'xxx')' at line n

La impresión en pantalla de
Código
  1. printf("Suma horas: %s", sum_horas_mensual);
(sentencia que tengo incluida en mi programa...) resulta ser:

Código
  1. Suma horas: SET @shm := (SELECT SUM(hras_trab) FROM Horas_trabajadas Total WHERE mes='Februar';)

Vale decir, mi error consiste en que no toma el resultado de la suma que debería arrojar SUM (por ejemplo 63) sino el query MySQL completo en toda su gloria y majestad... pero que no me sirve en absoluto.

¿Qué estoy haciendo mal? :huh: :huh: :huh:

Acá el código completo (sin acentos en los comentarios porque aparecen garabatos y alguien puede llegar a sentirse ofendido... sin mi más mínima intensión):

Código
  1. #include "finish_with_error.h"
  2.  
  3. #define n (10) // n = 3. Three decimal points.
  4.  
  5. //Valores que vienen traspasados de otra funcion.                                        
  6. void conectar(char array_fecha_fact[11], char array_fase_trabajada[257], char array_hrs_totales[4], float float_std_lohn, int int_id_empresas){
  7.  
  8.    MYSQL   *conn;            
  9.    char    q[1024],          
  10.            sum_horas_mensual[4];
  11.  
  12.    conn = mysql_init(NULL);  
  13.    mysql_real_connect(conn, "localhost", "fact", "mi_clave_supersecreta_y_supersegura", "facturas", 0, NULL, 0);
  14.  
  15.  //Aca la consulta a MySQL de la que quiero capturar el resultado y en la que hago algo mal.            
  16.    sprintf(sum_horas_mensual, "SET @shm := (SELECT SUM(hras_trab) FROM Horas_trabajadas Total WHERE mes='Februar';)\n");
  17.    printf("Suma horas: %s", sum_horas_mensual);
  18.  
  19.    sprintf(q,"INSERT INTO Facturas(id_fact, fecha, cant_horas, horario, hora_salario, id_empresas) VALUES('', '%s', '%s', 'algo_muy_importante_dice_aca', '%g', '%i')\n", array_fecha_fact, sum_horas_mensual, float_a, int_id_empresas);                              
  20.    mysql_query(conn, q);    
  21.    finish_with_error(conn);    
  22.    mysql_close(conn);        
  23. }  

Bueno, espero que puedan ayudarme...!

Saludos a todas y todos y muy agradecida por sus respuestas.

Gisi

\m/
22  Programación / Programación C/C++ / Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] en: 9 Febrero 2014, 11:54 am
Ummm interesante, buena info!!

Flag Name                              Flag Description

CLIENT_COMPRESS                   Use compression protocol.
CLIENT_FOUND_ROWS               Return the number of found (matched) rows, not the number of affected rows.
CLIENT_IGNORE_SPACE             Allow spaces after function names. Makes all functions names reserved words.
CLIENT_INTERACTIVE              Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable.

CLIENT_LOCAL_FILES              Enable LOAD DATA LOCAL handling.
CLIENT_MULTI_STATEMENTS    Tell the server that the client may send multiple statements in a single string (separated by ';'). If this flag is not set, multiple-statement execution is disabled. New in 4.1.

CLIENT_MULTI_RESULTS            Tell the server that the client can handle multiple result sets from multiple-statement executions or stored procedures. This is automatically set if CLIENT_MULTI_STATEMENTS is set. New in 4.1.

CLIENT_NO_SCHEMA            Don't allow the db_name.tbl_name.col_name syntax. This is for ODBC. It causes the parser to generate an error if you use that syntax, which is useful for trapping bugs in some ODBC programs.

CLIENT_ODBC                       The client is an ODBC client. This changes mysqld to be more ODBC-friendly.
CLIENT_SSL                       Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the client library.


Justamente estaba pensando en casos en los que se use cifrado o encriptamiento (CLIENT_SSL) o con un driver diferente de conexión (CLIENT_ODBC), también me parecio muy interesante lo de la duración de la sesión del usuario en un caso de inactividad, muy util (CLIENT_INTERACTIVE).

Gracias por el link  ;-) ;-)

Me alegro que haya servido. :)
23  Programación / Programación C/C++ / Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] en: 8 Febrero 2014, 21:32 pm
Perfecto muchas gracias, pero en la parte del flag, que diferencia habria para el acceso al motor de base de datos???

¡Hola!

Casi siempre se usa como valor 0. Pero hay casos muy especiales en que se le puede otorgar a flags otro valor.

Yo lamentablemente no tengo experiencia en eso, así que tampoco puedo hablarte con grandes nociones al respecto.

Ahora bien, los flags permiten otorgar a la consulta un parámetro adicional que permite especificar formas especiales de respuestas, o sea, que permiten personalizar la respuesta que uno obtendrá.

Por ejemplo, lo que acabo de leer en la web de mysql, en vez de obtener el total de filas afectadas, se puede especificar que otorgue como resultado el valor total de filas que coinciden con la consulta. Son varios los  parámetros para personalizar la consulta que pueden agregarse.

Acá te dejo la página de MySQL que explica los flags (ahora bien, en inglés).
https://dev.mysql.com/doc/refman/5.0/es/mysql-real-connect.html

¡Saludos!
24  Programación / Programación C/C++ / Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] en: 8 Febrero 2014, 18:27 pm
Hey nada mal, nunca he usado C/C++ con mysql, no parece diferente de java y C# excepto por esta linea:

Código
  1.   mysql_real_connect(conn, "localhost", "admin_notas", "123456", "Notas", 0, NULL, 0); //Ingresamos los datos necesarios (servidor, usuarios, clave de usuario) para acceder a la base de datos que llamamos "Notas".
No entiendo porque los otros valores, vale puede que sean así por defecto en la función sql para C, pero alguien podria explicarmelo en palabras rapidas?? por favor??  :silbar: :silbar:

Ando corto de tiempo con tanto estudio y trabajo, pero avanzare y profundizare en estos temás.
 

Mira, quizás sea ésta la respuesta que buscas.
Si no la es espero la respuesta a mi mensaje anterior que te hice llegar.

Código
  1. mysql_real_connect (
  2.  conn,           //puntero al gesto de conexion.
  3.  hostname,      //host al cual conectar (en mi caso, localhost).
  4.  nombre_usuario, //la tercera posicion es para el nombre del usuario que ingresa a la base de datos.
  5.  password,     //la cuarta posicion es para especificar la clave con la cual el usuario ingresa a la base de datos.
  6.  nombre_BD,   //lugar para especificar el nombre de la base de datos a utilizar por el usuario.
  7.  0,         //puerto utilizado, si cero (0) entonces se usa puerto por defecto.
  8.  NULL,        //para definir el socket, si NULL, entonces se utiliza el por defecto.
  9.  0       // el flags, si cero (o) entonces ninguno se utiliza.
  10. );

25  Programación / Programación C/C++ / Re: Consulta sobre C + MySQL, traspaso de variables a un query de MySQL en C. en: 7 Febrero 2014, 19:49 pm
¡Amigas y amigos!

Me respondo a mi misma. Acabo de encontrar la solución.
Dejo mi solución por si a alguien llegara a servirle.


Código
  1. //Nombre del archivo: "prog.c" (sin comillas).
  2. #include <stdio.h>                                            
  3. #include <mysql.h>                                            
  4. #include <my_global.h>                                        
  5. #include <string.h>                                          
  6. #include <stdlib.h>                                          
  7.  
  8. int main(){                                                  
  9.  
  10.  
  11. //Declaramos las variables necesarias:                        
  12.    MYSQL *conn;        //Variable para la conexion con MySQL.
  13.    float nota;         //Variable que almacenara la nota ingresada.
  14.    char nombre[15];    //Variable que ingresara el nombre del alumno.
  15.    char q[1024];       //String que almacenara la consulta a MySQL.
  16.  
  17.    printf("Ingrese nombre alumno:\n"); //Solicitamos ingreso del nombre del alumno.
  18.    scanf("%s", nombre);                //Se almacena el nombre del alumno en la variable "nombre".
  19.    printf("Ingrese nota alumno:\n");   //Solicitamos el ingreso de la nota del alumno.
  20.    scanf("%f", &nota);                 //Se almacena la nota del alumno en la variable "nota".
  21.  
  22. //Conectamos con MySQL                                        
  23.    conn = mysql_init(NULL);    //Almacenamos en la variable "conn" el comando de conexion a MySQL.
  24.    mysql_real_connect(conn, "localhost", "admin_notas", "123456", "Notas", 0, NULL, 0); //Ingresamos los datos necesarios (servidor, usuarios, clave de usuario) para acceder a la base de datos que llamamos "Notas".
  25.  
  26.    sprintf(q,"INSERT INTO datos(id, alumno_nombre, nota) VALUES('', '%s', '%f')", nombre, nota);   //Creamos el string de consulta a la base de datos de MySQL.
  27.  
  28.    mysql_query(conn, q); //Establecemos la conexion y enviamos la consulta a MySQL. q tiene almacenada nuestra consulta.
  29.  
  30.    mysql_close(conn);  //Finalizamos la conexion a MySQL.                                    
  31.  
  32. return 0;                                                  
  33. }        

El programa se compila con el siguiente comando en Linux:

Código
  1. gcc prog.c -o prog -Wall `pkg-config --libs --cflags gtk+-3.0` $(mysql_config --cflags) $(mysql_config --libs)

Y se ejecuta (en Linux. No sé cómo será en otros sistemas operativos... ):
Código
  1. ./prog
26  Programación / Programación C/C++ / C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] en: 6 Febrero 2014, 22:46 pm
¡Hola a todas las y los genios del lenguaje de Programación en C!

¿Hay alguien que se maneja bien con C + MySQL y ojalá con GTK?

Estoy escribiendo un pequeño programa en C, con interfaz gráfica en GTK que debe insertar datos a una base de datos en MySQL, pero no logro traspasar un valor desde la interfaz gráfica escrita en GTK a un query de MySQL. Creo que ese problema lo podría solucionar resolviendo lo siguiente:

¿Cómo se traspasa en C una variable a un query de MySQL? El código con el que tengo problema es el siguiente:

Código
  1. float nota;
  2. mysql_query(conn, ("INSERT INTO datos (id, alumno_nombre, nota) VALUES(' ', 'alguien', '%g')"), nota);
Definiticamente la forma con la que estoy tratando hacer el traspaso de la variable al query de MySQL está muy mal  :huh:.
En la web no he hallado respuestas satisfactorias.

Espero que alguien pueda orientarme.

Si necesitan el código completo, me avisan. No lo he querido colocar de inmediato para no saturar la página con más información.
¡Saludos y muchísimas gracias a todas y todos los genios en C!

ME HE RESPONDIDO A MI MISMA. ABAJO MI PROPIA SOLUCIÓN.
27  Programación / Programación C/C++ / Re: C programming + GTK: Add two numbers. en: 22 Junio 2013, 14:46 pm
Ups, sorry for the mistake I forgot two parenthesis:
Ups, perdón por el error, olvidé dos paréntesis:
Código
  1. sscanf(gtk_entry_get_text(GTK_ENTRY(n1)),"%f", &float_n1);
  2. sscanf(gtk_entry_get_text(GTK_ENTRY(n2)),"%f", &float_n2);
This not have much sense:
Esto no tiene mucho sentido:
Código
  1.    //"%d"? o %f ...
  2.   // Que esta haciendo result_sum aqui?
  3.   // What is doing result_sum here?
  4.    printf(result_sum, "HA - %d", sum);
The printf function is defined so:
La función printf está definida así:
Código
  1. int printf ( const char * format, ... );
So this should be run(the mistakes are in the comments):
Así que esto debería funcionar (los errores están en los comentarios):
Código
  1. void action_button(GtkButton *button, gpointer data)
  2. {
  3.    //You have to declare an array for show this then... not only a char.
  4.    //Tienes que declarar un array para mostrarlo después, no solamente un caracter.
  5.    char result_sum[100];
  6.    float float_n1, float_n2, sum;
  7.  
  8.    sscanf(gtk_entry_get_text(GTK_ENTRY(n1)),"%f", &float_n1);
  9.    sscanf(gtk_entry_get_text(GTK_ENTRY(n2)),"%f", &float_n2);
  10.  
  11.    sum = float_n1 + float_n2;
  12.    //You had confused printf with sprintf
  13.    // Habías confundido printf con sprintf
  14.    sprintf(result_sum,"HA - %f", sum);
  15.    gtk_label_set_label((GtkLabel *)label_sum, result_sum);
  16. }

¡Hola avesudra!

¡Excelente! Ha funcionado perfectamente. Sinceramente muy pero muy agradecida y admirada. Yo soy nueva en programación con GTK y ésta duda me ha perseguido por ya casi dos meses... ¡Gracias!

Dejo acá el código completo para todos quienes tengan dudas similares. Sobre la base de la ayuda dada por avesudra, el código completo sin errores para que funcione la suma entre dos valores en C con GTK es:

(I leave here the complete code (without errors) for all who have similar doubts. Based on the help given by avesudra, the total code to operate the sum of two values ​​in C with GTK is:)


Código
  1. #include <gtk/gtk.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define Length1 3
  7. #define Length2 5
  8.  
  9. GtkWidget *n1, *n2;
  10. GtkWidget *label_sum;
  11.  
  12. void action_button(GtkButton *button, gpointer data){
  13.  
  14.    char result_sum[100];
  15.    float float_n1, float_n2, sum;
  16.  
  17.    //Transforming strings to numbers of type float.
  18.    sscanf(gtk_entry_get_text(GTK_ENTRY(n1)),"%f", &float_n1);
  19.    sscanf(gtk_entry_get_text(GTK_ENTRY(n2)),"%f", &float_n2);
  20.  
  21.    sum = float_n1 + float_n2; //Adding both numbers.                                                                                    
  22.  
  23.    sprintf(result_sum,"Result - %f", sum); //Passing the result of the sum to a variable.
  24.    gtk_label_set_label((GtkLabel *)label_sum, result_sum);//Passing the result to label_sum for print  on the window.
  25.  
  26. }    
  27.  
  28. int main(int argc, char *argv[]){
  29.  
  30.     GtkWidget *window, *descr[15], *layout, *button;
  31.  
  32.     gtk_init_check(&argc, &argv);
  33.  
  34.    //Build window.
  35.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  36.     g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  37.     gtk_window_set_title(GTK_WINDOW(window), "Calculo de Nota");
  38.     gtk_container_set_border_width(GTK_CONTAINER(window), 0);
  39.     gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);
  40.  
  41.    //Build layout.
  42.     layout = gtk_layout_new(NULL, NULL);
  43.  
  44.    //Build labels, one title and two indicator.
  45.     descr[0] = gtk_label_new("Add two numbers");
  46.     descr[1] = gtk_label_new("Number 1: ");
  47.     descr[2] = gtk_label_new("Number 2: ");
  48.     label_sum  = gtk_label_new("Resultado.");
  49.  
  50.    //Build text fields.
  51.     n1     = gtk_entry_new();
  52.     n2     = gtk_entry_new();
  53.  
  54.     gtk_entry_set_max_length(GTK_ENTRY(n1), Length1);
  55.     gtk_entry_set_max_length(GTK_ENTRY(n2), Length1);
  56.  
  57.     gtk_entry_set_width_chars(GTK_ENTRY(n1), Length2);
  58.     gtk_entry_set_width_chars(GTK_ENTRY(n2), Length2);
  59.  
  60.    //Build the button.
  61.     button = gtk_button_new_with_label("Calcular");
  62.     g_signal_connect(button, "clicked", G_CALLBACK(action_button), NULL);
  63.  
  64.    //Insert the widgets into the layout.
  65.     gtk_layout_put(GTK_LAYOUT(layout), descr[0], 10, 10);
  66.     gtk_layout_put(GTK_LAYOUT(layout), descr[1], 10, 50);
  67.     gtk_layout_put(GTK_LAYOUT(layout), descr[2], 10, 90);
  68.     gtk_layout_put(GTK_LAYOUT(layout), n1, 180, 50);
  69.     gtk_layout_put(GTK_LAYOUT(layout), n2, 180, 90);
  70.     gtk_layout_put(GTK_LAYOUT(layout), button, 10, 200);
  71.     gtk_layout_put(GTK_LAYOUT(layout), label_sum, 90, 205);//Widget label for printing result.
  72.  
  73.    //Put the layout into the window.
  74.     gtk_container_add(GTK_CONTAINER(window), layout);
  75.  
  76.     gtk_widget_show_all(window);
  77.     gtk_main();
  78.  
  79. return 0;
  80. }
  81.  




28  Programación / Programación C/C++ / Re: C programming + GTK: Add two numbers. en: 22 Junio 2013, 12:53 pm
Hi GisiNa, the problem with your code is that gtk_entry_get_text() returns a string and the compiler warns you that the conversion: string(which is actually a const gchar *) to float is not possible. The solution is to convert the number in the string to float using the sscanf function, so replace this:
Código
  1. float_n1    = (float)(gtk_entry_get_text(GTK_ENTRY(n1)));
  2. float_n2    = (float)(gtk_entry_get_text(GTK_ENTRY(n2)));
By this:
Código
  1. sscanf(gtk_entry_get_text(GTK_ENTRY(n1),"%f", &float_n1);
  2. sscanf(gtk_entry_get_text(GTK_ENTRY(n2),"%f", &float_n2);

Gracias a 0xDani por la ayuda con el inglés  ;D
Thanks to 0xDani for the help with the English  ;D

Hola avesudra!

Lamentablemente me arroja errores similares.

"In function ‘action_button’:
error: too many arguments to function ‘gtk_entry_get_text’
error: too few arguments to function ‘sscanf’
warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [enabled by default]"

O sea, considera que gtk_entry_get_text contiene demasiados argumentos y de otra parte, a sscanf le estarían faltando parámetros. Y finalmente prevalece el problema de conversión entre puntero y número.

Hasta ahora me ha sido imposible conseguir la conversión de lo que se ingresa en un campo de texto (un char) en número...

¿Tendrás alguna idea...?

¡Gracias!
29  Programación / Programación C/C++ / Re: C programming + GTK: Add two numbers. en: 22 Junio 2013, 11:46 am
Thanks for your answer avesudra! Right now I try the suggestion. Soon as I have scored results leave a message. I have no problems if your answers are in English, Spanish or German.

Avesudra, gracias por tu respuesta! Ahora mismo intentaré las sugerencia. Apenas tenga resultados dejaré anotado un aviso. ¡No tengo problemas si me respondes en Inglés, Español o Alemán!  :D

¡Saludos!



Most forums are in English, so I wonder why are you posting here. And I don't think your English is bad, I think actually it would be better for you to ask in another forum, as you'd get more answers to your problem.


 :-* Yes, if I know. The reason is that of all the forums to join, this proved to be the simplest, and it is in my native language, Spanish. It may not be the most appropriate ... If I can not find an answer here, I will subscribe a forum in English. Thank you for considering my English not so bad.
30  Programación / Programación C/C++ / C programming + GTK: Add two numbers. en: 21 Junio 2013, 19:25 pm
I'm trying to write a program to add two numbers with a graphical interface written in GTK.
My problem is that it fails to recognize the values ​​entered in the text-box, as numbers.

I searched a long time through google, but I have not found an answer. I have found similar problems, but without an appropriate response.

I hope my query is not outside the margins of the forum.

Can anybody help me to solve the problem that I have in the "action_button function"?

Here my program:


#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
#define Length1 3
#define Length2 5
 
GtkWidget *n1, *n2;
GtkWidget *label_sum;
 
//The Callback funktion. Here is the problem:
void action_button(GtkButton *button, gpointer data){
 
    char result_sum;
    float float_n1, float_n2, sum;
 
    float_n1    = (float)(gtk_entry_get_text(GTK_ENTRY(n1)));
    float_n2    = (float)(gtk_entry_get_text(GTK_ENTRY(n2)));
 
    sum = float_n1 + float_n2;
 
    printf(result_sum, "HA - %d", sum);
    gtk_label_set_label((GtkLabel *)label_sum, result_sum);
 
}


//The Interface part. The problem is not here. 
int main(int argc, char *argv[]){
 
     GtkWidget *window, *descr[15], *layout, *button;
 
     gtk_init_check(&argc, &argv);
 
    //Build window.
     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     gtk_window_set_title(GTK_WINDOW(window), "Calculo de Nota");
     gtk_container_set_border_width(GTK_CONTAINER(window), 0);
     gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);
 
    //Build layout.
     layout = gtk_layout_new(NULL, NULL);
 
    //Build labels, one title and two indicator.
     descr[0] = gtk_label_new("Add two numbers");
     descr[1] = gtk_label_new("Number 1: ");
     descr[2] = gtk_label_new("Number 2: ");
     label_sum  = gtk_label_new("");
 
    //Build text fields.
     n1     = gtk_entry_new();
     n2     = gtk_entry_new();
 
     gtk_entry_set_max_length(GTK_ENTRY(n1), Length1);
     gtk_entry_set_max_length(GTK_ENTRY(n2), Length1);
 
     gtk_entry_set_width_chars(GTK_ENTRY(n1), Length2);
     gtk_entry_set_width_chars(GTK_ENTRY(n2), Length2);
 
    //Build the button.
     button = gtk_button_new_with_label("Calcular");
     //g_signal_connect(button, "clicked", G_CALLBACK(action_button), NULL);
 
    //Insert the widgets into the layout.
     gtk_layout_put(GTK_LAYOUT(layout), descr[0], 10, 10);
     gtk_layout_put(GTK_LAYOUT(layout), descr[1], 10, 50);
     gtk_layout_put(GTK_LAYOUT(layout), descr[2], 10, 90);
     gtk_layout_put(GTK_LAYOUT(layout), n1, 180, 50);
     gtk_layout_put(GTK_LAYOUT(layout), n2, 180, 90);
     gtk_layout_put(GTK_LAYOUT(layout), button, 10, 200);
     gtk_layout_put(GTK_LAYOUT(layout), label_sum, 90, 205);//Widget label for printing result.
 
    //Put the layout into the window.
     gtk_container_add(GTK_CONTAINER(window), layout);
 
     gtk_widget_show_all(window);
     gtk_main();
 
return 0;
 }

I get the following error:
"prog.c: In function ‘action_button’:
prog.c:17:5: error: pointer value used where a floating point value was expected
prog.c:18:5: error: pointer value used where a floating point value was expected
prog.c:22:5: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast [enabled by default]"


What I'm doing wrong?
Thanks for any help.
(Sorry for my bad English. I'm not native speaker.).
Gisi

(Answers could be in Spanish, English or German)
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines