IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pourquoi lorsque je soumets mon formulaire, seuls les styles généraux sont capturés dans $_POST


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Pourquoi lorsque je soumets mon formulaire, seuls les styles généraux sont capturés dans $_POST
    Bonjour,
    Dans le cadre d’un CMS où les pages de styles sont encode dans une base de données, afin de pouvoir les modifiés et (re)-généré le fichier css.

    J’ai donc une page php qui m’affiche les données provenant de ma base de données en fonction de l’id de la page css reçu via $_GET page.php?id=1 .

    Jusque là tous va bien, les styles généraux comme les styles @media spécifique s’affiche parfaitement !

    Le problème que je rencontre c’est lors de la mise à jour des styles (généraux et/ou @media), le résultat de la soumission de mon formulaire, quand je fait un print_r($_POST) ne m’affiche que les styles généraux.

    Et il semblerais aussi qu’une seul valeurs transmise, soit prise en compte

    Pourriez –vous m’aiguiller sur où se situerais le problème

    J'ai des champs de formulaire respectifs pour les styles généraux écrits comme suit :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="<?= $item['property_name'] . '_' . $item['styles_id']; ?>" class="form-control form-control-sm" value="<?= htmlspecialchars_decode($item['property_value']); ?>">

    Et pour les styles @media comme celui-ci*:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="<?= $max_600px_style['property_name'] . '_' . $max_600px_style['styles_id']; ?>" class="form-control form-control-sm" value="<?= htmlspecialchars_decode($max_600px_style['property_sm_value']); ?>">

    Itéré par foreach.

    HTML du formulaire*:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <form method="post" action="page.php">
        <!-- Fields for general styles -->
        <div class="row pb-1">
            <div class="col-xl-3">btn-caption</div>
            <div class="col-xl-3">color</div>
            <div class="col-xl-3"><input type="text" name="color_23" class="form-control form-control-sm" value="#808080"></div>
            <div class="col-xl-1"><input type="text" name="" class="form-control form-control-sm" value="Yes"></div>
        </div>
        <!-- Fields for @media styles -->
        <div class="row pb-1">
            <div class="col-xl-3">btn-caption</div>
            <div class="col-xl-3">font-size</div>
            <div class="col-xl-3"><input type="text" name="font-size_25" class="form-control form-control-sm" value="9px !important"></div>
            <div class="col-xl-3"></div>
        </div>
    </form>

    petite précision sur le code du formulaire il n'est pas complet, mais le résultat $_POST représente bien le fait que en aucun cas les media queries ne sont prise en compte, hors elle s'affiche bien sur ma page


    PHP pour le traitement des données du formulaire (page.php)*:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    // Display data received via $_POST
    print_r($_POST);
    ?>

    Résultat de $_POST après la soumission du formulaire*:

    Array
    (
    [color_23] => #80808
    [background-color_24] => #f5f5f5
    [font-size_25] => 10px !important
    [font-family_26] => 'Acme-Regular', sans-serif
    [text-transform_27] => uppercase
    [background-color_28] => #f5f5f5
    [color_29] => #8A2BE2
    [right_9] => 15%
    [bottom_10] => 0.7rem
    [left_11] => 5%
    [padding-top_12] => 1.25rem
    [padding-bottom_13] => 1.25rem
    [text-align_14] => left
    [font-size_20] => 1rem
    [font-family_21] => 'Dosis-Bold', sans-serif
    [color_22] => #fff
    [font-size_17] => 1.75rem
    [font-family_18] => 'Josefin-Bold', sans-serif
    [color_19] => #242424
    [maj] =>
    )
    Voila en gros ce qui se passe ou se qu'il ne se passe pas je devrais plutôt dire , mais je beau chercher je vois pas où est le soucis

  2. #2
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Bonjour

    Je vais répondre par une question : pourquoi pas un seul et unique champs textarea et y taper copier / coller l'intégralité du CSS en une fois ?

    Seconde question accessoire : pourquoi stocker en db ? Vous faites un traitement derrière ? Vous pourriez juste uploader le CSS et le stocker comme fichier côté serveur...
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonsoir cavo789,

    Pour ce projet spécifique, j'ai développé cette fonctionnalité de mon CMS en mettant l'accent sur l'expérience utilisateur.

    Plutôt que de recourir à un simple champ texterea, j'ai opté pour une approche plus conviviale. De plus, des explications détaillées seront fournies pour clarifier certaines propriétés ou valeurs, garantissant ainsi une utilisation fluide et compréhensible pour l'utilisateur.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    regardez dans l'onglet "Réseau" de la console de développement de votre navigateur et vérifiez si les paramètres sont bien envoyés avec la requête http.
    par exemple avec Firefox, faites Ctrl + Maj + E
    https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Lorsque que je vérifie la console, voila ce qu'elle m'affiche :

    {
    "color_23": "#808080",
    "background-color_24": "#f5f5f5",
    "font-size_25": [
    0:"10px+!important",
    1"9px+!important",
    2:"10px+!important"
    ],
    "font-family_26": "'Acme-Regular',+sans-serif",
    "text-transform_27": "uppercase",
    "background-color_28": "#f5f5f5",
    "color_29": "#8A2BE2",
    "right_9": "15%",
    "bottom_10": [
    0:"0.7rem",
    1:"0",
    2:"0.7rem"
    ],
    "left_11": "5%",
    "padding-top_12": "1.25rem",
    "padding-bottom_13": "1.25rem",
    "text-align_14": "left",
    "font-size_20": [
    0:"1rem",
    1:"0.695rem",
    2:"1rem"
    ],
    "font-family_21": "'Dosis-Bold',+sans-serif",
    "color_22": "#fff",
    "font-size_17": [
    0:"1.75rem",
    1:"0.725rem",
    2:"1.75rem"
    ],
    "font-family_18": "'Josefin-Bold',+sans-serif",
    "color_19": "#242424",
    "maj": ""
    }
    Donc il semble que toutes les données sont présente dans le $_POST.

    le 0: => valeur style générale
    le 1: => valeur style media querie 1
    le 2: => valeur style media querie 2

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    dans le 1er message, vous montrez un champ "font-size_max600_25" qui manque et je ne le vois pas ici.
    et là vous montrez une structure en tableau par exemple pour "font-size_25" par exemple et ça ne correspond pas au code html que vous nous avez montré.

    est ce que vous avez une seule balise "form" qui englobe bien tous les champs ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je n'utilise qu'une seule balise "form" dans mon code HTML.

    À l'origine, ma table contenait les champs suivants, qui peuvent être pertinents ou non :
    - ID
    - ID de la page
    - Nom de la classe
    - Nom de la propriété
    - Valeur de la propriété

    Ensuite, j'ai ajouté les champs suivants :
    - Media 1
    - Media 2
    - Valeur Media 1
    - Valeur Media 2

    Maintenant, lorsque j'affiche tous les résultats de ma table en fonction de l'ID de la page CSS, j'utilise cette syntaxe pour nommer les champs :

    <?= $valeur['nom de la propriété'] . '_' . $valeur['id']; ?>.

    Pour le champ font-size_max600_25 / font-size_25, c'est une erreur de ma part, c'est bien => font-size_25, après avoir revu mon code source que j'ai donc corriger par soucis de clarté

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par Cetenaru Voir le message
    le 0: => valeur style générale
    le 1: => valeur style media querie 1
    le 2: => valeur style media querie 2
    et d'où viennent ces valeurs multiples ? vous avez peut-être plusieurs champs avec le même "name" ?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2024
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ces valeurs sont extraites de ma table. Pour bottom_10, par exemple, cela signifie que :

    bottom_10 représente le nom de la propriété suivie de son identifiant unique dans la table.

    Les valeurs associées, telles que 0: 0.7rem, 1: 0, 2: 0.7rem, représentent les valeurs de la propriété selon différents types de styles :

    0: correspond à la valeur du style général.
    1: correspond à la valeur du style pour la première requête média.
    2: correspond à la valeur du style pour la deuxième requête média.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2017, 20h01
  2. Réponses: 10
    Dernier message: 02/11/2015, 22h00
  3. Réponses: 0
    Dernier message: 30/11/2012, 10h26
  4. Réponses: 3
    Dernier message: 29/05/2008, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo