Besoin d'aide pour développer une application chantier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

Besoin d'aide pour développer une application chantier

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

Bonjour Richard et bienvenue sur notre forum.

Petite question : As tu acheté une licence PureBasic pour développer ton application ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

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

Message par Richard60 »

Bonjour Falsam,
Oui depuis quelques jours, le logiciel est installé sur mon mac
A très vite
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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 😉
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message par venom »

Bonjour Richard60,

Soit le bienvenu sur le forum






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

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

Message 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
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

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

Message 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
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

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

Message 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.
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

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

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

Tu as opté pour quel type de base de données ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Richard60
Messages : 6
Inscription : ven. 21/mars/2025 10:14

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

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message par venom »

Ah ouai pas mal ce lien. Merci du partage Ar-S 8) c'est rigolo







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre