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
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 :
- 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

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

c'est rigolo
@++