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 :

Envoyer la valeur d'une variable html vers BDD


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut Envoyer la valeur d'une variable html vers BDD
    Bonjour,

    je suis enseignant et j'ai créé un exercice en ligne auto-corrigé et noté

    la note est contenue dans une variable 'score' html

    en fin d'exercice j'aimerais que les élèves "m'envoient" leur note.

    Pour cela j'ai créé un formulaire pour qu'ils renseignent leurs nom, prénom et classe.

    je récupére les données du formulaire via un fichier php et je les envoie sur une base de données. Tout ceci fonctionne.

    Mais je n'arrive pas à joindre la note. J'ai essayé avec Post, get, $_session, je n'arrive pas à récupérer la note...

    Quelqu'un peut_il me donner un coup de main ?

    Le fichier Php :

    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
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <!DOCTYPE html>
    <html>
     
    <head>
        <title>Insert Page page</title>
    </head>
     
    <body>
        <center>
     
    <?php
    $servername = "l---t";
    $database = "u3---s";
    $username = "u---n";
    $password = "N---0";
      
    // Create connection
      
    $conn = mysqli_connect($servername, $username, $password, $database);
      
    // Check connection
            if($conn === false){
                die("ERROR: Could not connect. "
                    . mysqli_connect_error());
            }
             
            // Taking all 5 values from the form data(input)
            $Nom =  htmlspecialchars($_REQUEST['Nom']);
            $Prenom = htmlspecialchars($_REQUEST['Prénom']);
            $classe =  $_REQUEST['classe'];
            //$Note = $_REQUEST['Note'];
            //$Note = $_SESSION['Note'];
            $Note = 12;
            //$Note = $_GET['Note'];
            $date = $_REQUEST['date'];
             
          
         
             
            // Performing insert query execution
            // here our table name is jbrel
            $sql = "INSERT INTO jbrel  VALUES ('$Nom',
                '$Prenom','$classe','$Note','$date')";
                 
                //$sql = "INSERT INTO jbrel  VALUES ('$Nom',
                //'$Prenom','$classe','$_SESSION['Note']','$date')";
             
            if(mysqli_query($conn, $sql)){
                echo "<h3>data stored in a database successfully."
                    . " Please browse your localhost php my admin"
                    . " to view the updated data</h3>";
     
                echo nl2br("\n$first_name\n $last_name\n "
                    . "$gender\n $address\n $email");
            } else{
                echo "ERROR: Hush! Sorry $sql. "
                    . mysqli_error($conn);
            }
             
            // Close connection
            mysqli_close($conn);
            ?>
        </center>
    </body>
    <br><br>

    $Nom, $Prenom, $classe et $date partent bien vers la base de données, mais pour $Note, je n'y arrive pas..

    Lorsque je lui attribue directement une valeur (dans l'exemple ci-dessus "12") elle part bien vers la BDD, Mais lorsque j'essaie de lui faire prendre la valeur de la note obtenue par l'élève, rien ne part...

    Le formulaire est là :

    https://mediaseculilian.fr/testBDD.html

    et son code :

    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
    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
    52
    53
    54
    55
    56
    57
    58
    59
    <!DOCTYPE html>
     
    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title>testBDD</title>
      </head>
      <body>
     
        <center>
          <h1>Envoyer la note au professeur</h1>
          <form action="https://mediaseculilian.fr/databaseconnect.php" method="post">
            <p> <label for="Nom">Nom:</label> <input name="Nom" id="eNom" type="text">
            </p>
            <p> <label for="Prénom">Prénom:</label> <input name="Prénom" id="ePrénom"
     
                type="text"> </p>
            <p> <label for="classe">classe:</label>
              <select name="classe" id="eclasse" type="text">
                <option value="6A">6A</option>
                <option value="6B">6B</option>
                <option value="6C">6C</option>
                <option value="6D">6D</option>
                <option value="5A">5A</option>
                <option value="5B">5B</option>
                <option value="5C">5C</option>
                <option value="5D">5D</option>
                <option value="4A">4A</option>
                <option value="4B">4B</option>
                <option value="4C">4C</option>
                <option value="4D">4D</option>
                <option value="3A">3A</option>
                <option value="3B">3B</option>
                <option value="3C">3C</option>
                <option value="3D">3D</option>
              </select>
            </p>
            <!-- <p> <label for="Note">Note:</label> <input name="Note" id="Note" type="text">
            </p>
     
            <script> var score = 16; </script>
     
     
            <p>
    <input type="hidden"  name="Note" value="<?php echo htmlspecialchars($valeur_du_champs_index);?>"/>
    </p>
            -->
     
     
     
     
            <p> <label for="date">date:</label> <input name="date" id="edate" type="date">
            </p>
            <input value="ENVOYER" type="submit"> </form>
        </center>
        <p><br>
        </p>
      </body>
    </html>

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 683
    Par défaut
    pour votre formulaire, si vous rajoutez un 2e champ "Note" caché, sa valeur va écraser la valeur du 1er champ.
    mais dans votre code, ces champs sont en commentaires donc je ne sais pas exactement ce que vous avez essayé.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Par défaut
    Bonjour,

    Dans le premier bloc de code :
    Si j'ai bien compris la logique du premier bloc tel que codé actuellement :
    1 - Je demande une connexion à la BDD
    2 - Je vérifie si la connexion fonctionne ou pas
    3 - Que ma connexion fonctionne ou pas je génère mes variables qui récupèrent des informations
    4 - Que ma connexion fonctionne ou pas j'insère les valeurs de ces variables dans la table de ma BDD. Avec une valeur fixe pour la variable note a 12
    5 - J'affiche un message pour dire si l'enregistrement est un succès ou pas

    Pourquoi ne pas inclure les étapes 3 et 4 dans la suite du 2 ?
    Si la connexion n'a pas réussi => étape 5 directement avec un message d'erreur
    Si la connexion a réussi => je regarde pour traiter les données donc étapes 3 4 et 5 avec le message de réussite

    Dans le second bloc de code :
    Comme l'a dit mathieu, la partie relative a la note ne sera pas interprétée car en commentaire.

    Si j'ai bien tout compris, on peut actuellement résumer à :
    Le formulaire ne contient pas de note => on envoie la demande de traitement
    Pour le traitement, la note est figée à 12

    A ce stade
    . dans le second bloc de code : laisser la possibilité d'entrer une note ou faire une liste comme vous l'avez fait pour la classe
    (La liste permet d'avoir une note comprise dans l'intervalle recherchée, à défaut vous pouvez traiter cela dans la partie traitement :
    Si la donnée est un chiffre, si la donnée est comprise entre X et Y alors je la prends en compte sinon => message d'erreur (ceci sera à mettre en place avant vos étapes d'inscription dans la table de la BDD)
    . dans le premier bloc de code : remplacer le 12 par la donnée récupérée

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 364
    Par défaut
    La variable score html
    Un champs html caché ? ou une variable js ?
    Mieux vaut une variable JS const pour que la note ne change pas si il y a un petit malin qui s'amuse.

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Bonjour,
    je prends note de tous vos conseils et de toutes vos remarques.
    Merci.
    Dans un premier temps, je voudrais solutionner le problème de la note,

    mathieu effectivement, certaines parties sont en commentaires ; il s'agit de tests que j'ai pu faire et qui n'ont pas abouti

    BOU59000 comme le dit gabi7756 , je ne souhaite pas laisser aux élèves la possibilité d'entrer eux même leur note pour éviter toute tentation de fraude...

    La note est issue d'un exercice (en h5p) je l'ai récupérée et stockée dans une variable. C'est la valeur de cette variable que je souhaite transférer vers la base de donnée.

    Je pensais pouvoir donner à la "value" de "input" (ligne 45) la valeur d'une variable, mais à priori "value" ne reconnait que du texte ? (donc impossible de lui donner du code ?)

    l'idee ici (comme il s'agit d'une page de code test et incomplète) serait de transférer la valeur de la variable "score" (ligne 41) à la BDD. Comment puis-je faire ?

    merci

    Lilian

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 683
    Par défaut
    Citation Envoyé par Lilian BERNON Voir le message
    BOU59000 comme le dit gabi7756 , je ne souhaite pas laisser aux élèves la possibilité d'entrer eux même leur note pour éviter toute tentation de fraude...
    du moment que l'information est dans le code html, les élèves pourront la modifier et envoyer ce qu'ils veulent dans la requête http. regardez dans les outils de développement de votre navigateur, cela se fait en quelques clics.

    d'où récupérez vous cette valeur ?

  7. #7
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Bonjour mathieu,
    mes élèves sont des collégiens et très rares sont ceux qui savent consulter le code html. Je prends ce risque.
    Par contre leur laisser saisir la note dans un formulaire serait trop facile et trop tentant...

    La note est issue d'un exercice h5p ; je la récupère comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
     H5P.externalDispatcher.on('xAPI', (event) => { const score = H5P.instances[0].getScore();};
    </script>
    la note est donc stochée dans la variable "const" nommée "score"
    Et je voudrais la transférer vers la BDD
    Comment puis-je faire ?
    Est-ce que les variables superglobales seraient une solution ?

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 683
    Par défaut
    de mes souvenirs du collège c'est possible que s'il y en ait un qui trouve la faille, il fera un mode d'emploi pour expliquer aux autres comment faire. mais je pense que vous aurez alors plein de 25 sur 20 pas discrets donc vous verrez tout de suite s'ils ont trouvé la faille.

    en ce qui concerne le code pour récupérer la note, il s'agit de javascript qui est exécuté dans le navigateur donc il faut d'abord l'envoyer au serveur pour que le code php puisse l'enregistrer dans la bdd. et pour le moment je vois 2 façons de faire.
    la 1re façon est de rajouter les champs de saisie en javascript dans la page où est récupérée la note. et donc ça sera ensuite le code javascript qui enverra une requête http à un script php.
    la 2e façon sera de faire 2 script php. il y a d'abord l'envoi de la note avec une requête http à un script qui gardera la note en variable de session. et ensuite vous faites une redirection vers le formulaire de saisie du nom.

    dans tous les cas, vous aurez besoin de code javascript pour faire l'envoi de données vers le serveur. pour faire la requête http vous pouvez utiliser la fonction fetch :
    https://developer.mozilla.org/fr/doc.../fetch#exemple

  9. #9
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Bonjour, sur un autre forum j'ai pu obtenir la méthode pour hydrater le champ de formulaire avec une variable en JS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script>;
    document.addEventListener("DOMContentLoaded", (event) =>; {
        document.querySelector('input[name="Note"]').value = score
     });
    </script>
    Encore merci de vous être penchés sur mon problème.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 615
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si le formulaire est de type QCM, la note devrait être calculée à partir du résultat de chaque réponse éventuellement pondéré par un coefficient propre à chaque item.
    Et il n'y a en ce cas aucune raison de transporter la note du formulaire vers la BDD, au risque qu'elle soit incohérente avec les réponses.

  11. #11
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Bonjour escartefigue,

    C'est l'interface h5p (h5p est une API JS) qui fait le calcul de la note. Et cette interface permet évidement de configurer tous les paramètres de calcul de la note auxquels vous faites référence !!!

    Mon but était ici de pouvoir récupérer cette note de manière automatisée pour me simplifier la vie et être plus efficace avec mes élèves (je n'ai plus besoin de passer derrière chaque écran pour relever les notes ; cela me permet de passer plus de temps avec les élèves qui ont besoin d'aide et cela permet aux élèves de ne pas perdre de temps : ils n'ont pas besoin d'attendre que je sois disponible pour relever leur note, et peuvent ainsi passer à l'exercice suivant de manière autonome)
    Le fait de faire faire à chaque élève un transfert de sa note vers une BDD me permet de centraliser les notes, pour ensuite les exporter en format .csv afin de les réinjecter dans le logiciel de traitement des notes. Je gagne beaucoup de temps ainsi.

  12. #12
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Pour ceux qui chercheraient dans ce forum à résoudre le même problème que moi (à savoir transmettre une variable JS vers une BD), j'ai réussi à le faire d'une seconde manière : à l'aide des cookie
    (on stocke la valeur de la variable dans un cookie puis on la récupère dans le ficher .php qui permettra de la transférer à la BDD

    du côté html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script>
    document.cookie = "scorepts = " + score;
    </script>

    et du côté php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $Note= $_COOKIE['scorepts'];
    ?>

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 615
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Lilian BERNON Voir le message
    C'est l'interface h5p (h5p est une API JS) qui fait le calcul de la note. Et cette interface permet évidement de configurer tous les paramètres de calcul de la note auxquels vous faites référence !!!
    Sans doute, mais il est préférable de le faire côté base de données : seul le moteur de la BDD sait gérer les accès concurrents et donc garantir l'intégrité des données.
    En faisant ce calcul côté application, si une valeur change après calcul, alors la note sera erronée.

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

Discussions similaires

  1. Envoyer la valeur d'une variable de ma fonction JS vers un fichier PHP
    Par wperes dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2008, 21h07
  2. Inserer la valeur d'une variable Javascript au milieu d'une source HTML
    Par drizztoli dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/10/2007, 15h47
  3. variable d une page html vers une autre page html
    Par éloi_75 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/09/2007, 16h20
  4. valeur d une variable d'un form vers un autre
    Par barhili04 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/05/2007, 12h51
  5. Réponses: 2
    Dernier message: 22/02/2007, 14h00

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