besoin d'aide pour un ptit soft de rien du tous

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

besoin d'aide pour un ptit soft de rien du tous

Message par MetalOS »

Bonjour à tous, voila je cherche à faire un petit soft pour un amis qui est pompier volontaire, il consulte en temp réél les interventions dans tous le département à partir d'une page php, cette page est rafraichit à chaque nouvelle intervention ou chaque fin d'intervention (mais pour la fin d'intervention d'une caserne, elle disparait de la liste). J'aimerais pouvoir lui faire un petit soft de rien du tous qui l'avertirais par un messagerequester() que ca caserne à eu une intervention. A s'avoir que si il y a une deuxième intervention il aurra un deuxiéme messagerequester() etc.......

Mais attention il ne faut pas que à chaque rafraichissement de la page il ai un messagerequester() pour les véhicules ou caserne déja sortie.

Je ne sais pas si c bien expliquer ??????

Enfin en gros je ne c pas comment mis prendre si quellqu'un pouvais m'aider. Merci.

voici la page en question http://www.sdis54.fr/interventions.php
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

il suffit de regarder chaque intervention présente dans la page à chaque refresh.
Pour chaqu'une d'entre elle, il faut regarder dans une liste chainée gérée par ton logiciel si elle a déjà été sonnée. Si oui, alors on l'ignore, si non, un petit message requester et on ajoute l'intervention dans la liste chainée.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

merci pour ta réponse poshu, tu aurrais une source d'exemple car la je sèche ca fait 2 heure que je cherche mais je comprend pas trop la gestion d'une liste chainée.
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

en fait le plus simple c'est de

récupérer les informations sur chaque interventions listées sur la page dans l'ordre

si une info concerne sa caserne tu compare l'intervention avec le contenu d'une liste chainée ou un tableau si tu y arrive mieux :)

si l'intervention n'est pas dans ta liste tu ajoute l'intervention a la liste et tu affiche ton message

si l'intervention est déjà dans la liste tu passe a l'information suivante

et tu fais ca toute les 180 secondes puisque c'est le 'refresh' de la page visiblement
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Merci case pour ta réponse, il y a des commandes spécial de PB pour récuperer des infos d'une page internet, car c la que ca coince pour moi et je ne trouve pas.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

La récupération des infos, il faut la faire toi-même.

Tu peux charger la page dans un WebGadget sur une fenêtre invisible, et récupérer le code source de la page dans une variable, avec la fonction GetGadgetItemText(#Web, #PB_Web_HtmlCode).

Tu peux connaitre le nombre d'interventions en cours en comptant le nombre de balises <tr >.

Ensuite, avec une boucle, il faut récupérer ce qui est contenu dans les balises <td > </td>

Plus facile à dire qu'à faire, mais c'est faisable.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Essaye de mettre à jour la version beta 4.20, au niveau du net y'a des commandes sympa.


Maintenant pour gérer le contenu d'une page web, j'utilise les procédures :
(marche aussi avec les version anterieurs)

Code : Tout sélectionner

ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
  ;/ Author : Pille
  isLoop.b=1
  INET_RELOAD.l = $80000000
  hInet.l=0
  hURL.l=0
  Bytes.l=0
  Buffer.s= Space (2048 )
  RES.s= ""
  hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
  hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
  Repeat
    InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes)
    If Bytes = 0
      isLoop=0
    Else
      RES = RES + Left (Buffer, Bytes)
    EndIf
  Until isLoop=0
  InternetCloseHandle_ (hURL)
  InternetCloseHandle_ (hInet)
  ProcedureReturn RES
EndProcedure

ProcedureDLL.s Url2Text(Url.s)
  ProcedureReturn Url2Text2(Url,1, "" )
EndProcedure 
Ensuite avec

Code : Tout sélectionner

Url$="http://www.sdis54.fr/interventions.php" 
Source$=Url2Text(Url$)
tu auras la source de ta page contenu dans Source$

