Foros del Web » Programando para Internet » PHP » PHP-GTK »

Haber que les parece

Estas en el tema de Haber que les parece en el foro de PHP-GTK en Foros del Web. Hola maestros: hice una pequeña aplicacion la cual me permite hacer una consulta a una base de datos esta base de datos esta hecha en ...
  #1 (permalink)  
Antiguo 13/07/2004, 11:23
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
Haber que les parece

Hola maestros:

hice una pequeña aplicacion la cual me permite hacer una consulta a una base de datos esta base de datos esta hecha en mysql espero les sirve de mucho.

1.- crear nuestra base de datos

create database Tierra;

2.- usar nuestra Base de datos creada:

use Tierra;

3.- crear nuestra tabla

create table pais (Nombre varchar(20),Capital varchar(20),Continente(20));

4.-y si queremos podemos insertar unos cuantos registros a nuestra tabla para poder hacer nuestra consulta:

insert into pais(Nombre,Capital,Continente) values("Mexico","D.F.","America");
insert into pais(Nombre,Capital,Continente) values("España","Madrid","Europa");

bueno hasta aqui tenemos nuestra bd creada con nuestra tabla e insertamos datos vamos ahora con el codigo.
Código PHP:
<?php
   dl
("php_gtk.".(strstr(PHP_OS,"WIN") ? "dll" "so"));
iniciamos nuestro script en la cual hacemos la llamada a las librerias que corresponden a nuestro sistema operativo , como sabemos php_gtk.dll es para Windows y php_gtk.so para linux.

