Stocker des données textuelles

Fermé
Halpness - 9 janv. 2020 à 09:55
 Kazje - 10 janv. 2020 à 00:35
Bonsoir,

J'ai besoin de vos lumières, je n'ai pas la moindre connaissance en JavaScript, mais je me suis pourtant lancé dans l'écriture et/ou le bricolage d'un script de quelques lignes.

L'objectif du script est le suivant :

> Identifier les popups qui s'affichent sur mon site.
> Récupérer le contenu de celles-ci.
> Stocker et centraliser ces données vers un endroit bien précis.

(function(){
 
    "use strict";
 
    let aspirePopup = function(){
 
        let notif = document.getElementById("notification");
        if(notif.classList.contains("showNotif") && !notif.classList.contains("detected")) {
            let text = document.getElementById("notificationText").textContent;
            localStorage.setItem('ContenuPopUp', text);
            alert(localStorage.getItem('ContenuPopUp'));
        }
    };
 
    js.XmlHttp._asp_onEnd = js.XmlHttp.onEnd;
    js.XmlHttp.onEnd = function() {
        this._asp_onEnd();
        aspirePopup()
    };
 
})();


Je me suis débrouillé pour les deux premières parties, mon script parvient à identifier les popups et à en récupérer le contenu (contenu que j'affiche avec une alerte pour m'assurer que cela fonctionne). Mais je bloque à la dernière étape, il est effectivement prévu que plusieurs utilisateurs utilisent ce script et je cherche donc un moyen de centraliser vers un endroit précis (auquel j'aurais donc accès) l'ensemble des contenus identifiés par le script de chaque utilisateur.

Par endroit, je suis volontairement flou, je n'ai pas la moindre idée de ce que ça pourrait être (un serveur dédié, un site permettant de stocker des données, gsheet, ...).

Je m'étais un peu renseigné pour un export sous GSheet mais ça me semble trop au dessus de mes maigres connaissances, et je ne me vois pas payer un serveur pour un hébergement de quelques lignes textuelles que j'effacerai au fil du temps. Mais à voir ce qu'il est envisageable de faire.


Je suis ouvert si vous avez la moindre question,
Halpness

1 réponse

Bonjour,
par définition une page web ne stocke rien. C'est même l'inverse: elle est stockée et diffusée sur le réseau à partir d'un serveur (l'hébergeur) pour être disponible pour l'ordinateur de l'internaute quand il la demande.
Ce qu'il est possible de stocker en JavaScript se fait en local donc UNIQUEMENT pour l'ordinateur qui utilise la page. Ce n'est donc pas fiable et ne correspond pas à ce que vous voulez(plusieurs utilisateurs) mais ça existe toutefois: regardez du côté des cookies ou encore mieux de localStorage.

La seule solution pour stocker des données (quelle que soit leur nature ça ne change pas grand chose) ce sont les bases de données et pour ça il faut faire un programme qui ne fonctionnera pas uniquement sur l'ordinateur du client(celui qui 'commande' et reçoit la page web) mais côté serveur. C'est par exemple le duo PHP + mySQL pour la base(fréquemment utilisé car avec beaucoup de docs et gratuit).
Vous pouvez voir le principe expliqué ici et qui permet aux sites d'avoirs des pages ou zones dynamiques(qui évolueront en fonction du temps et d'autre facteurs qui sont définis dans le programme) :
https://fr.wikipedia.org/wiki/Architecture_trois_tiers

Ceci garantit la sécurité des données et permet aussi à la plupart des sites (99%) d'exister.
Par exemple sur un forum comme celui là la même page va servir de modèle et 'charger' les données à partir du programme serveur. Il n'y a donc pas une page ou un programme écrit pour chaque question et sujet mais une automatisation qui permet:
_d'ajouter dans la base de données un nouveau sujets et ses réponses éventuelles
_d'afficher celles ci à partir de tri( on parle de base de données relationnelles, ici la relation est simple: on peut grouper par thème ou par sujet et donc afficher tous les sujets sur un thème donnée, tous le sujet avec le message original et ses réponses...).
0
Bien sûr cela implique de faire les champs de la base de données(on parle aussi de table car il y a des lignes et colonnes pour chaque champs de données, une table et le regroupement de champs et leur valeurs). Il faut aussi un serveur de bases de données. Ceux ci étant à la base de la grande majorité(plus que ça) des sites ce n'est pas rare et compris dans la plupart des hébergements de base de sites.

En ce qui concerne votre code vous faites appel à la technologie asp(voisine de PHP mais payante car faite par Microsoft) et plus précisément à la technologie AJAX.
C'est à partir de là que votre code ne marche plus(vous pouvez vérifier localStorage qui comme indiqué en lisant la doc (ou même le nom de la fonction)ne permet que d'enregistrer de manière locale: sur l'ordinateur de l'utilisateur):
Vous devez avoir un serveur asp configuré et connecté.
La technologie AJAX fait appel aux bases de données et pour réduire le temps des requêtes à celles ci (ou à un serveur de programme) à préparé avant(de manière asynchrone) les résultats à fournir(ce sont des méta-données et non les données réelles, dans le sens où elles sont traitées pour anticiper une réponse qui peut être demandée).
Donc sans les données (ç.à.d. leur système de stockage ou plus largement le système d'information associé à votre site) mettre en place AJAX (xmlHttp est une fonction AJAX qui demande une connexion avec les données, les reçoit et indique qu'elle les a reçue - d'où le .onEnd qui se dirais lorsque c'est reçut en français)qui est une évolution d'un programme qui permet d'extrapoler sur les demandes à venir faites la base(requêtes SQL) cette technologie n'a pas vraiment sa place.

Pourquoi ce(s) fonctionnements(s)(AJAX ou simplement la nécessité du programme passerelle entre la base et la page web?

Simplement parce qu'il serais mal venu qu'un utilisateur puisse en se connectant à Internet avoir accès au contenu des pages (sur la base de données) et de pouvoir les consulter allégrement(mot de passe, facture, fichiers clients...)ou les modifier voire carrément les effacer(tout ce que fait la base donc qui permet d'enregistrer comme gérer les contenus qui sont enregistrés).

Vous pouvez voir en corrigeant les erreurs(affichées dans la console du navigateur) où ça coince et que vos données sont bien enregistrées où vous avez indiquées: dans une variable associée à localStorage en local UNIQUEMENT donc sur votre ordinateur.

Si vos besoins sont de devoir gérer des informations en interne pour plusieurs utilisateurs il faut que ces informations soient disponibles sur le réseau.
Tout se fera donc sur le réseau(JavaScript ne fonctionnant que par le navigateur il fonctionne lui en local: sur l'ordinateur de l'internaute UNIQUEMENT) il vous faut penser à une base de données et à un Intranet de gestion(gros mot pour dire que c'est un réseau privé qui passe par Internet, par exemple avec un identifiant et un mot de passe de connexion qui permettent d’accéder à un espace privé comme un espace membre, une interface de gestion ou d'administration du site et interne au site...).

Quelques rudiments qui pourront vous aider à comprendre si vous désirez faire cela:

https://www.commentcamarche.net/contents/784-php-bases-de-donnees
à compléter bien sûr par des cours/tuto un peu moins vulgaires et sommaires sur la conception analyse de bases de données, leur gestion et administration(le langage SQL) et des vrais cours sur le langage serveur (que ce soit PHP ou ASP qui se ressemble beaucoup ou une autre technologie correspondant à vos choix techniques).


En espérant avoir éclairci le "comment ça marche", bon développement.
0