Je fais un site où l'utilisateur doit pouvoir enregistrer des données (en gros, je veux faire un planning pour les dates de réservation d'une maison où chacun met les dates où il peut venir). La boite de dialogue est en javascript, comment je dois enregistrer les données ? En fichier texte ? En SQL ? Merci !
Après tout dépend de la taille de ta BDD. 1 seule table ou 50 tables ?
là va faire la différence.
Pas beaucoup de table (3 maxi) = tu peux utiliser des fichiers .txt ou < 10: donnees.xml
Au-delà, il est préférable d'avoir un support sérieux qui peut traiter beaucoup de données donc c'est selon la taille de ta BDD en fait et le nombre d'infos que tu dois stocker
En JS tu fais une requête Ajax qui exécute un script côté serveur comme PHP. Le script interroge la DB puis renvoie toutes les infos au format json. On le parcours en JS puis on injecte le tout dans le document HTML.
Le plus important est de décider quelle concept tu veux mettre en place afin d'en déduire la solution et les méthodes...
D'accord, merci pour ces liens, je vais regarder ça...
En gros voilà mon site : trazmor.esy.es (cest moche mais je fais la forme en dernier, d'abord le fond)
La colonne de gauche représente les familles et la ligne du haut représente les maisons. Chacun clique sur la case correspondante et rentre ses dates, en xml, il faudrait un fichier par maison ou je peux tout faire avec un seul fichier ?
Ensuite on envoie cela côté serveur. Reste à choisir le mode de sauvegarde, fichier texte ou en DB.
Pour l'inverse on renvoie le texte sous forme de chaîne de caractère (normal) ou au format json si DB. On Split (découpe) la chaîne, le caractère | sert seulement de séparateur.
Ce code envoi la liste sous forme de chaine de caractère ( le contenu du alert() de mon code) au fichier traitement.php. C'est de type GET, comme pour un formulaire HTML.
Toujours en PHP, tu enregistre la liste soit dans un simple fichier texte ou en DB. Puis tu informe que tout c'est bien passé en fin de code PHP. Si oui un simple echo '1' / sinon echo '0'
success: function(data) -> le data reçois le contenu du echo (1 ou 0). Tu peux ainsi savoir ou informer l'utilisateur que ces données ont bien été enregistrées.
Pour les récupérer c'est le même principe, sauf que le PHP va renvoyer une chaine de type texte, ou un json -> echo $liste par exemple.
Cette information sera la aussi contenu dans data . Une simple boucle JS pour découper ( séparateur | comme indicateur) et insérer dans le HTML de la page.
Voilà pour la théorie si Ajax te tente... évidemment cela va plus vite, on ne recharge pas la page HTML mais juste le tableau. C'est bien plus pratique pour l'utilisateur. Et tu n'a pas de PHP dans ton HTML puisque c'est le JS qui fait la requête. Ton fichier de travail peut rester en .html et non pas .php
ps: je parle de PHP, je vois que tu est plus en Java ou c++, mais le principe reste le même côté client bien sûr.
J'ai essayé de sauvegarder la chaine "liste" dans un txt en javascript mais ca ne fonctionne pas, voila mon code :
let element = document.querySelectorAll(".foo");
var btn = document.querySelector(".btn--valider");
btn.addEventListener('click', function() {
var liste = '';
for (var i = 0; i < element.length; i++) {
var str = element[i].innerHTML;
str = str.replace(' ', ''); // supprime le caractère espace html
liste += str + " | ";
}
alert(liste);
var fileSystem=new ActiveXObject("Scripting.FileSystemObject");
var monfichier=fileSystem.OpenTextFile("data.txt", 2 ,true); //Ouverture du fichier en mode écriture
monfichier.WriteLine(liste);
monfichier.Close();
alert("fini");
});
La première alerte s'affiche mais pas la deuxieme... Je vais essayer avec le fichier traitement.php comme tu propose. J'ai aucune idée de comment utiliser ta fonction, je n'ai jamais touché à une ligne de ajax ou jQuery, il faut l'utiliser comme n'importe quelle fonction en faisant $.ajax(); ?
Non c'est du jQuery, une bibliothèque JS qui simplifie les choses. Il faut donc charger les fichiers nécessaires. Rien de méchant, juste appeler son fichier CSS dans le <head> et le fichier JS.
Ensuite écrire dans un fichier texte en locale, ok ; mais pas une fois ton projet en ligne. C'est une sécurité qui empêche de le faire sur le poste du client, et heureusement.
Donc, ton projet est pour tourner le local ou prévu pour être en ligne ?
Mais la on sort du cadre HTML, il faut te rendre sur la forum JS une fois que tu as compris pour proposer un code. Au pire je peux t'aider par MP mais je ne suis pas toujours dispo. et ne code qu'en PHP (simple novice en java ou c#)
Dernière solution, la méthode standard: créer une interface par formulaire, faire le traitement côté serveur puis recharger page entière.
De plus: dans mon code j'utilise le séparateur |
- tu peux en choisir un autre, comme *, -, etc... du moment que l'utilisateur ne s'en serve pas dans son texte. Le | est une bonne solution je trouve.
- Dans mon code j'écris + " | " ; j'ai mis volontairement des caractères d'espace pour la visibilité. Il faudra les supprimer sous peine d'avoir des soucis lors du découpage, donc ce sera + "|";
- avec cette méthode (contenteditable) l'utilisateur peut faire un retour à la ligne (touche entrée). Ce qui entraine un <br> dan sla chaine, il faut aussi le supprimer comme on le fait avec . Ou alors bloquer la touche via JS.
Ce n'est pas des plus pertinent comme interface, bien pratique mais il faut prévoir de vérifier tout cela. Par contre PHP propose des filtres prêt à l'emploi pour nettoyer les chaines...
Voilà, ça fait beaucoup d'informations mais c'est juste pour te donner une idée. Il existe aussi certainement des plugins JS qui font cela, à voir sur le web...
-------------------
Perso voilà comment je procède dans ton cas : je prévois tout d'avance, le concept en me mettant à la place de l'utilisateur. je notes toutes les actions proposées. Je créé l'interface sur une feuille (ou autre). une fois que tout est clair je m'oriente vers telle ou telle méthode = langages à utilisés.
Autrement dit, il faut savoir et être sûr de ce que l'on veut proposer, reste à suivre la feuille de route.
Donc pour l'enregistrement, c'est bon, ca fonctionne !
Maintenant je voudrais que quand on arrive sur le site, les input soient synchronisés avec ce qui est dans le .txt, j'ai commencé en javascript, pour ça j'utilise document.getElementById() qui fonctionne bien mais je n'arrive pas avec document.getElementsbyName() ce qui m'évite d'avoir à renseigner un id en plus d'un name, une idée de comment faire ?
(Désolé pour le double post mais sinon vous avez pas la notification)
Bon tout cela reste de la théorie, maintenant il faut penser à faciliter la conception. ton tableau HTML est-il statique (en 3x3)?
Cette question définie la suite, rester sur le même principe ou passer au format json (toujours enregistré dans un simple fichier .txt) pour un tableau plus complexe...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le CSS ça peut craindre -->Conférence CSS3.CREATE