Consultation des fichiers programmés en Pb sur Iphone

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Consultation des fichiers programmés en Pb sur Iphone

Message par omega »

Bonsoir,

En fait, j'ai une application développée en pb sous windows qui fonctionne bien (en mono et en réseau internet). Mon client me demande si c'est possible d'utiliser son Phone Mobile pour consulter ses fichiers? Avez-vous une idée ? Est ce possible?
Merci
Win7 (x64) 64 bits Pb 5.72
Bmld76
Messages : 116
Inscription : dim. 09/janv./2022 12:47

Re: Consultation des fichiers programmés en Pb sur Iphone

Message par Bmld76 »

Bonjour,

Ma solution est d'utiliser Spiderbasic. J'ai une application de caisse Spider pour iPad ( identique pour iPhone ) qui fonctionne avec des données clients enregistrés en ligne sur un serveurs Mysql. Spider ne permettant pas une connexion directe sur un serveur distant , je passe par une passerelle PHP. Le résultat est rapide et fiable , mon client l'utilise depuis plus d'un an.

Il m'est possible d'envoyer une trame. Je n'ai pas créé d'appli IOS car cela nécessite d'être développeur enregistré. Il suffit de créer un appli web avec icône.
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5

PureBasic 6.11 MacOS
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Consultation des fichiers programmés en Pb sur Iphone

Message par omega »

Bonjour Blmd76,

Et merci pour ces infos très utiles, moi qui ne connais rien sur SpiderBasic, j'aimerais si c'est possible voir un peu le code source de votre application pour avoir une idée générale sur l'utilisation du soft sur mobile.

Merci beaucoup d'avance
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Consultation des fichiers programmés en Pb sur Iphone

Message par falsam »

Comment sont stocké tes 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%
Bmld76
Messages : 116
Inscription : dim. 09/janv./2022 12:47

Re: Consultation des fichiers programmés en Pb sur Iphone

Message par Bmld76 »

Bonjour

Quand on développe en Purebasic, l'utilisation de Spiderbasic est très accessible. Je vais extraire de mon code un exemple fonctionnel d'accès à une base mysql. Je vous fais ca dans la semaine.

Ma structure : hébergement PHP - Mysql
programme PHP qui fait la requête et sérialise la réponse. ( sécurisé)
Programme en spiderBasic donc WebApp
Le prog SpiderBasic interroge le PHP puis désieraliser la réponse

Je vais vous mettre ca à dispo avec un exemple en ligne.

Image
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5

PureBasic 6.11 MacOS
Bmld76
Messages : 116
Inscription : dim. 09/janv./2022 12:47

Re: Consultation des fichiers programmés en Pb sur Iphone

Message par Bmld76 »

Bonjour,

Dans la présentation de ton problème, tu dis que les données sont accessibles en réseau. Je part du principe que tu utilises une base de donnée accessible de l'extérieur du restau genre Mysql ou autre. Si c'est une base sur un réseau local, tu dois l'ouvrir à internet.

Voici ma méthode pour lire ou écrire sur une base distante via une requête PHP avec PureBasic (poste info) et SpiderBasic (iOS)

Pour un affichage sur iOS, une solution PHP est possible mais le résultat avec SpiderBasic est plus efficace avec les gadgets, voir ci-dessous.

Programme en PureBasic. il est utilisable tel quel en utilisant ma requête de développement

Code : Tout sélectionner

;
;
; Bertrand maillard
; Lecture d'une base de donnée Mysql via un scrrip PHP
; 
; 

Enumeration 100 
  #Main
  #scroll
EndEnumeration

#site = "http://bmaillard.free.fr/test/requete_temp.php?code=2498" ; site de test

; procedure de désérialisation de la réponse
Procedure.i SplitString(String.s, Delimiter.s, Array Output.s(1))
  Define n, i
  n = 1 + CountString(String, Delimiter)
  Dim Output.s(n - 1)
  For i = 0 To n-1
    Output(i) = Trim(StringField(String, 1+i, Delimiter))
  Next i
EndProcedure


