Page 1 sur 1

Besoin d'aide pour développer une application chantier

Publié : ven. 21/mars/2025 10:25
par Richard60
Bonjour à toutes et tous :D

Tout d'abord je me présente, Richard, 49 ans qui souhaite apprendre à programmer en BASIC.
Je souhaite apprendre avec un projet de logiciel je l'espere pas trop compliqué dans lequel je pourrais :
  • Liste clients
  • Avoir une liste de chantier / client
  • mettre à jour un ou plusieurs devis sous forme de liste affectés aux chantier
  • Affecter des achats par devis
  • Affecter des heures / devis
  • faire des états /clients/devis/chantier
Alors oui je sais je pourrais surement faire ça avec access sans difficultés mais je souhaite faire tourner ma tête et apprendre un truc nouveau qui me fasse vibrer

Je suis preneur de conseil, sur la mise en forme, sur le code, et surement d'autres éléments auquels je ne pense pas encore
Quid de la base de données en format texte ou sur serveur type mysql

A très vite

Richard

Re: Besoin d'aide pour développer une application chantier

Publié : ven. 21/mars/2025 10:44
par falsam
Bonjour Richard et bienvenue sur notre forum.

Petite question : As tu acheté une licence PureBasic pour développer ton application ?

Re: Besoin d'aide pour développer une application chantier

Publié : ven. 21/mars/2025 11:00
par Richard60
Bonjour Falsam,
Oui depuis quelques jours, le logiciel est installé sur mon mac
A très vite

Re: Besoin d'aide pour développer une application chantier

Publié : ven. 21/mars/2025 11:17
par falsam
Seras tu le seul à utiliser cette application ?

Si oui -> Une base de données locale SQLite pourra être utilisée.
Si non -> Alors utilisation d'une base de données hébergée localement ou à distance type MySQL ou MariaDB

Exemple de code pour ouvrir une base de données sur ce lien https://www.purebasic.com/french/docume ... abase.html

Dans les deux cas tu devras passer par une base de données 😉

Re: Besoin d'aide pour développer une application chantier

Publié : ven. 21/mars/2025 20:33
par venom
Bonjour Richard60,

Soit le bienvenu sur le forum






@++

Re: Besoin d'aide pour développer une application chantier

Publié : lun. 24/mars/2025 18:24
par Richard60
falsam a écrit : ven. 21/mars/2025 11:17 Seras tu le seul à utiliser cette application ?

Si oui -> Une base de données locale SQLite pourra être utilisée.
Si non -> Alors utilisation d'une base de données hébergée localement ou à distance type MySQL ou MariaDB

Exemple de code pour ouvrir une base de données sur ce lien https://www.purebasic.com/french/docume ... abase.html

Dans les deux cas tu devras passer par une base de données 😉
Merci ce retour.
J'avais aussi pensé à faire la base de donnée aven libre Base de chez libre office, je pense que ça doit etre possible
A bientot

Richard

Re: Besoin d'aide pour développer une application chantier

Publié : lun. 24/mars/2025 18:26
par Richard60
Les requête pourrait se faire au travers de la base libreoffice (qui peut se connecter en local et à distance) avec une interface travaillée avec pure office

Re: Besoin d'aide pour développer une application chantier

Publié : lun. 24/mars/2025 22:21
par Marc56
Richard60 a écrit : lun. 24/mars/2025 18:26 Les requête pourrait se faire au travers de la base libreoffice (qui peut se connecter en local et à distance) avec une interface travaillée avec pure office
Utiliser libre office (675 Mo) juste pour utiliser sa base de données n'est pas une bonne solution (autant tout faire avec Libre Office ou Access).
Si le projet n'est utilisé que par une seule personne en même temps, le bon choix est SQLite.
Dans les autres cas, PostgreSQL ou MySQL/MariaDB
Dans tous les cas, une base SQL.
Toutes sont gérées directement par PB.
L'avantage de commencer avec SQLite est que pour passer ensuite à une autre base SQL, il n'y a que quelques lignes de code à modifier.

Re: Besoin d'aide pour développer une application chantier

Publié : mar. 25/mars/2025 8:12
par Richard60
Merci pour ces conseil, vraiment.
Je viens de créer la base de donnée, je vais me pencher la dessus et apprendre avec un vrai projet :D

Re: Besoin d'aide pour développer une application chantier

Publié : mar. 25/mars/2025 8:20
par falsam
Tu as opté pour quel type de base de données ?

Re: Besoin d'aide pour développer une application chantier

Publié : mar. 25/mars/2025 16:17
par Richard60
Je viens de créer une base de données MariaDB, c'est assez simple à connecter en plus, faut que je regarde comment faire pas à pas maintenant pour débuter
et l'avantage de la base "distante" c'est le coté multi-utilisateur et le nombre d'outils pouvant se connecter dessus sans perte de donnéed

Re: Besoin d'aide pour développer une application chantier

Publié : mar. 25/mars/2025 22:30
par Ar-S
Une base de donnée ne devrait pas être trop accessible en directe d'un soft PB (ou autre) locale. C'est dangereux, sauf si ta base contient des données non sensibles. Sinon tu devrais créer des pages PHP (chez ton hebergeur) et ton soft envoie des requêtes API à ces pages et ce sont ces pages qui traitent et envoient la demande au serveur. Le serveur répond à ces pages et ton soft récupère la réponse sur ces pages.