Código PHP:
 class Mundo{
                                                                                                                                                 
        var 
$gui;
                                                                                                                                                 
       function 
Mundo(){
           
$this->gui = array();
       }
//termina constructor 
creamos nuestra clase llamada Mundo y nuestra variable $gui es un arreglo que contendra los widgets de nuestra aplicacion.

Código PHP:
      function main(){
                                                                                                                                                 
         
$this->gui['ventana'] = &new GtkWindow();
         
$this->gui['ventana']->set_position(GTK_WIN_POS_CENTER);
         
$this->gui['ventana']->set_title('Consultor');
         
$this->gui['ventana']->set_usize(300,300);
         
$this->gui['ventana']->set_policy(false,false,false);
         
$this->gui['ventana']->connect('destroy',array($this,'cerrar'));
                                                                                                                                                 
         
$this->gui['vbox'] = &new GtkVBox(false,0);
         
$this->gui['hbox'] = &new GtkHBox(false,0);
                                                                                                                                                 
         
$this->gui['caja'] = &new GtkEntry();
         
$this->gui['caja']->set_editable(true);
                                                                                                                                                 
         
$this->gui['btn_consulta'] = &new GtkButton('Consultar');
          
$this->gui['btn_consulta']->connect('clicked',array($this,'busca_dato'),$this->gui['caja']);
                                                                                                                                                 
         
$this->gui['btn_salir'] = &new GtkButton('Salir');
         
$this->gui['btn_salir']->connect('clicked',array($this,'cerrar'));
                                                                                                                                                 
         
$this->gui['box2'] = &new GtkVButtonBox();
         
$this->gui['box2']->set_border_width(5);
         
$this->gui['box2']->set_layout(GTK_BUTTONBOX_SPREAD);
         
$this->gui['box2']->set_spacing(5);
         
$this->gui['box2']->set_child_size(15,20);
                                                                                                                                                 
         
$this->gui['box2']->pack_start($this->gui['btn_consulta'],false);
         
$this->gui['box2']->pack_start($this->gui['btn_salir'],false);
         
$this->gui['box2']->show();
                                                                                                                                                 
         
$this->gui['hbox']->pack_start($this->gui['box2']);
         
$this->gui['hbox']->pack_start($this->gui['caja']);
         
$this->gui['vbox']->pack_start($this->gui['hbox']);
                                                                                                                                                 
         
$this->gui['ventana']->add($this->gui['vbox']);
         
$this->gui['ventana']->show_all();
                                                                                                                                                 
         
gtk::main();
                                                                                                                                                 
      }
//termina funcion main 
aqui creamos nuestra interfaz.

Última edición por payo22; 14/07/2004 a las 12:52
  #2 (permalink)  
Antiguo 13/07/2004, 11:30
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
ok bueno vamos paso por paso:

Código PHP:
         $this->gui['ventana'] = &new GtkWindow();
         
$this->gui['ventana']->set_position(GTK_WIN_POS_CENTER);
         
$this->gui['ventana']->set_title('Consultor');
         
$this->gui['ventana']->set_usize(300,300);
         
$this->gui['ventana']->set_policy(false,false,false);
         
$this->gui['ventana']->connect('destroy',array($this,'cerrar')); 
1.- creamos nuestra ventana new GtkWindow.
2.-Le indicamos la posicion de Nuestra ventana, en este caso le indicamos que va a aparecer centrada ->sert_position(GTK_WIN_POS_CENTER);
existen otras opciones de posicion como :
GTK_WIN_POS_NONE
GTK_WIN_POS_CENTER
GTK_WIN_POS_MOUSE
GTK_WIN_POS_CENTER_ALWAYS

3.-establecemos un titulo a nuestra ventana.
4.- establecemos un tamaño a nuestra ventana -> set_usize.
5.-le indicamos que nuestra ventana no puede ser dimensionada ->set_policy o mejor dicho el tamaño de nuestra ventana en fijo.

6.- le indicamos que cuando se mande la señal de destruir la ventana llame a la funcion cerrar.
  #3 (permalink)  
Antiguo 13/07/2004, 11:35
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
Código PHP:
        $this->gui['caja'] = &new GtkEntry();
         
$this->gui['caja']->set_editable(true);
                                                                                                                                                 
         
$this->gui['btn_consulta'] = &new GtkButton('Consultar');
         
$this->gui['btn_consulta']->connect('clicked',array($this,'busca_dato'),$this->gui['caja']);
                                                                                                                                                 
         
$this->gui['btn_salir'] = &new GtkButton('Salir');
         
$this->gui['btn_salir']->connect('clicked',array($this,'cerrar')); 
1.- se crea una caja en la cual capturaremos lo que queremos consultar

2.- se crea un boton 'btn_consulta' para que al ser presionado llame a la funcion busca_dato

3.- se crea un boton para salir del programa.

FUNCION busca_dato

Código PHP:
      function busca_dato($theButton){
         
$cadena $this->gui['caja']->get_text();
                                                                                                                                                 
         
$this->gui['ventana2']= &new GtkWindow();
         
$this->gui['ventana2']->set_title('Resultado de la consulta:');
         
$this->gui['ventana2']->set_usize(400,400);
         
$this->gui['ventana2']->set_position(GTK_WIN_POS_CENTER);
         
$this->gui['ventana2']->set_policy(false,false,false);
         
$this->gui['ventana2']->connect('destroy',array($this,'cerrar'));
                                                                                                                                                 
         
$this->gui['vbox_contenedor'] = &new GtkVBox(false,0);
         
$this->gui['hbox_padre'] = &new GtkHBox(false,0);
                                                                                                                                                 
         
$this->gui['hbox_lbl'] = &new GtkHBox(false,0);
         
$this->gui['hbox_entry'] = &new GtkHBox(false,0);
                                                                                                                                                 
         
$this->gui['vbox_lbl'] = &new GtkVBox(false,0);
         
$this->gui['vbox_entry'] = &new GtkVBox(false,0);
                                                                                                                                                 
         
$this->gui['lbl_pais'] = &new GtkLabel("Pais");
         
$this->gui['lbl_capital'] = &new GtkLabel("Capital");
         
$this->gui['lbl_cont'] = &new GtkLabel("Continente");
                                                                                                                                                 
         
$this->gui['txt_pais']=&new GtkEntry();
         
$this->gui['txt_cap']=&new GtkEntry();
         
$this->gui['txt_cont']=&new GtkEntry();
                                                                                                                                                 
         
$this->gui['box'] = &new GtkHButtonBox();
         
$this->gui['box']->set_border_width(5);
         
$this->gui['box']->set_layout(GTK_BUTTONBOX_SPREAD);
         
$this->gui['box']->set_spacing(5);
         
$this->gui['box']->set_child_size(15,20);
                                                                                                                                                 
         
$link mysql_connect("localhost","root","admin");
         
mysql_select_db("Tierra",$link);
         
$sql "Select * from pais where Nombre = '$cadena'";
         
$result mysql_query($sql,$link);
                                                                                                                                                 
        if (
$row mysql_fetch_array($result)){
           do{
               
$id $row[id];
               
$this->gui['txt_pais']->set_text($row['Nombre']);
               
$this->gui['txt_cap']->set_text($row['Capital']);
               
$this->gui['txt_cont']->set_text($row['Continente']);
           }while(
$row mysql_fetch_array($result));
                                                                                                                                                 
         
$this->gui['btn_salir'] = &new GtkButton('Salir');
         
$this->gui['btn_salir']->connect('clicked',array($this,'cerrar'));
                                                                                                                                                 
         
$this->gui['vbox_lbl']->pack_start($this->gui['lbl_pais']);
         
$this->gui['vbox_lbl']->pack_start($this->gui['lbl_capital']);
         
$this->gui['vbox_lbl']->pack_start($this->gui['lbl_cont']);
                                                                                                                                                 
         
$this->gui['vbox_entry']->pack_start($this->gui['txt_pais']);
         
$this->gui['vbox_entry']->pack_start($this->gui['txt_cap']);
         
$this->gui['vbox_entry']->pack_start($this->gui['txt_cont']);
                                                                                                                                                 
         
$this->gui['hbox_lbl']->pack_start($this->gui['vbox_lbl']);
         
$this->gui['hbox_entry']->pack_start($this->gui['vbox_entry']);
         
$this->gui['hbox_padre']->pack_start($this->gui['hbox_lbl']);
         
$this->gui['hbox_padre']->pack_start($this->gui['hbox_entry']);
                                                                                                                                                 
         
$this->gui['box']->pack_start($this->gui['btn_salir'],false);
         
$this->gui['box']->show();
                                                                                                                                                 
         
$this->gui['vbox_contenedor']->pack_start($this->gui['hbox_padre']);
         
$this->gui['vbox_contenedor']->pack_start($this->gui['box']);
         
$this->gui['ventana2']->add($this->gui['vbox_contenedor']);
                                                                                                                                                 
         
$this->gui['ventana2']->show_all();
        }else{
             echo 
"No se encontro ningun registro !!! \n";
        }
//fin if
      
}//termina funcion busca dato 
  #4 (permalink)  
Antiguo 13/07/2004, 11:43
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
bueno como ya habiamos dicho anteriormente que se creo un boton para que llamara a la funcion 'busca_dato', al presionar el boton btn_consulta` envia un parametro que es el texto que se captura en el GtkEntry

boton que se le pasa parametro a la funcion
Código PHP:
$this->gui['btn_consulta']->connect('clicked',array($this,'busca_dato'),$this->gui['caja']); 
dentro de la funcion se obtiene ese valor:

Código PHP:
 $cadena $this->gui['caja']->get_text(); 
de esta forma ahora la variable $cadena tiene el valor del GtkEntry.

se establece la conexion a mysql:
Código PHP:
         $link mysql_connect("localhost","root","admin");
         
mysql_select_db("Tierra",$link);
         
$sql "Select * from pais where Nombre = '$cadena'";
         
$result mysql_query($sql,$link); 
1.- se crea la conexion a mysql.
2.- se selecciona la BD.
3.- se genera la sentencia sql para hacer la consulta de acuerdo al valor capturado en este caso $cadena.
4.- se ejecuta la sentencia.

una vez hecha la consulta se procede a mostrar el resultado de la consulta

Código PHP:
if ($row mysql_fetch_array($result)){
           do{
               
$this->gui['txt_pais']->set_text($row['Nombre']);
               
$this->gui['txt_cap']->set_text($row['Capital']);
               
$this->gui['txt_cont']->set_text($row['Continente']);
           }while(
$row mysql_fetch_array($result)); 
  #5 (permalink)  
Antiguo 13/07/2004, 11:49
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
se me olvidaba poner la funcion cerrar que en nuestro caso nos sirve como ya lo habia mencionado para destruir la ventana o en caso de presionar el boton salir.

Código PHP:
      function cerrar(){
         echo 
"Saliendo del Sistema . . .";
         
gtk::main_quit();
      }
//termina funcion cerrar 
para terminar se cierra el bloque de la clase Mundo y se crea un objeto de la clase.

Código PHP:
   //termina clase Mundo
                                                                                                                                                 
                                                                                                                                                 
  
$objeto = new Mundo;
  
$algo $objeto->main();
                                                                                                                                                 
                                                                                                                                                 
?> 
Muchas de las cosas escritas aqui las he aprendido del MAESTRO EPPLESTUN y pueder darse una vuelta por la siguiente pagina en la que el ha escrito varios articulos sobre php-gtk.

http://zonaphp.com/index.php?modulo=...944ac83e660842


espero les sirva.

pueden descargar el codigo completo en http://mx.geocities.com/payo22/programa.txt.

hasta pronto

Última edición por payo22; 13/07/2004 a las 12:15
  #6 (permalink)  
Antiguo 14/07/2004, 23:26
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 6 meses
Puntos: 5
jeje felicidades Esta muy bien jeje y es un ejemplo muy claro y bien explicado jeje, si te apetece podrias escribirlo para zonaphp.com que sera muy bien recibido comentaselo a Webstudio y a ver si se pone en la web jeje ... estas aprendiendo mucho pequeño saltamontes jejejejeje.

Yo ahora mismo estoy desarrollando un nuevo proyecto en PHP-GTK jeje se llama PHP-GTK-RAD y es una aplicacion RAD como su nombre indica, que es esto ... pues se trata de hacer una aplicacacion similar a Glade y añadirle un editor para editar directamente los signals (señales) que se añaden a cada objeto, de esa manera el desarrollo de aplicaciones es muhco mas sencillo y se gana tiempo en el desarrollo, en definitiva ... trato de hacer un Delphi o un Visual Basic ... pero enfocado para PHP-GTK y escrito como no en PHP-GTK , de momento estoy desarrollando la interfaz del programa ... y haciendo unas pruebitas para el arrastre de widgets y todo lo demas .... pero a ver que sale jejejej

Un saludo!! y felicidades por tu articulo!!!
__________________
Usuario registrado de Linux #288725
  #7 (permalink)  
Antiguo 16/07/2004, 08:40
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 21 años, 5 meses
Puntos: 1
Gracias epplestun

La verdad es que gracias a tus consejos he podido aprender un poco mas lo que es el php-gtk es por eso que me gustaria compartir un poco de lo que ya se.

por cierto ya le comente a Webstudio sobre poner el Articulo en zonaphp y estamos en eso.

y espero que pronto este tu aplicacion para que ya la podamos ver , creo que sera de Muchisima ayuda ya que nos ahorrara tiempo hacer nuestra interface.

muchas gracias Maestro epplestun

Última edición por payo22; 16/07/2004 a las 08:47
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:18.