5542 sujets

Sémantique web et HTML

Bonjour,
pour étudier un logiciel de base de données, j’ai eu l’idée d’utiliser mes propres achats et, donc depuis quelques mois, je note ce que j’achète dans une feuille de calcul Libre Office Calc que je transforme en CSV, fichier que j’importe ensuite dans ce logiciel de base de données.
Avec le temps, ce fichier CSV devient de plus en plus gros et donc long à mettre à jour.
J’ai eu l’idée de basculer sur MySQL mais j’aurais voulu faire un formulaire convivial pour entrer les données…

Le hic, c’est que non seulement j’achète plusieurs produits, mais dans une journée, je peux les acheter dans différents endroits. Il m’arrive aussi de rentrer plusieurs journées.
J’ai donc imbriqué les fieldsets. Voici le code simplifié :

fieldset class="jour"
    input name="jour[]"
    fieldset class="lieu"
         input name="lieu[]"
         fieldset class="produit"
                input name="produit[]"
         fieldset class="produit"
         . . . . .
   fieldset class="lieu"
         input name="jour[]"
         fieldset class="produit"


Le problème est que je ne vois pas comment faire correspondre le bon jour et lieu au bon produit avec ce système. Je récupère une liste de dates et de jours d’un côté et une liste de produits de l’autre. Smiley sweatdrop
Si vous avez une idée… merci. Smiley smile
Modifié par Zelena (24 Mar 2023 - 05:50)
Bonjour,

J'ai du mal à comprendre ce qui pour vous est dur à faire : si c'est le formulaire, ou si c'est la requête SQL.

Pour le formulaire, peut-être devriez-vous garder qu'une seule série de champs, et si par la suite vous souhaitiez les voir dans un certain ordre, il suffirait de les déplacer avec du CSS et du javascript. Par exemple, vous pourriez utiliser le module CSS grid layout, et sa propriété order (voir leur exemple).
a écrit :
Pour le formulaire, peut-être devriez-vous garder qu'une seule série de champs,

Que vous voulez-dire ? Vous suggérez que je retape à chaque fois la date et le lieu en plus des informations sur l’achat du produit ?
Modérateur
Salut,

Pourquoi un formulaire étant donné que tu as déjà des données en csv ?
niuxe a écrit :
Pourquoi un formulaire étant donné que tu as déjà des données en csv ?

Tout ce que j'ai compris, c'est qu'elle veut convertir son CSV en mySQL. Ce que je n'ai pas compris par contre, c'est le but du formulaire. Au début je pensais qu'il servait à récupérer les données, mais apparemment ce n'est pas ça...
Je suis personnellement très intéressé par ce sujet.
Depuis une vingtaine d’années je maintiens de nombreuses feuilles calcul et je trouve l’ergonomie des feuilles de calcul extrêmement pratique.
Pour mettre ces données dans une base de données je transfère les données vers le site et j’exécute un programme php pour les mettre dans la base de données.
Tous mes efforts pour définir une ergonomie à base de formulaires ne m’ont pas permis de trouver quelque chose qui soit comparable, même de très loin, à l’ergonomie d’une feuille de calcul.
Si quelqu’un propose une solution acceptable je suis preneur.
Modérateur
Bonjour,

@niuxe et Olivier C: il me semble que l'idée est d'arrêter de recourir au fichier csv et que ce sont des nouvelles données qui sont saisies via un formulaire.

À moins qu'il s'agisse d'entrer dans la base de données les données se trouvant dans le csv via un formulaire dans un 1er temps, pour ensuite s'en passer.

