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 :

système de vote [MySQL]


Sujet :

PHP & Base de données

  1. #21
    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
    Il n'y a pas les corrections qu'on a déjà vu ensemble
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #22
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    J'ai pas été plus loin mais y'a déjà une erreur à la première ligne où il manque le marqueur "?" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT time FROM votes WHERE ip="
    devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT time FROM votes WHERE ip = ?"
    EDIT : Arf je viens de voir que j'ai posté en même temps que sabotage. Du coup effectivement il vaut mieux que tu partes du code corrigé.

  3. #23
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    oui merci de me le rappeler, je l'avais enlevé pour essayer un truc et j'ai oublié de le remettre :-/

    alors je vous transmet le code, voilà le souci qui se pose:
    je peux voter avec tout le monde (A peut voter même quand B vote avant) ors ça m'affiche que je dois attendre 120min mais ça m'envoie vers la page de vote en même temps :-/

    dans le code que je vous donne, j'ai enlevé la ligne double INSERT et rajouté le "?".

    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
    {
     
            // recupération de la ligne de vote de l'utilisateur
            $sql = $db1->prepare("SELECT time FROM votes WHERE ip=?");
            $retour = $sql->execute([$_SESSION['id']]);
            if ($retour) { // la requête s'est bien passée
                $data = $sql->fetch(PDO::FETCH_ASSOC); // ligne sous forme de tableau associatif
     
                $now = time();
                // le temps enregistré est il supérieur à maintenant ?
                if($data['time'] > $now) { // oui il est supérieur le vote n'est pas possible
                    // temps restant à attendre avant le prochain vote
                    $time_calc = ceil(((int) $data['time'] - $now) / 60);
     
                    echo "<fieldset class=\"erreur\"><p class=\"red\">Vous devez attendre " . $time_calc . " minutes avant de pouvoir revoter !</p></fieldset>\n";
     
                } else { // non le temps enregistré est inférieur à maintenant, l'utilisateur peut revoter
     
                    //
     
     
                    // ici traitememt du nouveau vote
                    // ...
     
                }
     
     
     
            } else {
     
                // traitement de l'erreur de la requête
                // ...
            }
    		 $time_vote = 7200;
             $time_db = time() + $time_vote;
    		 $sql = "INSERT INTO votes (ip,time) VALUES ('".$_SESSION['id']."', '".$time_db."')";
    		 $sql = $db1->prepare($sql);
    		 $sql->execute();
    		$a = get_info($_SESSION['id'],'point');
    		$b = get_info($_SESSION['id'],'pts_vote');
    		$point1 = $vote + $a;
    		  $point2 = 1 + $b;
    		 $sql = "UPDATE accounts SET point=$point1 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			$sql = "UPDATE accounts SET pts_vote=$point2 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
    		 //header('Location:'.$rpg.'');
    		 echo '<meta http-equiv="refresh" content="0; url='.$rpg.'">';
     
     
    	  }
    si tu parles de l'opti que tu avais fait en une seule ligne, je la garde pour après car la j'y vois plus clair^^
    (mais je ten remercie en tout cas )

  4. #24
    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
    Est-ce que tout ton bazar à partir de Ça ne devrait pas être le traitement de vote ? Car je suppose qu'on commence un timer et qu'on met à jour les points quand l'utilisateur vote non ?
    Dans ton code actuel, on a toujours la redirection à la fin quoi qu'il se soit passé avant.

    Au passage pour l'insertion, il vaut mieux utiliser REPLACE que INSERT car sinon ton utilisateur va être coincé sur son premier timer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = $db1->execute("REPLACE INTO votes (ip,time) VALUES ('".$_SESSION['id']."', '".$time_db."')";);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #25
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    alors je dois être le premier et leader des benêts parce que ta ligne (qui en efface 3 de chez moi) me donne une erreur de synthax et quand je place le dit bazar au dessus des fonction sql, ça me fait pareil et quand je met l'écho (qui redirige vers la page de vote si le timer est bon) dans un else prévu à cet effet, ça me bloque pour 120min :-/

    je vais tester avec un autre bout de ce code (l'ancienne version avant celle que je vous est montré, voir si en modifiant, ça fonctionne mieux)

  6. #26
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Autres remarques en complément :

    1/ Tu devrais utiliser un header Location en php plutôt que de faire afficher un méta.

    2/ On conseille aux débutants de toujours utiliser des requêtes préparées pour des problèmes de sécurité mais il faut utiliser des marqueurs et passer tes variables dans un tableau dans le execute() ou sinon les binder individuellement. Sinon la préparation n'apportent strictement rien et la requête n'est en rien sécurisée.

    Eventuellement dans des cas basiques sans variables externes ou quand tu es absolument sûr de tes variables (genre castées numériquement avec un intval par exemple) tu peux utiliser query. C'est un peu plus rapide à écrire et très légèrement plus rapide à l'exécution. Mais bon l'habitude d'utiliser systématiquement des requêtes préparées est une bonne chose, encore faut-il utiliser des marqueurs si tu veux qu'elles servent à quelque chose.

    3/ Avant d'être "le premier et leader des benêts" tu es surtout débutant et comme bien d'entre eux tu codes sans avoir suffisamment de bases. Il faut que tu comprenne absolument tout ce que tu fais, ne pas hésiter à isoler des bout de codes pour les tester séparément dans des pages distinctes de l'ensemble de ton code, et/ou faire afficher tes résultats et variables (avec un echo ou un var_dump pour les tableaux et objets) à différents endroits de ton code pour bien comprendre ce qui se passe. La précipitation et l'impatience sont tes principaux ennemis

  7. #27
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    je te remercie grandement de ton aide et de tes conseils, il est vrai que je n'ai pas l'habitude de tester morceau par morceau le code et que je suis impatient dans le genre :$

    Mais oui, tu as raison, dans une entreprise comme ça, partir tête baissée n'est pas la bonne solution, je vais garder cette page en favori histoire de ne pas oublier vos conseils et votre aide, car après c'est grâce à vous que la j'ai réussi à faire fonctionner mon système et je vous dois quelque chose pour sur
    (ça serait bête de refaire la même erreur plusieurs fois)

    tout le crédit vous revient, vous êtes top merci encore^^


    voilà donc le code qui fonctionne^^
    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
    $time_vote = '7200';
    	  $time_db = time()+$time_vote;
    	  $sql = "SELECT time FROM votes WHERE ip='".$_SESSION['id']."' ";
    	  $sql = $db1->prepare($sql);
    	  $sql->execute();
    	  $nbRow = $sql->rowCount();
    	  if($nbRow > 0)
    	  {
    		 $data = $sql->fetch(PDO::FETCH_ASSOC);
    		 $time_wait = $data['time'];
    		 $time_now = time();
    		 $time_calc = $time_wait-$time_now;
    		 $time_calc2 = (int)($time_calc/60);
    		 echo "<fieldset class=\"erreur\"><p class=\"red\">Vous devez attendre ".$time_calc2." minutes avant de pouvoir revoter !</p></fieldset>\n";
    	  }
     
     
     
    	  else{
     
    		 $sql = "REPLACE INTO votes (ip,time) VALUES ('".$_SESSION['id']."', '".$time_db."')";
    		 $sql = $db1->prepare($sql);
    		 $sql->execute();
    		$a = get_info($_SESSION['id'],'point');
    		$b = get_info($_SESSION['id'],'pts_vote');
    		$point1 = $vote + $a;
    		  $point2 = 1 + $b;
    		 $sql = "UPDATE accounts SET point=$point1 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			$sql = "UPDATE accounts SET pts_vote=$point2 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
    		 //header('Location:'.$rpg.'');
    		 echo '<meta http-equiv="refresh" content="0; url='.$rpg.'">';
     
     
    	  }
    oui je n'ai pas mis le header location, ni la soluce de sabotage dans le code que je vous montre, mais je le mettrais dans la version définitive^^
    (que je mettrais sur le post par la suite^^)

  8. #28
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Re,

    Encore une fois il est inutile de faire des requêtes préparées si tu ne lie aucune variable à aucun marqueur.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "REPLACE INTO votes (ip,time) VALUES ('".$_SESSION['id']."', '".$time_db."')";
    $sql = $db1->prepare($sql);
    $sql->execute();
    devrait être remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "REPLACE INTO votes (ip,time) VALUES (?, ?)";
    $sql = $db1->prepare($sql);
    $sql->execute(array($_SESSION['id'],$time_db));
    Evites de faire un code trop approximatif car c'est prendre de mauvaises habitudes. Surtout que le second code est plus facile à écrire et la requête est fonctionnelle et sécurisée dans tous les cas. Alors que dans le premier code elle ne fonctionne et n'est sécurisée que parce que les variables sont numériques et ne peuvent pas être manipulées par le visiteur, sinon cela deviendrait un trou de sécurité majeur.

  9. #29
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    d'accord je remplace^^

    Si je comprend bien, pour la fonction "header" il faut que je vire tout les "echo" et que je la déclare en haut de la page avant de remplacer les "echo" par les "header".?

  10. #30
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Tu peux mettre les header où tu veux mais toujours avant de faire afficher quelque chose CF doc - donc avant un echo mais normalement on ne met jamais d'écho directement dans un code php sinon par l'intermédiaire d'une fonction qui sera appelée depuis le html.

    Un exemple de headers définissant un content-type et des redirections. Celui concernant le content-type est mis en première ligne pour que tout le code qui suit soit impacté mais ce n'est pas une obligation.
    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
    <?php
    header('Content-type: text/html; charset=UTF-8');
     
    $a = isset($_GET['a']) ? $_GET['a'] : null; // pour test depuis les liens html mais normalement c'est ton code qui fait les conditions
     
    if ($a == "0")
    {
    	header('Location: ?message=0'); 
    	exit;
    }
    else if($a > 0)
    {
    	header('Location: ?message=1'); 
    	exit;
    }
    else if($a < 0)
    {
    	header('Location: ?message=2'); 
    	exit;
    }
     
     
    $message = isset($_GET['message']) ? $_GET['message'] : null;
    switch ($message)
    {
    	case "0" : $alerte = '<p style="color:black">a est égal à 0</p>'; break;
    	case "1" : $alerte = '<p style="color:green">a est supérieur à 0</p>'; break;
    	case "2" : $alerte = '<p style="color:red">a est inférieur à 0</p>'; break;
     
    	default : $alerte = null;
    }
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    </head>
    <body>
    <p><a href="?a=0">a = 0</a>&nbsp; <a href="?a=12">a = 12</a>&nbsp; <a href="?a=-50">a = -50</a></p>
    <?= $alerte?>
    </body>
    </html>
    Attention cependant que le contexte qui défini la condition d'envoi des headers de redirection ne soit pas identique au rechargement de la page sinon c'est la boucle infinie (et le navigateur t'enverra un message comme quoi la page n'est pas bien redirigée).
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $b = 'toto'; 
     
    if ($b == "toto")
    {
    	header('Location: ?message=5'); 
    	exit;
    }
    //...
    Là c'est trivial, mais $b pourrait être le résultat d'une requête qui s'effectue à chaque rechargement de la page par exemple. Dans ce genre de cas pour éviter la boucle infinie tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $b = 'toto'; 
     
    if ($b == "toto")
    {
    	if(!(isset($_GET['message']) && $_GET['message'] == "5"))
    	{
    		header('Location: ?message=5'); 
    		exit;
    	}
    }
    //...

  11. #31
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    Voilà comment j'ai fait les "header", mais ça me met un erreur comme quoi l'info est déjà envoyée :-/


    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
     
    $time_vote = '7200';
    	  $time_db = time()+$time_vote;
    	  $sql = "SELECT time FROM votes WHERE ip='".$_SESSION['id']."' ";
    	  $sql = $db1->prepare($sql);
    	  $sql->execute();
    	  $nbRow = $sql->rowCount();
    	  if($nbRow > 0)
    	  {
    		 $data = $sql->fetch(PDO::FETCH_ASSOC);
    		 $time_wait = $data['time'];
    		 $time_now = time();
    		 $time_calc = $time_wait-$time_now;
    		 $time_calc2 = (int)($time_calc/60);
    		 header('"<fieldset class=\"erreur\"><p class=\"red\">Vous devez attendre ".$time_calc2." minutes avant de pouvoir revoter !</p></fieldset>\n"');
    	  }
     
     
     
    	  else{
     
    		 $sql = "REPLACE INTO votes (ip,time) VALUES (?, ?)";
             $sql = $db1->prepare($sql);
             $sql->execute(array($_SESSION['id'],$time_db));
    		$a = get_info($_SESSION['id'],'point');
    		$b = get_info($_SESSION['id'],'pts_vote');
    		$point1 = $vote + $a;
    		  $point2 = 1 + $b;
    		 $sql = "UPDATE accounts SET point=$point1 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			$sql = "UPDATE accounts SET pts_vote=$point2 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			 header('http-equiv="refresh" content="0; url='.$rpg.');
     
     
    	  }
    	 ?>
    	<br />
    </div>
    					<div class="borderCenterBottom"></div><br />
     
    				</div>
    				</div>
    				<div class="floatClear"></div>
    				<div class="bottomCenter"></div>
     
    		</div>
     
    		</div>
    <?php
    header('location: inc/menu_right.php');
    ?>

  12. #32
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    A quoi ça sert que je donne un exemple complet ? L' as-tu tester dans une page séparée pour t'exercer et comprendre le fonctionnement pour renvoyer des messages ?

  13. #33
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    il me sers grandement je te promet, mais ça me grise le code à chaque fois, et me met des erreurs, je m'y planche mais IRL mon métier n'étant pas ça, le temps peut me manquer pour m'y concentrer à fond comme je voudrais.(je ne cherche pas d'excuse, je t'explique).

  14. #34
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Le premier code d'exemple que j'ai donné est complet et peut être testé dans une page autonome distincte. Tu vois bien que tous les header de redirection commencent par LocationEn fait puisque je ne mets pas de nom de fichier et qu'il commencent tous pas "?", par défaut cela indique la page en cours et ce qui suis le point d'interrogation indique une variable $_GET et sa valeur que tu peux donc récupérer pour en faire ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header('Location: ?message=2'); 
    exit;
    -> renverra sur la page en cours avec une variable $_GET['message'] = 2.
    Dans mon code je fais un switch sur $_GET['message'] pour renvoyer finalement un message dans le html mais tu pourrais l'utiliser autrement. Comme déjà dit tu en fais ce que tu veux.

  15. #35
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    ah oui, effectivement :p

    voilà comment j'ai procédé et ça fonctionne^^
    après, il y a le haut, dont je ne suis pas sur, mais pour le coup, je suis content que ça fonctionne

    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
    <?php
    header ('Content-type: text/html; charset=UTF-8');
    ?>
    		<div class="colRight floatLeft">
     
    			<div class="titlesCenter floatLeft"><span class="title uppercase">VOTEZ</span></div>
    			<div class="floatClear"></div>
    			<div class="bgCenter"><span class="effect effectCenter"></span>
     
    				<div class="blockContent">
     
    					<div class="borderCenterTop"></div>
    					<div class="borderCenterMiddle">
    						<div class="pageTitleBg pageTitleBg"><h1>Votez pour nous.!</h1></div>
    <?php
     
    	  $time_vote = '7200';
    	  $time_db = time()+$time_vote;
    	  $sql = "SELECT time FROM votes WHERE ip='".$_SESSION['id']."' ";
    	  $sql = $db1->prepare($sql);
    	  $sql->execute();
    	  $nbRow = $sql->rowCount();
    	  if($nbRow > 0)
    	  {
    		 $data = $sql->fetch(PDO::FETCH_ASSOC);
    		 $time_wait = $data['time'];
    		 $time_now = time();
    		 $time_calc = $time_wait-$time_now;
    		 $time_calc2 = (int)($time_calc/60);
    		 header('"<fieldset class=\"erreur\"><p class=\"red\">Vous devez attendre ".$time_calc2." minutes avant de pouvoir revoter !</p></fieldset>\n"');
    	  }
     
     
     
    	  else{
     
    		 $sql = "REPLACE INTO votes (ip,time) VALUES (?, ?)";
             $sql = $db1->prepare($sql);
             $sql->execute(array($_SESSION['id'],$time_db));
    		$a = get_info($_SESSION['id'],'point');
    		$b = get_info($_SESSION['id'],'pts_vote');
    		$point1 = $vote + $a;
    		  $point2 = 1 + $b;
    		 $sql = "UPDATE accounts SET point=$point1 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			$sql = "UPDATE accounts SET pts_vote=$point2 WHERE guid='".$_SESSION['id']."'";
    			$sql = $db2->prepare($sql);
    			$sql->execute();
     
    			header('Location:'.$rpg.'');
     
     
    	  }
    	 ?>

  16. #36
    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
    Première ligne, le paramètre a à nouveau disparu de la requête. Je n'ai pas été plus loin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #37
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    le code est plus long cette fois, si tu parles de la première ligne par rapport à ce que je vous avez donné avant, c'est normal^^
    sinon je ne vois pas de où tu parles :-/

  18. #38
    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
    Pardon je n'ai pas répondu au bon message
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #39
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 135
    Points : 45
    Points
    45
    Par défaut
    ce n'est pas grave

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Système] Système de vote sécurisé
    Par mathieu3392 dans le forum Langage
    Réponses: 4
    Dernier message: 22/11/2007, 15h18
  2. Système de votes
    Par Auden dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2007, 14h27
  3. [AJAX] système de vote ajax
    Par sisco97 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2007, 04h52
  4. [Système] Questions système de votes
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2006, 16h47
  5. [MySQL] Système de votes (pour les membres) : cmt le créer ?
    Par yazerty dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 20/02/2006, 13h58

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