Procedure LitBase()
  
  ScrollAreaGadget(#Scroll, 10, 50, 480, 400, 480, 1000 )
  
  ; éxécution de la requet PHP
  *Buffer = ReceiveHTTPMemory(#site)
  If *Buffer
    Taille = MemorySize(*Buffer)
    Page.s = PeekS(*Buffer, Taille, #PB_UTF8|#PB_ByteLength)
    FreeMemory(*Buffer)
    
    Dim Requete.s(0)
    
    SplitString(Page, "§", Requete())  ; separation des enregistrements
    
    Nbitem = ArraySize(Requete())-1
    Debug (nbitem)
    
    x = 10
    Y = 10
    
    For i = 1 To  Nbitem
      Dim champs.s(0)
      SplitString(Requete(i), "/", champs())  ; separation des champs
      TextGadget(#PB_Any, X, Y, 100, 30,"id:"+champs(0))
      TextGadget(#PB_Any, X+100, Y, 100, 30,champs(1))
      TextGadget(#PB_Any, X+200, Y, 100, 30,champs(2))
      TextGadget(#PB_Any, X+300, Y, 100, 30,champs(3)+"*")
      y = y +20
    Next
  EndIf
  CloseGadgetList()

EndProcedure

If  OpenWindow(#Main, 50, 30, 500, 500, "lecture base ",#PB_Window_SizeGadget  | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  litbase()
  
  Repeat
    Event = WaitWindowEvent()
    Gadget = EventGadget();
    Type_Event= EventType()
    
    Select EventWindow()  
        
      Case #Main
        Select event
          Case #PB_Event_CloseWindow  ; If the user has pressed on the close button       
            Quit = 1    
        EndSelect  
    EndSelect   
 
  Until Quit = 1
EndIf

La requête en PHP

Code : Tout sélectionner

<?php
header('Content-type: text/html; charset=UTF-8');
ini_set ( 'display_errors' , 1 ) ;
session_start();
error_reporting(1);
/*
echo '<pre>';
echo "post";
print_r($_POST);
echo "get";
print_r($_GET);
print_r($_SESSION);
echo '</pre>';
*/
if ($_GET[code] == "2498")   // une petite sécurite d'accès
include ("database.php");

$db = mysql_connect($dbhost, $dbuname, $dbpass)or die('Erreur de connexion '.mysql_error());
mysql_select_db($dbname,$db) or die('Erreur de connnexion '.mysql_error())

$sql = "SELECT  id, date, heure, temp FROM  temperature LIMIT    0, 30";
$req = mysql_query($sql) or die('<br />Erreur SQL 947!<br>'.$sql.'<br>'.mysql_error());
echo mysql_num_rows($req)."§";  //retourne le nombre d'enregistrement 

while($tab = mysql_fetch_object($req))
	{	echo $tab -> id; 
	    echo "/";
	    echo $tab -> date; 
	    echo "/";
		echo $tab -> heure; 
	    echo "/";
		echo $tab -> temp; 		
	    echo "§";
}
//echo "§";
?>
</body>
Pour l'application IOS , solution en SpiderBasic. Le code est tres similaire sauf l'appel de procedure.

Image

Code : Tout sélectionner

;
;
; Bertrand maillard
; Lecture d'une base de donnée Mysql via un scrrip PHP
; 
; 

Enumeration Gadget 
  #MAinWindow
  #Scroll
EndEnumeration

#site = "requete_temp.php?code=2498" ; site de test


Procedure.i SplitString(String.s, Delimiter.s, Array Output.s(1))
  Define n, i
  n = 1 + CountString(String, Delimiter)
  Dim Output.s(n - 1)
  For i = 0 To n-1
    Output(i) = Trim(StringField(String, 1+i, Delimiter))
  Next i
EndProcedure  

Procedure HttpGetBase(Success, Result.s, UserData)  ; retour de la requete info
  
  ScrollAreaGadget(#Scroll, 5, 5, 335, 485, 330, 1000 )
  
  Dim Requete.s(0)
  Dim Donnee.s(0)
  
  If Success
    SplitString(Result, "§", Requete())  ; separe par enregistrement
    
    Nbitem = ArraySize(Requete())-1
    Debug (nbitem)  
    
    x = 10
    Y = 10
    
        For i = 1 To  Nbitem
          Dim champs.s(0)
          SplitString(Requete(i), "/", champs())  ; separation des champs
          TextGadget(#PB_Any, X, Y, 100, 30,"id:"+champs(0))
          TextGadget(#PB_Any, X+100, Y, 100, 30,champs(1))
          TextGadget(#PB_Any, X+200, Y, 100, 30,champs(2))
          TextGadget(#PB_Any, X+300, Y, 100, 30,champs(3)+"*")
          y = y +20
        Next
    
  Else
    SetGadgetText(#PB_Any, "Erreur"+ result+ " "+ sql) 
  EndIf
 CloseGadgetList()
EndProcedure

Procedure GadgetEvents()
  gadget = EventGadget()
  type_Event = EventType() 
  
  ; traitement des gadget
EndProcedure


Procedure Start()
  If OpenWindow(#MainWindow, 10, 10, 350, 500, "Base " );, #PB_Window_Background) ; |
    
    BindEvent(#PB_Event_Gadget, @GadgetEvents())
    HTTPRequest(#PB_HTTP_Get, #site , "", @HttpGetBase())   ; appel de la procedure asynchrone
    
  EndIf
EndProcedure

start()
Pour tester le code compilé : http://bmaillard.free.fr/test

Le code compilé doit-être placé sur le même domaine que la base de donnée.
_____________________________________________________________
IMAC 21.5 2012 Core I5 - 2.70 Ghz. 16 GB NVIDIA GeForce GT 640M 512 Mo. MacOs OCPL Sonoma 14.3
MacBook Air M1 - 8Go - Sonoma 14.5

PureBasic 6.11 MacOS
Répondre