EDIT: et dans ce 2e cas (même s'il est probable qu'on pourrait faire un script pour automatiser l'insertion des données du CSV dans la base de données), si on passe par un formulaire, ça revient au même que si on souhaite saisir de nouvelles données comme dans le 1er cas.

Amicalement,
Modifié par parsimonhi (24 Mar 2023 - 16:48)
niuxe a écrit :
Salut,
Pourquoi un formulaire étant donné que tu as déjà des données en csv ?

C’est que je rentre chaque jour de nouvelles données…
MySQL me semble être mieux fait pour ajouter régulièrement de nouveaux enregistrements.
Olivier C a écrit :

Tout ce que j'ai compris, c'est qu'elle veut convertir son CSV en mySQL. Ce que je n'ai pas compris par contre, c'est le but du formulaire. Au début je pensais qu'il servait à récupérer les données, mais apparemment ce n'est pas ça...

Si, si, c’est le cas.
parsimonhi a écrit :
À moins qu'il s'agisse d'entrer dans la base de données les données se trouvant dans le csv via un formulaire dans un 1er temps, pour ensuite s'en passer.

Importer le fichier CSV dans une base de données ne pose pas de problèmes. (D’ailleurs c’est fait.)

Je me demandais juste s’il n’existait pas une méthode élégante pour éviter de remettre l’information de la date (qui peut changer ou pas, mais par défaut, elle devrait la même que celle du même fieldset date) et l’information du lieu (qui lui aussi implicitement devrait être celle du même fieldset lieu).

Les fieldset sont imbriqués :
un ou plusieurs fieldset date ? un ou plusieurs fieldset lieu ? un ou plusieurs fieldset produit

Je n’ai pas l’impression que ce cas ait été envisagé en HTML. Smiley decu

Le mieux que j’ai trouvé pour l’instant est d’utiliser le Javascript… Smiley confus
PapyJP a écrit :
Je suis personnellement très intéressé par ce sujet.
Depuis une vingtaine d’années je maintiens de nombreuses feuilles calcul et je trouve l’ergonomie des feuilles de calcul extrêmement pratique.
Pour mettre ces données dans une base de données je transfère les données vers le site et j’exécute un programme php pour les mettre dans la base de données.
Tous mes efforts pour définir une ergonomie à base de formulaires ne m’ont pas permis de trouver quelque chose qui soit comparable, même de très loin, à l’ergonomie d’une feuille de calcul.
Si quelqu’un propose une solution acceptable je suis preneur.

Ça me fait plaisir de savoir que vous allez bien. Smiley smile
parsimonhi a écrit :
Bonjour,
Est-ce qu'on a droit au javascript ?
Amicalement,

J’aurais bien aimé l’éviter mais je ne vois pas comment faire…
Modérateur
Bonjour,

Admettons qu'on utilise pas le javascript. Alors il me semble qu'il faut savoir a priori combien de champs on peut avoir. C'est comme pour un tableur : ton tableau doit être pré-défini (éventuellement on peut utiliser des macros dans le tableur, mais ça correspond au javascript pour le html).

Amicalement,
Modérateur
Zelena a écrit :

Importer le fichier CSV dans une base de données ne pose pas de problèmes.

J'ai posé la question, car j'ai eu peur que tu voulais ressaisir les données que tu as dans ton/tes fichier/s csv.

Zelena a écrit :

Je me demandais juste s’il n’existait pas une méthode élégante pour éviter de remettre l’information de la date (qui peut changer ou pas, mais par défaut, elle devrait la même que celle du même fieldset date) et l’information du lieu (qui lui aussi implicitement devrait être celle du même fieldset lieu).

Les fieldset sont imbriqués :
un ou plusieurs fieldset date ? un ou plusieurs fieldset lieu ? un ou plusieurs fieldset produit

Je n’ai pas l’impression que ce cas ait été envisagé en HTML. Smiley decu

Le mieux que j’ai trouvé pour l’instant est d’utiliser le Javascript… Smiley confus


Je t'avoue avoir un peu de mal à comprendre ton contexte. Ton exemple html plus haut n'est pas très clair. Aussi, je ne vois pas l'intérêt du js.

Pour moi, ce qui est simple est (suivant ton besoin) :
- 2 tables : produits; lieu
- tu te crées un gridview
- tu te crées un formulaire (pour la création de tes données en base) simple réunissant les champs à saisir.
- Dans ce formulaire, tu auras 3 boutons :
-- annuler (revenir vers le gridview)
-- enregistrer
-- enregistrer et créer un nouvel achat produit.

Ce formulaire, tu le réutiliseras pour éditer un produit. Cependant, tu pourras rajouter un bouton supprimer

en ce qui concerne la date, tu peux utiliser le paramètre current_timestamp() :


CREATE TABLE products (
    # id, name, price, qty, etc.
    # ...
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated DATETIME ON UPDATE CURRENT_TIMESTAMP
)


Au passage, pour ce genre de chose, je l'aurais fait avec MongoDB (base de données NoSQL[^1] orientées documents) avec une seule collection (équivalent de table)

[^1]: Not only SQL
Modifié par niuxe (25 Mar 2023 - 02:57)
Merci pour ces réponses détaillées.
Je posterai un bout de code : ce sera peut-être plus parlant… Smiley ohwell
Modifié par Zelena (25 Mar 2023 - 08:30)