Page 1 sur 2

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

Publié : sam. 05/janv./2008 0:53
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

Publié : sam. 05/janv./2008 2:23
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.

Publié : sam. 05/janv./2008 2:40
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.

Publié : sam. 05/janv./2008 3:03
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

Publié : sam. 05/janv./2008 13:26
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.

Publié : sam. 05/janv./2008 13:37
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.

Publié : sam. 05/janv./2008 13:47
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:

Publié : sam. 05/janv./2008 13:48
par MetalOS
merci pour ces réponses je vais essayer ca, et je vous tiens au courant.

Publié : sam. 05/janv./2008 17:10
par MetalOS
bon ben j'y comprend rien, je laisse tomber et je verrais ca plus tard merci quand même.

Publié : sam. 05/janv./2008 17:18
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:

Publié : sam. 05/janv./2008 17:57
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.

Publié : sam. 05/janv./2008 18:58
par Jacobus
Tu laisses tomber :
pour un ptit soft de rien du tous
Feignasse! va

Publié : sam. 05/janv./2008 19:37
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.

Publié : sam. 05/janv./2008 19:45
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.

Publié : sam. 05/janv./2008 19:53
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