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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 514
    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