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 :

Formulaire avec plusieurs input number [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Formulaire avec plusieurs input number
    Bonjour ! Étant très débutant j'appelle à l'aide pour mon petit problème. Je fais un formulaire qui comprend 12 items sur lesquels on peut donner une note de 1 à 5, je suis bloqué au moment de transmettre les données à une bdd, car je veux que la moyenne des notes de chaque item soit calculée et ensuite retournée, je sais que j'en demande beaucoup, mais j'espère tout de même quelques indices, ou la procédure complète si vous vous sentez généreux. Voici mon début de code...:

    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
    if (isset($_POST['note1']) AND isset($_POST['note2'])AND isset($_POST['note3'])AND isset($_POST['note4'])AND isset($_POST['note5'])AND isset($_POST['note6'])AND isset($_POST['note7'])AND isset($_POST['note8'])AND isset($_POST['note9'])AND isset($_POST['note10'])AND isset($_POST['note11'])AND isset($_POST['note12']))
    {
        $note1 = mysql_real_escape_string(htmlspecialchars($_POST['note1'])); 
    	$note2 = mysql_real_escape_string(htmlspecialchars($_POST['note2']));
    	$note3 = mysql_real_escape_string(htmlspecialchars($_POST['note3']));
    	$note4 = mysql_real_escape_string(htmlspecialchars($_POST['note4']));
    	$note5 = mysql_real_escape_string(htmlspecialchars($_POST['note5']));
    	$note6 = mysql_real_escape_string(htmlspecialchars($_POST['note6']));
    	$note7 = mysql_real_escape_string(htmlspecialchars($_POST['note7']));
    	$note8 = mysql_real_escape_string(htmlspecialchars($_POST['note8']));
    	$note9 = mysql_real_escape_string(htmlspecialchars($_POST['note9']));
    	$note10 = mysql_real_escape_string(htmlspecialchars($_POST['note10']));
    	$note11 = mysql_real_escape_string(htmlspecialchars($_POST['note11']));
    	$note12 = mysql_real_escape_string(htmlspecialchars($_POST['note12']));
     
        mysql_query("INSERT INTO film VALUES('','" . $note1 . "', '" . $note2 . "', '" . $note3 . "', '" . $note4 . "', '" . $note5 . "', '" . $note6 . "', '" . $note7 . "', '" . $note8 . "', '" . $note9 . "', '" . $note10 . "', '" . $note11 . "', '" . $note12 . "')");
    Merci à l'avance de votre considération.
    Dernière modification par Invité ; 12/08/2015 à 18h54.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Aie

    Nomme tes champs comme ça
    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
    if (isset($_POST['note'])) {
        for ($i = 0; $i < 12; $i++) {
              if (empty($_POST['note'][$i])) {
                     $erreur = 'Vous devez renseigner toutes les notes';
                     break;
              }
              else {
                     $note = (int)$_POST['note'][$i];
                     if ($note < 1 || $note > 5) {
                          $erreur = 'Les notes doivent être comprises entre 1 et 5';
                          break;
                     }
                     else {
                           $values[] = $note;
                     }
              }
        }
        mysql_query("INSERT INTO film VALUES(''," . implode(',', $values) . ")";
    }
    echo 'Moyenne des notes : ' . (array_sum($values) / count($values));

  3. #3
    Invité
    Invité(e)
    Par défaut
    Wow merci Je m'attendais pas à une réponse aussi complète et rapide ! Seul petit détail, le 'Vous devez renseigner toutes les notes' est-il vraiment nécessaire? puisque chaque input number est déjà placé sur un chiffre en particulier avant même que le vote soit fait. Et même chose pour le 'Les notes doivent être comprises entre 1 et 5', puisque j'ai mit un min et max qui empêche de voter au-delà de ça, donc est-ce utile d'écrire ces messages d'erreurs? Mais sinon je te remercie infiniment !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu ne controles pas ce que PHP recoit, l'utilisateur peut envoyer n'importe quoi.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il semble y avoir une erreur.. ça me dit unexpected ';' à propos de cette ligne de code: mysql_query("INSERT INTO film VALUES(' '," . implode(',', $values) . ")";

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai oublié une parenthèse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO film VALUES(''," . implode(',', $values) . ")");

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je me rends compte que je suis encore plus mauvais que je pensais, j'ai du mal à identifier les variables à ajouter dans ma bdd, j'ai mit 'note' et 'values' en int mais les résultats sont erronés... c'est laborieux mon affaire..

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est quoi "note" et "value" ?
    Quels résultats obtiens-tu ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    C'est peut-être pour une raison de décimales? j'ai voté 2,5 partout et la moyenne donne 2

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    remplace (int) par (float) dans mon code.
    Attention c'est pareil dans ta base de donnée, il ne faut pas de colonnes INT sinon tu perds la partie décimale.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Génial Maintenant tout fonctionne à merveille, le seul truc c'est que au départ je voulais obtenir la moyenne pour CHACUN des 12 items et non la moyenne des 12 items, mais je vais tenter quelque chose à mes risques et périls

  12. #12
    Invité
    Invité(e)
    Par défaut
    Décidément j'ai vraiment un problème dans ma base de données, j'ai essayé d'ajouter un id mais ça améliore en rien les choses... merci de votre patience

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La moyenne de chaque colonne est fournie par une requête
    SELECT AVG(note1), AVG(note2) .... FROM film

  14. #14
    Invité
    Invité(e)
    Par défaut
    Donc c'était préférable de les nommer 'note1' 'note2' etc. plutôt que 'note[]' ?

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une requête ca se passe dans la base de donnée.
    Ca n'a rien a voir avec ton formulaire.

  16. #16
    Invité
    Invité(e)
    Par défaut
    D'accord, puis-je savoir combien de variables je suis sensé avoir dans ma base de données nommée 'film' ?

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    film c'est une table, pas une base de données.
    Mais ni une table ni une base de donées ne contiennent de variables donc je ne vois pas de quoi tu parles.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Je veux dire combien de "machins-trucs" dans ma table film

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    On est censé comprendre de quoi tu parles ?

  20. #20
    Invité
    Invité(e)
    Par défaut
    Ouais mais là je sens un peu de snobisme, je vais m'arranger merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Un formulaire avec plusieurs boutons "submit"
    Par novices dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/09/2006, 21h25
  2. Formulaire avec plusieurs listes déroulantes
    Par cyberdevelopment dans le forum Langage
    Réponses: 5
    Dernier message: 17/07/2006, 16h59
  3. formulaire avec plusieurs etapes
    Par dolf13 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 09h54
  4. Formulaire avec plusieurs submit !
    Par alfigor dans le forum Langage
    Réponses: 6
    Dernier message: 21/04/2006, 12h09
  5. Formulaire avec plusieurs submit -> Récupération
    Par masseur dans le forum Langage
    Réponses: 14
    Dernier message: 30/03/2006, 08h17

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