Records lokaal opslaan om ook offline te kunnen werken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Gerrit broekhuis

gerrit broekhuis

08/12/2014 14:28:07
Quote Anchor link
Ik heb een tijdje terug een PHP applicatie gemaakt voor een projectadministratie, incl. uren en ritten, waarbij records opgevraagd en gevuld worden i.c.m. een MySQL database. Dit werkt perfect, maar nu zit ik met het volgende.

De gebruikers van het systeem hebben niet altijd internet, dus het systeem is niet altijd bruikbaar, bijvoorbeeld bij gebruik op lokatie. Nu is vooraf wel bekend welke records op een dag gebruikt gaan worden, dus ik zit er aan te denken om die records op de een of andere manier eerst naar een lokaal bestand te bufferen (dan is er nl. nog wel internet). Vervolgens moet de applicatie wanneer er geen internet is gebruik gaan maken van de lokale records en wanneer er later wel weer internet is, moet ik de lokaal gebufferde records weer kunnen inlezen in de MySQL database.

Het moet systeemonafhankelijk werken, dus op een laptop, smartphone en tablet, ongeacht of het Windows is, Android of IOS en ongeacht welke browser gebruikt wordt. De huidige applicatie werkt nl. ook zo en dat is mede de kracht van het systeem.

Het hoeft niet allemaal geautomatiseerd te gaan, dus export en import van een of meer records mag handmatig. Hoe pak ik dit praktisch aan? Waar vind ik voorbeelden?
 
PHP hulp

PHP hulp

01/12/2020 13:19:33
 
John D

John D

08/12/2014 14:52:06
Quote Anchor link
Misschien moet je denken aan in geval van offline een Excel achtige toepassing. Vooraf Spreadsheet downloaden/uploaden interface. Offline gebruiken
Gewijzigd op 08/12/2014 14:53:01 door John D
 
Gerrit broekhuis

gerrit broekhuis

08/12/2014 15:00:59
Quote Anchor link
Export naar Excel is geen optie, tenzij ik het XLSX bestand zou kunnen gebruiken in een HTML pagina als "database", maar dat kan ik me zo niet voorstellen. Lokaal werken in Excel wijkt teveel af van van de huidige interface, nog even afgezien van de benodigde licenties. Ik stel me voor dat we dit toch in een HTML pagina gaan verwerken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/12/2014 15:54:07
Quote Anchor link
Gebruikers zouden een HTML pagina kunnen opslaan wanneer zij internet hebben en dit bestand weer kunnen openen offline. Maar een formulier bijwerken en dan verzenden dat moet je echt vergeten als men offline werkt.

Overigens kun je in HTML5 redelijk wat informatie opslaan met het localStorage Object. Ik heb geen idee of dat al een beetje op de handhelds ondersteunt wordt. En daarnaast lijkt het me lastig om een gebruiker te laten schakelen tussen offline en online.
 
John D

John D

08/12/2014 16:07:26
Quote Anchor link
==>>Export naar Excel is geen optie
Ik heb een keer een project gezien waarbij op de laptops een applicatie draaide die met een Oracle database op de laptop functioneerde (40 laptops) en waarbij er zodra er contact was met het netwerk automatisch een geprogrammeerde sync startte naar de centrale database. Iedere monteur had zijn eigen regio dus het syncen was niet complex. In jouw geval zou je dat kunnen doen met XAMP (apache/mysql/php) bijvoorbeeld. Is wel een flink project. Met name het syncen van de MySQL databases.
Gewijzigd op 08/12/2014 16:08:54 door John D
 
Gerrit broekhuis

gerrit broekhuis

08/12/2014 16:08:27
Quote Anchor link
Frank,

Ik zoek dus eigenlijk een lokale database o.i.d. waarin in gegevens kan bufferen. Schakelen tussen online en offline krijg ik zo te zien wel voor elkaar.

Toevoeging op 08/12/2014 16:09:52:

John, XAMP krijg ik volgens niet op alle devices aan de praat; denk aan smartphones, ipads.
 
John D

John D

08/12/2014 16:09:58
Quote Anchor link
Gerrit broekhuis op 08/12/2014 16:08:27:
Ik zoek dus eigenlijk een lokale database o.i.d. waarin in gegevens kan bufferen. Schakelen tussen online en offline krijg ik zo te zien wel voor elkaar.
MySQL is eenvoudig op laptops te draaien maar ik denk dat je dan ook wel apache nodig hebt dus XAMP oid.

==>> niet op alle devices
Inderdaad Gerrit, je was me net voor :(
SQLite kan je toepassen op android maar op IOS? Geen idee.
Gewijzigd op 08/12/2014 16:14:38 door John D
 
Gerrit broekhuis

gerrit broekhuis

08/12/2014 16:19:17
Quote Anchor link
Frank,

LocalStorage Object ziet er veelbelovend uit en HTML5 is nu toch wel overal ingeburgerd lijkt me. Dit gaat me wel een avondje kosten :-)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/12/2014 16:36:16
Quote Anchor link
Maak dan eerst maar een testcase. Zou zonde zijn als je er een hoop tijd in stopt en later blijkt het niet toereikend te zijn...
 
Gerrit broekhuis

gerrit broekhuis

08/12/2014 21:39:19
Quote Anchor link
Bij onderstaande code in de body krijg ik geen resultaat op het scherm wanneer ik de geselecteerde database waarde wil gebruiken en weergeven op het scherm ter controle. Ik kan die selecteren in een lijstje en deze wordt op het scherm getoond. Gebruik ik de regel met "localStorage.setItem("project", "2014120801")" als voorbeeld, dan krijg ik de waarde wel weergegeven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php>
// code als php weergegeven voor de leesbaarheid; het is echter html code

<div id="result"></div>

<script>
// Check browser support
if (typeof(Storage) != "undefined") {
    // Store
    // localStorage.setItem("project", "2014120801");
    localStorage.setItem("project", <?php echo $getuserrow['PROJECT_ID'] ?)>;


    // Retrieve
    document.getElementById("result").innerHTML = localStorage.getItem("project");
}
else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}

</script>

<?>

Ik zit er nu al te lang naar te kijken en probeer morgen weer verder.
Gewijzigd op 08/12/2014 21:45:08 door gerrit broekhuis
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/12/2014 22:01:31
Quote Anchor link
Het kan vaak wel handig zijn om even te wachten tot de pagina geladen is. Weet niet of je daar aan gedacht hebt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
window.onload = function() {
    // nu de gegevens uit de storage halen
}
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.