Notation par étoiles , insérer vote dans bdd

max1395 -  
Jug4tsu Messages postés 56 Statut Membre -
Bonjour,

Voila je voudrais faire un vote par étoiles , avec une moyenne et tout mais je ne sais pas comment insérer le vote dans la bdd . Je ne sais pas comment faire . Voila le code pour afficher le vote par étoiles :

<ul class="notes-echelle"> 
    <li> 
        <label for="note01" title="Note&nbsp;: 1 sur 3">1</label> 
        <input type="radio" name="notesA" id="note01" value="1" /> 
    </li> 
    <li> 
        <label for="note02" title="Note&nbsp;: 2 sur 3">2</label> 
        <input type="radio" name="notesA" id="note02" value="2" /> 
    </li> 
    <li> 
        <label for="note03" title="Note&nbsp;: 3 sur 3">3</label> 
        <input type="radio" name="notesA" id="note03" value="3" /> 
    </li> 
        <li> 
        <label for="note04" title="Note&nbsp;: 4 sur 5">4</label> 
        <input type="radio" name="notesA" id="note04" value="4" /> 
    </li> 
        <li> 
        <label for="note05" title="Note&nbsp;: 5 sur 5">5</label> 
        <input type="radio" name="notesA" id="note05" value="5" /> 
    </li> 
</ul>

Maintenant il faudrait récupérer le vote et l'insérer dans la bdd . Merci

