Accediendo a MySQL desde FiveTouch

Post Reply
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Accediendo a MySQL desde FiveTouch

Post by Antonio Linares »

En este ejemplo construimos un browse con el resultado de una consulta SQL en una base de datos remota MySQL:

mysql.prg

Code: Select all

#include "FiveTouch.ch"

function Main()

   local oDlg := QDialog()
   local oLayout := QVBoxLayout()
   local oBrw := QTableView( oDlg )
   local aRows := GetData()
   local n, m, aKeys := hb_HKeys( aRows[ 1 ] )
   local oModel := QStandardItemModel( Len( aRows ), Len( aKeys ), oDlg )

   for n = 1 to Len( aKeys )
      oModel:SetHorizontalHeaderItem( n - 1, QStandardItem( aKeys[ n ] ) )
   next

   for n = 1 to Len( aRows )
      for m = 1 to Len( aKeys )
         oModel:SetItem( n - 1,m - 1, QStandardItem( hb_HGet( aRows[ n ], aKeys[ m ] ) ) )
      next
   next

   oDlg:SetLayout( oLayout )
   oBrw:SetModel( oModel )
   oLayout:AddWidget( oBrw )

   oDlg:SetWindowTitle( "A browse" )
   oDlg:Resize( 500, 400 ) 
   oDlg:Center()
   oDlg:Exec()

return nil

function GetData()

    LOCAL oClient  := TIpClientHttp():New( "http://www.fivetechsoft.com/webservice.php" )
    LOCAL hRequest := {=>}
    LOCAl hParams  := {=>}
    LOCAl cJson

    if oClient:Open()   
    
        hParams[ "database" ] = "fivetech_webservice"
        hParams[ "username" ] = "fivetech_test"
        hParams[ "password" ] = "webservice"
        hParams[ "sql"      ] = "SELECT * FROM `users`"
        
        oClient:oUrl:AddGetForm( hParams )
        cJson = oClient:ReadAll()
        hb_jsonDecode( cJson, @hRequest )
        oClient:Close()
    endif
    
return hRequest[ "result" ]
 
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Accediendo a MySQL desde FiveTouch

Post by Antonio Linares »

Añadimos algunos botones en la zona inferior del browse:

mysql.prg

Code: Select all

#include "FiveTouch.ch"

function Main()

   local oDlg := QDialog()
   local oLayout := QVBoxLayout()
   local oBrw := QTableView( oDlg )
   local aRows := GetData()
   local n, m, aKeys := hb_HKeys( aRows[ 1 ] )
   local oModel := QStandardItemModel( Len( aRows ), Len( aKeys ), oDlg )
   local oButtons := QWidget()
   local oLayoutH := QHBoxLayout(), oBtnOk, oBtnCancel

   for n = 1 to Len( aKeys )
      oModel:SetHorizontalHeaderItem( n - 1, QStandardItem( aKeys[ n ] ) )
   next

   for n = 1 to Len( aRows )
      for m = 1 to Len( aKeys )
         oModel:SetItem( n - 1,m - 1, QStandardItem( hb_HGet( aRows[ n ], aKeys[ m ] ) ) )
      next
   next

   oDlg:SetLayout( oLayout )
   oBrw:SetModel( oModel )
   oLayout:AddWidget( oBrw )

   oLayout:AddWidget( oButtons )
   oButtons:SetLayout( oLayoutH )
   oLayoutH:AddWidget( oBtnOk := QPushButton() )
   oBtnOk:SetText( "Ok" )
   oBtnOk:Connect( "clicked()", { || oDlg:End() } )
   oLayoutH:AddWidget( oBtnCancel := QPushButton() )
   oBtnCancel:SetText( "Cancel" )
   oBtnCancel:Connect( "clicked()", { || oDlg:End() } )

   oDlg:SetWindowTitle( "A browse" )
   oDlg:Resize( 700, 700 ) 
   oDlg:Center()
   oDlg:Exec()

return nil

function GetData()

    LOCAL oClient  := TIpClientHttp():New( "http://www.fivetechsoft.com/webservice.php" )
    LOCAL hRequest := {=>}
    LOCAl hParams  := {=>}
    LOCAl cJson

    if oClient:Open()   
    
        hParams[ "database" ] = "fivetech_webservice"
        hParams[ "username" ] = "fivetech_test"
        hParams[ "password" ] = "webservice"
        hParams[ "sql"      ] = "SELECT * FROM `users`"
        
        oClient:oUrl:AddGetForm( hParams )
        cJson = oClient:ReadAll()
        hb_jsonDecode( cJson, @hRequest )
        oClient:Close()
    endif
    
return hRequest[ "result" ]
 
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Accediendo a MySQL desde FiveTouch

Post by Marcelo Roggeri »

Hola Antonio, puedes mostrar el contenido de webservice.php asi veo que haces?
Muchas gracias
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Accediendo a MySQL desde FiveTouch

Post by Antonio Linares »

Marcelo,

Aqui está el código fuente del webservice.php:

http://forums.fivetechsupport.com/viewt ... 09#p219709
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Accediendo a MySQL desde FiveTouch

Post by Marcelo Roggeri »

Gracias Antonio, no lo había visto. Perdón.
Saludos
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
Post Reply