Accediendo a MySQL desde FiveTouch

Accediendo a MySQL desde FiveTouch

Postby Antonio Linares » Sun Mar 03, 2019 7:59 am

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  Expand view
#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: 42097
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Accediendo a MySQL desde FiveTouch

Postby Antonio Linares » Sun Mar 03, 2019 8:22 am

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

mysql.prg
Code: Select all  Expand view
#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
Antonio Linares
Site Admin
 
Posts: 42097
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Accediendo a MySQL desde FiveTouch

Postby Marcelo Roggeri » Thu May 02, 2019 3:01 pm

Hola Antonio, puedes mostrar el contenido de webservice.php asi veo que haces?
Muchas gracias
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina

Re: Accediendo a MySQL desde FiveTouch

Postby Antonio Linares » Thu May 02, 2019 6:13 pm

Marcelo,

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

viewtopic.php?p=219709#p219709
regards, saludos

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

Re: Accediendo a MySQL desde FiveTouch

Postby Marcelo Roggeri » Thu May 02, 2019 7:36 pm

Gracias Antonio, no lo había visto. Perdón.
Saludos
FWH - Harbour - BCC7 - PellesC
User avatar
Marcelo Roggeri
 
Posts: 342
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina


Return to FiveTouch

Who is online

Users browsing this forum: No registered users and 6 guests