Re: Besoin d'aide pour développer une application chantier

Publié : mar. 25/mars/2025 23:57
par Ar-S
Je me suis amusé à utiliser l'API de randomuser pour créer un exemple d'appel API en PB.

Code : Tout sélectionner

; Utilisation de l'api randomuser
; Code : Ar-S - 2025/03/25
; Utilisation des appels API en purebasic
; Descriptif de l'api : https://randomuser.me/documentation#howto


Global randomUserApi$ = "https://randomuser.me/api/"

Declare CatchImage_Net(Adr$)
Declare.s FetchData(url$)
Declare ParseJSONResponse(response$)

Procedure CatchImage_Net(Adr$)
  Protected EXT.s, image
  ; By Ar-S
  EXT.s = LCase(GetExtensionPart(Adr$))
  Select EXT
    Case "jpg","jpeg"
      UseJPEGImageDecoder()
    Case "png"
      UsePNGImageDecoder()
  EndSelect
  
  *Buffer = ReceiveHTTPMemory(Adr$)
  If *Buffer
    Image = CatchImage(#PB_Any, *Buffer, MemorySize(*Buffer) )
    FreeMemory(*Buffer)
    ProcedureReturn Image
  Else
    ProcedureReturn 0
    
  EndIf
EndProcedure


Procedure.s FetchData(url$)
  Protected httpRequest, response$
  httpRequest = HTTPRequest(#PB_HTTP_Get, url$)
  
  If httpRequest
    If HTTPInfo(httpRequest, #PB_HTTP_StatusCode) = "200"
      response$ = HTTPInfo(httpRequest, #PB_HTTP_Response)
    Else
      Debug "Erreur code : " + HTTPInfo(httpRequest, #PB_HTTP_StatusCode)
    EndIf
    FinishHTTP(httpRequest)
  Else
    Debug "Erreur lors de la requête HTTP."
  EndIf
  
  ProcedureReturn response$
EndProcedure

Procedure ParseJSONResponse(response$)
  Shared json, results, user, name, title$, firstName$, lastName$, gender$, email$, pictureUrl$, MonImage
  
  If ParseJSON(0, response$)
    json = JSONValue(0)
    
    results = GetJSONMember(json, "results")
    If JSONArraySize(results) > 0
      user = GetJSONElement(results, 0)
      gender$ = GetJSONString(GetJSONMember(user, "gender"))
      name = GetJSONMember(user, "name")
      title$ = GetJSONString(GetJSONMember(name, "title"))
      
      ; je francise le titre et le genre pour la forme..
      If gender$ = "male" : gender$ = "Homme" : Else : gender$ = "Femme" : EndIf
      Select title$ 
        Case "Miss" 
          title$ = "Mademoiselle"
        Case "Ms", "Mrs"
          title$ = "Madame"
        Case "Mr"
          title$ = "Monsieur"
      EndSelect
      
      firstName$ = GetJSONString(GetJSONMember(name, "first"))
      lastName$ = GetJSONString(GetJSONMember(name, "last"))
      email$ = GetJSONString(GetJSONMember(user, "email"))
      pictureUrl$ = GetJSONString(GetJSONMember(GetJSONMember(user, "picture"), "medium"))
      MonImage = CatchImage_Net( pictureUrl$)
      
    Else
      Debug "Aucun utilisateur trouvé."
      End
    EndIf
    
  Else
    Debug "Erreur JSON."
  EndIf
  
EndProcedure


;--------- PROG --------------


jsonResponse$ = FetchData(randomUserApi$)

If jsonResponse$ <> ""
  ParseJSONResponse(jsonResponse$)
  
EndIf

; Création de la fenêtre
OpenWindow(0, 100, 100, 400, 200, "API vers RandomUser by Ar-S", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 10, 10, 380, 25, title$ + " " + firstName$ + " " + lastName$)
StringGadget(2, 10, 40, 380, 25, "Genre: " + gender$)
StringGadget(3, 10, 70, 380, 25, "Email: " + email$)
ImageGadget(4, 10, 100, 240, 240, ImageID(MonImage))
ButtonGadget(5,150,100,120,40,"Un autre ! ")

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Gadget
      
      Select EventGadget() 
        Case 5
          
          jsonResponse$ = FetchData(randomUserApi$)  
          If jsonResponse$ <> ""
            ParseJSONResponse(jsonResponse$)
            SetGadgetText(1, title$ + " " + firstName$ + " " + lastName$)
            SetGadgetText(2, gender$)
            SetGadgetText(3, email$)
            MonImage = CatchImage_Net( pictureUrl$)
            SetGadgetState(4, ImageID(MonImage))

          EndIf
          
      EndSelect

  EndSelect
  
Until Event = #PB_Event_CloseWindow

Re: Besoin d'aide pour développer une application chantier

Publié : mer. 26/mars/2025 14:08
par falsam
Merci Ar-s pour ce code qui met en œuvre ce générateur de personnes. Le lorem Ipsum pour générer des gens est génial.

Re: Besoin d'aide pour développer une application chantier

Publié : mer. 02/avr./2025 20:46
par venom
Ah ouai pas mal ce lien. Merci du partage Ar-S 8) c'est rigolo







@++