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 PDO php


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    Points : 107
    Points
    107
    Par défaut vote PDO php
    bonjour voilà j'essaye de mettre en place un système de vote mais rien de s'affiche aucun erreur une petite idée sur mon problème svp ?

    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
    115
    116
    <?PHP
    // On se connecte à MySQL
      $user = 'root';
      $pass = '';
      $base = 'rec';
    try {
      $dns = 'mysql:host=localhost;dbname='.$base.'';
      // Options de connection
      $options = array(
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
    	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
      );
      $connection = new PDO( $dns, $user , $pass, $options );
    } catch ( Exception $e ) {
      echo "Connection à MySQL impossible : ", $e->getMessage();
      die();
    }
     
            //Retourne la vrai adresse IP
            function get_ip() {
            return (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
            } 
    		$ip = get_ip();	
    	    //Ip utilisateur
    	    $ip_vote = getIp();
     
     
    	//Fonction pour la notation
    	function notation($id_vote,$ip_vote){
     
    	  //L'utilisateur a t'il déjà voté?
    	  // Controle du nom dans la basse de donnée 
          $deja_voter = $connection->prepare('SELECT ip FROM note WHERE ip=:ip AND id_page=:id_page');   
          $deja_voter->execute(array(':ip'=> $ip_vote,':id_page'=>$ip_vote));
          $nb_resultat_vote = $deja_voter->fetch();
    	  //L'utilisateur n'a pas voté, on montre le formulaire    
          if(!$nb_resultat_vote == 0){ 
     
    			echo '<form name="monform" id="monform" method="post">
    			<label>Noter cet article</label>
    			<select name="note" onchange="javascript:submit(this)">
    			<option value="">Note</option>
    			<option value="0">0</option>
    			<option value="1">1</option>
    			<option value="2">2</option>
    			<option value="3">3</option>
    			<option value="4">4</option>
    			<option value="5">5</option>
    			<option value="6">6</option>
    			<option value="7">7</option>
    			<option value="8">8</option>
    			<option value="9">9</option>
    			<option value="10">10</option>
    			</select>
    			</form>';
    		}   
     
    		//Si action de valider et que la note est différent de vide
    		if(isset($_POST['note']) && $_POST['note'] != NULL){
    			//On vérifie si le cookie existe et si tel est le cas, c'est que l'utilisateur tente de voter plusieurs fois
    			if(isset($_COOKIE["deja_voter"]) && $_COOKIE["deja_voter"] == $id_vote){
    				die ("Un seul vote autorisé ... merci!");
    			}
    			//Note de l'utilisateur
    			$note = $_POST['note'];
    			//Insertion en BDD
     
    				 $note=array( ':id_vote'=> $id_vote,':note'=>$note,':ip_vote'=> $ip_vote);
     
                     $values= join(', ',array_keys($note));
                     $req=$connection->prepare( 'INSERT INTO note ('.str_replace(':','',$values).') VALUES('.$values.')' );
                     $req->execute($note);
     
    				//On créer un cookie d'une durée de 20 secondes pour éviter les retours en arrière
    				setcookie('deja_voter',$id_vote,(time() + 20));
     
    				echo 'Merci d\'avoir noté cet article!<br/>
    				Chargement en cours <img alt="Loading" src="images-vote/loading.gif" style="width:32px;height:32px;"/>
    				<script type="text/javascript">
    				document.getElementById("monform").innerHTML = "";
    				window.setTimeout(function(){self.location.href="'.$_SERVER['REQUEST_URI'].'";},3000);
    				</script>';
    		}
    		}
    		$nombre_vote = $connection->prepare('SELECT id FROM note WHERE id_page=:id_vote');   
            $nombre_vote->execute(array(':id_vote'=> $id_vote));
            $total_vote = $nombre_vote->fetch();
    	    //L'utilisateur n'a pas voté, on montre le formulaire    
             if($total_vote != 0){ 
    		//Combien d'utilisateurs ont votés?
    		echo 'Nombre de vote : '.$total_vote.'<br/>';
    		}
     
    		$calcul_vote = $connection->prepare('SELECT SUM(note) AS totalmoyenne FROM note WHERE id_page=:id_vote');   
            $calcul_vote->execute(array(':id_vote'=> $id_vote));
            $total_vote = $calcul_vote->fetch();
    		$total_calcul_vote = $total_vote['totalmoyenne'];
    				if($total_calcul_vote != 0){
    			echo 'Total des votes : '.$total_calcul_vote.'<br/>';   
    		}
     
    		//Moyenne des votes des utilisateurs
    		if($total_vote != NULL && $total_calcul_vote != NULL){
    			$moyenne = number_format($total_calcul_vote/$total_vote, 2, ',', '');
    			//Si les 2 chiffres après la virgule sont 2 zéros, on les suppriment pour obtenir un entier
    			echo 'Note : '.str_replace(',00','',$moyenne).'/10';
    			//On affiche les étoiles
    			for($i=1; $i<=$moyenne;$i++){
    				echo '<img alt="'.$i.'" src="images/etoile.png" style="width:32px;height:32px;"/>';
    			}
    		}
    		else{
    			echo 'Aucun vote pour le moment.';
    		}
     
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    oui j'ai une idée : il y a sûrement une erreur dans ton code.

    J'en ai même une 2ème : as-tu fait le minimum de débogage de base ?

Discussions similaires

  1. [MySQL] Vote en PHP MYSQL
    Par fazpedro dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 15/07/2011, 16h11
  2. [PDO] Mon sous-programmes et sa liaison pdo/php
    Par vaneck dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 26/02/2011, 13h57
  3. [PDO] PDO, PHP 5.2X à PHP 5.3X
    Par jfox dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/02/2010, 15h46
  4. [PDO] usage de PDO - Php 5.1.6 et Mysql 5 ?
    Par rolandcire dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/11/2006, 09h59

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