Ensuite à toi de traiter son contenu :wink:
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

merci pour ces réponses je vais essayer ca, et je vous tiens au courant.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

bon ben j'y comprend rien, je laisse tomber et je verrais ca plus tard merci quand même.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

MetalOS a écrit :bon ben j'y comprend rien, je laisse tomber et je verrais ca plus tard merci quand même.
:lol:
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

rigole pas chris :lol: je laisse juste tomber pour 2 ou trois ans :lol: . non je verrais ca demain car ca fait au moin 24h00 que je planche dessus et la j'ais le cerveau retourner , du coup ca me gonfle un peut.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Tu laisses tomber :
pour un ptit soft de rien du tous
Feignasse! va
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Non je ne suis pas feignasse :lol: , bon voila j'utilise le code de Ar-S pour récupérer le code source de la page dans une variable, ensuite je pensais ecrire le contenue de la variable dans un fichier texte pour pouvoir ensuite lire le fichier texte et faire de la comparaisons pour affichez l'info qu'il me faut. Enfin bref j'en suis pas encore la pour le moment. voici le code que j'utilise pour ecrir le contenue de ma variable dans un fichier texte.

Code : Tout sélectionner

OpenFile(0, "SourceCode.txt") 
      FileSeek(0, Lof(0))
         WriteString(0, Source$, #PB_Ascii)
CloseFile(0)
Mais l'orsque j'ouvre mon fichier texte avec notpad, ca ma écrit le code source au moin 20 fois dans le fichier alors qu'une seul fois m'aurait suffit.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Non je ne suis pas feignasse
ah ok, j'ai cru un moment :lol: Pour ton fichier texte tu devrais peut-être tester ta Source$ en l'affichant en mode debug ( ou dans un EditorGadget() ) voir si tu récupères bien la page une seule fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

En mode debug, il me met le code source de la page au moin 20 fois et je c pas pourquoi.
Voici le code source complet:

Code : Tout sélectionner

;/ Created with PureVisionXP v4.03

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Form1
  #Window_Form2
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue


;- Gadget Constants
Enumeration 1
  ;Window_Form1
  #MenuBar_Form1_Fichier
  #MenuBar_Form1_Quitter

  #Gadget_Form1_Web2


  ;Window_Form2
  #Gadget_Form2_Text4
  #Gadget_Form2_Text5
  #Gadget_Form2_Text6
  #Gadget_Form2_Text7
  #Gadget_Form2_Button8


EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


;- MenuBar Constants
Enumeration 1
  #MenuBar_Form1
EndEnumeration
#MenuBarIndex=#PB_Compiler_EnumerationValue


;- StatusBar Constants
Enumeration 1
  #StatusBar_Form1
EndEnumeration
#StatusBarIndex=#PB_Compiler_EnumerationValue
#StatusBar_Form1_Field1 =0
#StatusBar_Form1_Field2 =1

ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s) 
  ;/ Author : Pille 
  isLoop.b=1 
  INET_RELOAD.l = $80000000 
  hInet.l=0 
  hURL.l=0 
  Bytes.l=0 
  Buffer.s= Space (2048 ) 
  RES.s= "" 
  hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0) 
  hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0) 
  Repeat 
    InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes) 
    If Bytes = 0 
      isLoop=0 
    Else 
      RES = RES + Left (Buffer, Bytes) 
    EndIf 
  Until isLoop=0 
  InternetCloseHandle_ (hURL) 
  InternetCloseHandle_ (hInet) 
  ProcedureReturn RES 
EndProcedure 

ProcedureDLL.s Url2Text(Url.s) 
  ProcedureReturn Url2Text2(Url,1, "" ) 
EndProcedure 

