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

PHP & Base de données Discussion :

système de notes avec étoiles


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut système de notes avec étoiles
    Bonjour,
    Dans le cadre d'un petit projet sites de recettes je voudrais que l'utilisateur une fois connecté puisse noter la recette en cliquant sur les étoiles, je ferais une requete preparée pour que la note soit dans ma table de base de donnée. D'habitude je fais des formulaires avec des button submit avec method post mais la je suis un peu perdu... sans button submit
    Pour éviter d'avoir un input ou button submit et faire apparaitre que les étoiles comment faire ? (je n'ai pas idée de tout..)
    voici mon code (pour l'instant j'ai fait juste la partie JS et HTML), j'ai un input caché qui a comme value, la valeur des étoiles une fois cliqué dessus, j'ai suivi un tutoriel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form action="" method="post">
            <i class="bi bi-star"data-value="1"></i>
            <i  class="bi bi-star"data-value="2"></i>
            <i class="bi bi-star"data-value="3"></i>
            <i class="bi bi-star"data-value="4"></i>
            <i class="bi bi-star"data-value="5"></i>
            </div>
            <input type ="hidden" name="note" id="note" value="0">
            </form>
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    window.onload = () => {
     
        //selectionner les etoiles
        const stars = document.querySelectorAll("i");
     
     
        //selectionner l'input
        const note = document.querySelector("#note");
     
     
       //on boucle sur les etoiles pour ajouter un ecouteur d'evenement
       for(let star of stars) {
            star.addEventListener('mouseover', function() {
                resetStars();
                this.style.color=" #DC3C35";
     
     
                //élément précédent dans le DOM( même niveau)
                let previousStar= this.previousElementSibling;
     
                while(previousStar) {
                    //passage de l'étoile qui précède en rouge
                    previousStar.style.color="red";
                    //récuperation de l'étoile qui la pécède
                    previousStar= previousStar.previousElementSibling;
                }
            });
     
            //on ecoute le click
            star.addEventListener("click", function() {
                note.value = this.dataset.value;
     
            });
     
            star.addEventListener("mouseout", function(){
                resetStars(note.value);
            })
       }
     
        function resetStars(note=0) {
            for(let star of stars) {
                if(star.dataset.value > note) {
                    star.style.color= "white";
                } else {
                    star.style.color="red";
                }
            }
        }
     
    }
    j'ai essayé de faire celle-ci pour chaque i et testé en GET mais je pense que ce n'est pas la bonne méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <i type="submit" class="bi bi-star"data-value="1"></i>
    merci pour vos conseils

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 669
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 669
    Par défaut
    à part l'enregistrement du vote, que voulez-vous qu'il se passe au moment du clic sur une étoile ?
    si c'est juste l'enregistrement du vote, vous pouvez faire une requete http avec la fonction fetch :
    https://developer.mozilla.org/fr/docs/Web/API/fetch

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Bonjour,

    Si vous voulez soumettre le formulaire d'une façon classique (sans utiliser javascript), vous pouvez mettre vos <i> dans des <button type="submit"></button> et modifier l'apparence des boutons via CSS, comme ceci :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <button name="btnValue" type="submit" value="1"><i class="bi bi-star"></i></button>
    <!-- les autres boutons... -->

    Comme ça, lorsque vous cliquez sur un bouton, vous pouvez ensuite récupérer sa valeur en PHP via $_POST["btnValue"]

  4. #4
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Par défaut
    Bonjour,
    Je vous remercie pour vos conseils, ah donc n'importe quel élément peut avoir le rôle d'un button en l'entourant de cette balise. Merci j'apprend énormément sur ce forum.
    Je vais aussi regarder la fonction fetch() pour apprendre encore plus...
    Il me reste un dernier souci pour ajouter et supprimer une classe et avoir l'étoile pleine mais je vais ouvrir un nouveau post dans le forum adapté.
    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un système de notation avec des étoiles
    Par babafredo dans le forum ASP
    Réponses: 2
    Dernier message: 02/04/2008, 15h06
  2. Les Système Multi-agent avec Java
    Par oussam dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2006, 00h41
  3. [Débutant-XML] Prendre ses cours en note avec XML
    Par charlax dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 03/02/2006, 23h50
  4. Envoi mail par Notes avec un autre nom
    Par why-not-mi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/10/2005, 16h35
  5. IA avec le système de note
    Par scorpiwolf dans le forum C
    Réponses: 4
    Dernier message: 06/05/2002, 12h13

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