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 :

Vote en PHP MYSQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 505
    Par défaut Vote en PHP MYSQL
    Bonjour,

    je souhaite que les utilisateurs puissent voter pour des morceaux de musique :
    mon code ci-dessous fonctionne bien sauf :
    1 - on peut voter plusieurs fois pour le même morceau
    2 - le vote sur un titre qui contient des apostrophes n'est pas pris en compte

    (exemple de titre : "Le Rêve de l'Homme" et si on vote, le résultat est :
    Merci d'avoir voté pour : Le Rêve de l\'Homme
    et du coup n'est pas pris en compte dans le total des votes...)

    si vous pouvez m'aider pour les points 1 et 2 ci-dessus ? Merci d'avance.

    morceaux.php :
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
    <br />
    <a><strong>Morceaux de la semaine :</strong></a>
    <p>
    <object type="application/x-shockwave-flash" data="dewplayer-playlist.swf" width="240" height="200" id="dewplayer" name="dewplayer">
    <param name="wmode" value="transparent" />
    <param name="movie" value="dewplayer-playlist.swf" />
    <param name="flashvars" value="showtime=true&amp;autoreplay=true&amp;xml=playlist.php" />
    </object>
    </p>
    <br />
    <a><strong>Informations sur les auteurs :</strong></a>
    <br />
    <br />
     
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
    // debut de la requête pour récupérer les informations des groupes de musique -->
    // on écrit la requête
    $select = "SELECT * FROM morceaux_groupe ORDER BY numero";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($result) == 0)
    {
    echo '<p>'.'<b>'.'Aucun morceau ! '.'</b>'.'</p>'.'<br>'.'</br>';
    echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    }
    //Si il y a des entrées
    else
    {
    //On fait une boucle pour sortir toutes les entrées
    while($affiche = mysql_fetch_array($result))
     {
    //On affiche les entrées
    echo '<br />';
    echo '<b>'.$affiche["nom_groupe"]."   ".'</b>';
    echo '<div class="autre">';
    echo '<span style="color:#8E236B;">';
    echo '<strong>';
    echo "     ".$affiche["titre"]."   ";
    echo '</strong>';
    echo '</span>';
    echo '<div class="cache">';
    echo '<strong>';
    echo '<br />';
    echo '<a href="'.$affiche["site_web"].'">'.'Site web du groupe'.'</a>';
    echo '<br />';
    echo "     ".$affiche["descriptif_groupe"]."   ";
    echo '<br />';
    echo '<br />';
    echo " mis en ligne par  ".$affiche["pseudo_groupe"]."   ";
    echo '</strong>';
    echo '</div>';
    echo '</div>';
    echo '<br />';
    }	//On ferme la boucle while
    }	//on ferme le else
     
     
    // début de la requête sur les morceaux
    echo '<form method="post" action="voter.php">';
    echo '<fieldset>';
    echo '<legend>'."VOTEZ POUR VOTRE MORCEAU PREFERE".'</legend>';
    echo '<label>'.'</label>';
    echo '<select name="votez" class="ev" tabindex="1" onfocus="this.className=\'textarea_focus\';" onblur="this.className=\'\';">';
    $affich_form3 = "SELECT * FROM morceaux_groupe" ;
    $resultat3 = mysql_query($affich_form3) or die ('Erreur : '.mysql_error() );
    $total3 = mysql_num_rows($resultat3);
    //On vérifie que la table contient quelque chose
    if
    (mysql_num_rows($resultat3) == 0)
    {
    echo '<option>Aucun</option>';
    } // fin si rien dans la liste
    else
    {
    while ( $list3 = mysql_fetch_array( $resultat3 ) )
    {
    echo '<option value="'.$list3['titre'].'">'.$list3['titre'].'</option>';
    } // fin du while
    } // fin du else
    echo '</select>';
    // fin de la requête sur les morceaux
    echo '<br />';
    echo '<br />';
    echo '<input type="submit" class="ev" tabindex="2" value="VOTER POUR CE MORCEAU" onfocus="this.className=\'textarea_focus\';" onblur="this.className=\'\';">';
    echo '</fieldset>';
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
    ?>
     
    <br />
    <br />
     
    </div>
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>
    action "submit" dans le fichier
    voter.php :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
    <div id="mainContent">
    <?
    // insertion du fichier de configuration
    require("configuration.php");
    // si il y a action de vote sans selection de choix on affiche un message d'erreur et le formulaire
    if(empty($_POST['votez']))
    {
    echo"<center><font color='red'><b>vous devez faire un choix</b><center></font><br>";
    include"morceaux.php";
    // on arrête l'exécution du script avec exit()
    exit();
    }
    else
    {
    // on affiche un message de remerciement
    echo '<p></p>';
    echo "Merci d'avoir vot&eacute; pour :   ".'<font color="#8E236B">'.'<b>'.$_POST['votez'].'</b>'.'</font>';
    echo '<p></p>';
    echo '<p></p>';
    echo '<b>'.'<font color="##FF7F00">'." R&eacute;sultats des votes  : ".'</font>'.'</b>';
    echo '<p></p>';
     
    // Connexion à la base
    $connect=mysql_connect($host,$login,$pass) or die ("Connection impossible");
    mysql_select_db($base,$connect) or die ("selection impossible");
     
    // il y a un vote on cherche dans la base le titre
    $select = "SELECT * FROM morceaux_groupe ORDER BY vote_groupe DESC";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    //On fait une boucle pour sortir toutes les entrées
    while($affiche = mysql_fetch_array($result))
    {
    //On affiche les entrées
    echo '<b>'.$affiche["nom_groupe"].'&nbsp;'.'&nbsp;'.'&nbsp;'.'</b>';
    echo '&nbsp;'.'&nbsp;'.'&nbsp;'.'<font color="#7F00FF">'.$affiche["titre"].'</font>';
    echo '<br />';
    echo " Nombre de votes : ".'<b>'.$affiche["vote_groupe"].'</b>';
    echo '<p></p>';
    }	
    //On ferme la boucle while
     
    echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    echo '<p></p>';
     
    // on ajoute 1 au choix qui a été fait
    mysql_query("UPDATE ".morceaux_groupe." SET vote_groupe=vote_groupe+1 where titre='".$_POST['votez']."'");
    // on affiche un message si correct
    }
    // on ferme la connection à la base
    mysql_close();
    ?>
     
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    il fait mettre un mysql_real_escape_string sur les valeurs

  3. #3
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 505
    Par défaut
    Bonjour stealth35,

    j'ai modifié ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE ".morceaux_groupe." SET vote_groupe=vote_groupe+1 where titre='".$_POST['votez']."'");
    par cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE ".morceaux_groupe." SET vote_groupe=vote_groupe+1 where titre='".mysql_real_escape_string(nl2br($_POST['votez'])."'");
    Mais cela ne change pas le fait qu'il ne prend pas en compte le vote :
    Merci d'avoir voté pour : Le Rêve de l\'Homme
    et du coup n'est pas pris en compte dans le total des votes...)

    où est mon erreur ?
    Merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE morceaux_groupe SET vote_groupe=vote_groupe+1 where titre='".mysql_real_escape_string($_POST['votez'])."'");

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Par défaut
    regarde du côté de la fonction addslashes()

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par heretik25 Voir le message
    regarde du côté de la fonction addslashes()
    en quoi addslashes est plus adapté que mysql_real_escape_string ?

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [php][mysql]Enlever message d'erreur
    Par Destampy dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 31/05/2005, 10h19
  3. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33
  4. [php / mysql] pb if ( mysql_query() )
    Par dkmatt dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2004, 20h07

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