Procedure.l Window_Form1()
  If OpenWindow(#Window_Form1,411,108,480,348,"Interventions en cours.",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
    CreateMenu(#MenuBar_Form1,WindowID(#Window_Form1))
      MenuTitle("Fichier")
      MenuItem(#MenuBar_Form1_Quitter,"Quitter")
    If CreateGadgetList(WindowID(#Window_Form1))
      WebGadget(#Gadget_Form1_Web2,0,1,480,304,"http://www.sdis54.fr/interventions.php")
      PVDynamic_AddStatusBar(#Window_Form1,#StatusBar_Form1,CreateStatusBar(#StatusBar_Form1,WindowID(#Window_Form1)),2)
        AddStatusBarField(200)
        AddStatusBarField(200)
      PVDynamic_AddLockWindow(#Window_Form1,#StatusBar_Form1,1,3)
      PVDynamic_AddGadget(#Window_Form1,#Gadget_Form1_Web2,3)
      HideWindow(#Window_Form1,0)
      ProcedureReturn WindowID(#Window_Form1)
    EndIf
  EndIf
EndProcedure


Procedure.l Window_Form2()
  If OpenWindow(#Window_Form2,437,221,464,110,"Départ.",#PB_Window_ScreenCentered|#PB_Window_Invisible)
    Brush.LOGBRUSH\lbColor=255
    SetClassLong_(WindowID(#Window_Form2),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
    If CreateGadgetList(WindowID(#Window_Form2))
      TextGadget(#Gadget_Form2_Text4,2,4,454,26,"Départ intervention Centre de Secours de BAYON.",#PB_Text_Center)
        SetGadgetColor(#Gadget_Form2_Text4,#PB_Gadget_BackColor,255)
        SetGadgetFont(#Gadget_Form2_Text4,LoadFont(#Gadget_Form2_Text4,"Georgia",14,0))
      TextGadget(#Gadget_Form2_Text5,194,32,59,20,"à",#PB_Text_Center)
        SetGadgetColor(#Gadget_Form2_Text5,#PB_Gadget_BackColor,255)
        SetGadgetFont(#Gadget_Form2_Text5,LoadFont(#Gadget_Form2_Text5,"Georgia",12,0))
      TextGadget(#Gadget_Form2_Text6,185,58,39,15,"Heure :")
        SetGadgetColor(#Gadget_Form2_Text6,#PB_Gadget_BackColor,255)
      TextGadget(#Gadget_Form2_Text7,221,58,60,15,"00h00",#PB_Text_Center)
        SetGadgetColor(#Gadget_Form2_Text7,#PB_Gadget_BackColor,255)
      ButtonGadget(#Gadget_Form2_Button8,2,83,461,21,"Quitter l'alarme")
      HideWindow(#Window_Form2,0)
      ProcedureReturn WindowID(#Window_Form2)
    EndIf
  EndIf
EndProcedure

Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  If Message=#WM_GETMINMAXINFO
    ReturnValue=PVDynamic_LockWindow(WindowID,lParam)
  EndIf
  If Message=#WM_SIZE
    ReturnValue=PVDynamic_Resize(WindowID)
  EndIf

  If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or Message=#WM_CTLCOLORLISTBOX
    ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
  EndIf

  ProcedureReturn ReturnValue
EndProcedure

Url$="http://www.sdis54.fr/interventions.php" 
Source$=Url2Text(Url$) 


;- Main Loop
If Window_Form1()
  SetWindowCallback(@WindowCallback())

  quitForm1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()

    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Form1
          quitForm1=1
        EndIf

      Case #PB_Event_Menu
        Select MenuID
          Case #MenuBar_Form1_Quitter
           End
        EndSelect

      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Form1_Web2
          
            OpenFile(0, "SourceCode.txt") 
              FileSeek(0, Lof(0))
               WriteString(0, Source$, #PB_Ascii)
            CloseFile(0)
       Debug Source$
        EndSelect

    EndSelect
  Until quitForm1
  CloseWindow(#Window_Form1)
EndIf
End
Répondre