12 réponses

  1. nico7382 Messages postés 287 Statut Membre 50
     
    salut,

    je sais pas quelle technologie tu veux utiliser pour effectuer le vote.
    mais je vais t'en proposer une, la plus ancienne, le formulaire

    tu transformes ta liste en formulaire en entourant <form>
    puis sur la page de réception, tu test tes valeurs.

    pour intégrer le vote dans ta bdd, je vois une solution rapide a mettre en place :
    il fau creer une table en plus qui contient au moins le produit que tu notes, et la note ( avoir pour ajouter si tu as des infos sur le votant)
    ensuite il te reste qu'à faire un insert dans cette new table
    1
  2. max1395
     
    Merci de vos réponses , j'ai essayé comme ca :
     <form action="#" method="post">
      Votre note<br/>
      <input type="hidden" name="note" value="" id="note"/>
     <ul class="notes-echelle"> 
        <li> 
            <label for="note01" title="Note&nbsp;: 1 sur 3">1</label> 
            <input type="radio" name="notesA" id="note01" value="1" /> 
        </li> 
        <li> 
            <label for="note02" title="Note&nbsp;: 2 sur 3">2</label> 
            <input type="radio" name="notesA" id="note02" value="2" /> 
        </li> 
        <li> 
            <label for="note03" title="Note&nbsp;: 3 sur 3">3</label> 
            <input type="radio" name="notesA" id="note03" value="3" /> 
        </li> 
    	    <li> 
            <label for="note04" title="Note&nbsp;: 4 sur 5">4</label> 
            <input type="radio" name="notesA" id="note04" value="4" /> 
        </li> 
    	    <li> 
            <label for="note05" title="Note&nbsp;: 5 sur 5">5</label> 
            <input type="radio" name="notesA" id="note05" value="5" /> 
        </li> 
    </ul><br><br></h2>
      <input type="submit" value="Noter" class="bouton"/>
      </form>
    <?php 
    echo $_POST['note'] ;
    ?>
    

    Pour voir mais ca ne marche pas , sa n'affiche pas la note . pourquoi ? merci
    0
  3. Jug4tsu Messages postés 56 Statut Membre 13
     
    Parce que $_POST['note'] correspond a l'input de type hidden dont la valeur est vide. Faut que tu fasses echo sur $_POST['notesA'] pour afficher ce qui a été choisi.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. max1395
     
    Merci maintenant que j'arrive a l'enregistré dans ma bdd , je voudrais pouvoir tous sélectionner et faire une moyenne , comment faire ? merci
    0
  6. Jug4tsu Messages postés 56 Statut Membre 13
     
    SELECT AVG(note) FROM table;
    0
  7. max1395
     
    Merci mes comment je l'exploite pour faire une moyenne de mes news et l'afficher ?
    0
  8. max1395
     
    Ok j'ai fais le code mais sa m'affiche rien , voila le code :

    
    $vote=$_POST['notesA'] ; 
    // On démarre la session
    mysql_query("INSERT INTO notation (news,vote) VALUES('$nom','$vote')");
     
    $nom='newsdu20';
    $sql =" SELECT AVG(vote) FROM notation WHERE news ='$nom' ;";
    $result = mysql_query($sql) or die("Erreur SQL.<br>$sql<br>".mysql_error());
    $data = mysql_fetch_array($result);
    ?> <br>
    <?php echo 'Moyenne :';  ?>
    
    <?php echo $data['vote'] ; ?>
    
     <form action="#" method="post">
      Votre note<br/>
      <input type="hidden" name="note" value="" id="note"/>
     <ul class="notes-echelle"> 
        <li> 
            <label for="note01" title="Note&nbsp;: 1 sur 3">1</label> 
            <input type="radio" name="notesA" id="note01" value="1" /> 
        </li> 
        <li> 
            <label for="note02" title="Note&nbsp;: 2 sur 3">2</label> 
            <input type="radio" name="notesA" id="note02" value="2" /> 
        </li> 
        <li> 
            <label for="note03" title="Note&nbsp;: 3 sur 3">3</label> 
            <input type="radio" name="notesA" id="note03" value="3" /> 
        </li> 
    	    <li> 
            <label for="note04" title="Note&nbsp;: 4 sur 5">4</label> 
            <input type="radio" name="notesA" id="note04" value="4" /> 
        </li> 
    	    <li> 
            <label for="note05" title="Note&nbsp;: 5 sur 5">5</label> 
            <input type="radio" name="notesA" id="note05" value="5" /> 
        </li> 
    </ul><br><br></h2>
      <input type="submit" value="Noter" class="bouton"/>
      </form>
    

    Merci
    0
    1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      remplace
      <?php echo 'Moyenne :';  ?>
      par ça:

      <?php echo 'Moyenne :'.$result;  ?>
      0
  9. max1395
     
    Ok merci de vos réponses , voila le code que j'ai fais mais il ne marche pas , je peux voter que une fois par choix , en gros je peux voter que une fois pour 1 , je peux voter que une fois pour 2 ect.... VOila le code dites moi ce qu'il ne vas pas merci :

    
    <?php
    $nom='newsexample';
    $note=$_POST['notesA'] ;
    	// Connexion à la base de données
    	mysql_connect('localhost', '******', '*******');
    	mysql_select_db('*******');
    
    	// Ajout du vote dans la base de données
    	mysql_query("INSERT INTO notation (news,vote) VALUES('$nom', '$note') ");
    
    	// Affichage de la moyenne et du nombre total des votes
    	$sql ="SELECT COUNT(*) AS nombreentrer, AVG(vote) AS vote FROM notation WHERE news=$nom ";
    	$result = mysql_query($sql) or die("Erreur SQL.<br />$sql<br />".mysql_error());
    	$data = mysql_fetch_array($result);
    	
    	echo 'Moyenne : ' . $data['vote'];  
    	echo 'Nombre de vote : ' . $data['nombreentrer'] . '<br />'; ?>
    	
     <form action="#" method="post">
      Votre note<br/>
      <input type="hidden" name="noteA" value="" id="note"/>
     <ul class="notes-echelle"> 
        <li> 
            <label for="note01" title="Note&nbsp;: 1 sur 3">1</label> 
            <input type="radio" name="notesA" id="note01" value="1" /> 
        </li> 
        <li> 
            <label for="note02" title="Note&nbsp;: 2 sur 3">2</label> 
            <input type="radio" name="notesA" id="note02" value="2" /> 
        </li> 
        <li> 
            <label for="note03" title="Note&nbsp;: 3 sur 3">3</label> 
            <input type="radio" name="notesA" id="note03" value="3" /> 
        </li> 
    	    <li> 
            <label for="note04" title="Note&nbsp;: 4 sur 5">4</label> 
            <input type="radio" name="notesA" id="note04" value="4" /> 
        </li> 
    	    <li> 
            <label for="note05" title="Note&nbsp;: 5 sur 5">5</label> 
            <input type="radio" name="notesA" id="note05" value="5" /> 
        </li> 
    </ul><br><br></h2>
      <input type="submit" value="Noter" class="bouton"/>
      </form>
    <br /><br />
    
    0
    1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      Je dirais que ton probleme viens de la:

      INSERT INTO notation (news,vote) VALUES('$nom', '$note')


      en effet, si tu fait deux fois le même insert....le second va se contenter de se réécrire sur le précédant.
      Il te faut un identifient auto incrémentable dans ta table.

      Ou bien tu considères qu'une personne ne peut voter qu'une seule fois.
      0
    2. max1395
       
      Ah ok , donc avec id ca marche ? Je vais essayé
      0
    3. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      quand tu fait ton insert dans ta table, tu fait en gros:

      INSERT INTO notation (news,vote) VALUES nom1, note1;

      ta table notation, elle est comment? Elle a juste deux champs nom et note ou trois champs identifiant nom et note?
      0
  10. max1395
     
    J'ai réessayer en changeant par cette ligne :
    	mysql_query("INSERT INTO notation (id,film,vote) VALUES('','$nom', '$note') ");
    


    Et biensure en ajoutant dans a bdd le champ id , mais ca marche toujours pas
    0
    1. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      le champ que tu as ajouter, c'est bien une clé primaire auto incremantable comme ça:

      P_Id int NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (P_Id)
      0
    2. max1395
       
      j'ai essayer d'executer ta requet sql mais ca a pas marcher :s mais je crois que cété ca
      0
  11. max1395
     
    Bon j'ai un champ id , en auto_increment mais sa marche toujours pas :s
    0
    1. max1395
       
      et PRIMARY KEY
      0
    2. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
       
      envoi le code de ta table
      0
    3. max1395
       
      Voila :
      -- Structure de la table 'notation'
      --
      
      CREATE TABLE IF NOT EXISTS 'notation' (
        'id' int(11) NOT NULL AUTO_INCREMENT,
        'news' varchar(255) COLLATE latin1_general_ci NOT NULL,
        'vote' int(11) NOT NULL,
        PRIMARY KEY ('id'),
        UNIQUE KEY 'id_news' ('news','vote')
      ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;
      
      
      0
    4. max1395
       
      Svp personne ne sait sa m'aiderais tellement :s !
      0
  12. Jug4tsu Messages postés 56 Statut Membre 13
     
    Vu que id est en auto increment, t'es pas obligé de le mettre dans ta requête :
    INSERT INTO notation (film, vote) VALUES('$nom', $note)
    ou
    INSERT INTO notation (id, film, vote) VALUES(NULL, '$nom', $note)

    Si ça fonctionne toujours pas, fait un "echo mysql_error();" juste après ton mysql_query, ça t'expliquera pourquoi.

    Aussi, une chaine vide sur un champ en int provoquera une erreur ;).
    0