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

AJAX Discussion :

Update BdD avec ajax


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2015
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Update BdD avec ajax
    Bien le bonjour à vous,

    J'ai trouvé un code pour faire un système de vote, mais le soucis c'est que ça n'actualise pas ma bdd ...

    je vous met les codes :

    Code php : 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
    		<?php 
     
    $retour=mysqli_query($link, 'SELECT id, code, description, vote FROM posts ORDER BY id DESC LIMIT 0, 6');
     
    			while($row = mysqli_fetch_assoc($retour)): ?>
     
    			<div class="blocks"><!-- post data -->
     
    	<iframe width="430" height="285" src="https://www.youtube.com/embed/<?php echo stripslashes($row['code']); ?>" frameborder="0" allowfullscreen></iframe> 
     
    				<span>
    				<form action="" method="post">
    				<div data-postid="<?php echo stripslashes($row['id']); ?>" data-score="<?php echo stripslashes($row['vote']); ?>">
    			<div class="vote-span"><!-- voting-->
    				<div class="vote" data-action="up" name="up" title="Vote +">
    					<i type="submit" class="icon-chevron-up"></i>
    				</div><!--vote up-->
    				<div class="vote-score"><?php echo $row['vote'] ?></div>
    				<div class="vote" data-action="down" name="down" title="Vote -">
    					<i type="submit" class="icon-chevron-down"></i>
    				</div><!--vote down-->
    			</div>
     
    <?php echo $row['description']; ?>
    			</div><!--item--></span>
    			</div></form>
     
     
    		<?php endwhile ?>

    ça c'est le js :

    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
    /**
    * jQuery Voting System with PHP and MySQL
    * @author Resalat Haque
    * @link http://www.w3bees.com/2013/09/voting-system-with-jquery-php-and-mysql.html
    */
     
    $(document).ready(function(){
    	// ajax setup
    	$.ajaxSetup({
    		url: 'ajaxvote.php',
    		type: 'POST',
    		cache: 'false'
    	});
     
    	// any voting button (up/down) clicked event
    	$('.vote').click(function(){
    		var self = $(this); // cache $this
    		var action = self.data('action'); // grab action data up/down 
    		var parent = self.parent().parent(); // grab grand parent .item
    		var postid = parent.data('postid'); // grab post id from data-postid
    		var score = parent.data('score'); // grab score form data-score
     
    		// only works where is no disabled class
    		if (!parent.hasClass('.disabled')) {
    			// vote up action
    			if (action == 'up') {
    				// increase vote score and color to orange
    				parent.find('.vote-score').html(++score).css({'color':'orange'});
    				// change vote up button color to orange
    				self.css({'color':'orange'});
    				// send ajax request with post id & action
    				$.ajax({data: {'postid' : postid, 'action' : 'up'}});
    			}
    			// voting down action
    			else if (action == 'down'){
    				// decrease vote score and color to red
    				parent.find('.vote-score').html(--score).css({'color':'red'});
    				// change vote up button color to red
    				self.css({'color':'red'});
    				// send ajax request
    				$.ajax({data: {'postid' : postid, 'action' : 'down'}});
    			};
     
    			// add disabled class with .item
    			parent.addClass('.disabled');
    		};
    	});
    });
    et ça c'est le ajaxvote.php :

    Code php : 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
     
    require_once('config.php');
     
    # start new session
    session_start();
     
    if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
    	if (isset($_POST['postid']) AND isset($_POST['action'])) {
    		$postId = (int) mysqli_real_escape_string($_POST['postid']);
    		# check if already voted, if found voted then return
    		if (isset($_SESSION['vote'][$postId])) return;
    		# connect mysql db
    		dbConnect();
     
    		# query into db table to know current voting score 
    		$query = mysqli_query($link, "SELECT vote
    			from posts
    			WHERE id = '{$postId}' 
    			LIMIT 1" );
     
    		# increase or dicrease voting score
    		if ($data = mysql_fetch_array($query)) {
    			if ($_POST['action'] === 'up'){
    				$vote = ++$data['vote'];
    			} else {
    				$vote = --$data['vote'];
    			}
    			# update new voting score
    			mysqli_query($link, "UPDATE posts
    				SET vote = '{$vote}'
    				WHERE id = '{$postId}' ");
     
    			# set session with post id as true
    			$_SESSION['vote'][$postId] = true;
    			# close db connection
    			dbConnect(false);
    		}
    	}
    }
    ?>

    Voila ... je comprend pas pourquoi l'update ne se fait pas ... Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de Gnuum
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Points : 1 715
    Points
    1 715
    Billets dans le blog
    1
    Par défaut
    - Est-ce que la requête HTTP AJAX est bien appelée?
    - Est-ce que la réponse à ta requête HTTP AJAX est une 200?
    - As-tu un message d'erreur dans tes logs de seveur web?

    Si tu n'as aucune erreur nulle part, tu peux essayer de débugguer à coup de echo/var_dump/die pour voir comment se comporte le code PHP.
    Le code que tu nous donnes est insuffisant pour déterminer ton problème (enfin très certainement) car il n'est que partiel. On ne comprend pas la différence entre ce que tu as fait toi, le code que tu as récupéré, ce que tu as adapté dans le code récupéré, le nom des fichiers que tu nous présente, l'existant dans ta base de données, sur quoi tu as branché le code récupéré...

    Après, le code du système de vote me parait bien naïf:
    - Tu peux voter autant de fois que tu veux si tu supprimes ta session à chaque fois.
    - Si 2 personnes votes simultanément, il est possible qu'un vote disparaisse (pas d'atomicité entre le select vote et le update vote). Je ferais un bon vieux update incrémental à la place.
    - Les erreurs du genre pas de post correspondant = à la trappe.
    {gnu: ["um", "cki"]}

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2015
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Code php : 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
    <?php
    include('config.php');
    # start new session
    session_start();
     
    if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
      if (isset($_POST['postid']) AND isset($_POST['action'])) {
     
        # check if already voted, if found voted then return
            dbConnect();
        if (isset($_SESSION['vote'][$_POST['postid']])) return;
        # connect mysql db
     
        # query into db table to know current voting score 
        $query = mysqli_query($link, "SELECT vote from posts WHERE id = ".$_POST['postid']." LIMIT 1" );
     
        # increase or dicrease voting score
        if ($data = mysqli_fetch_assoc($query)) {
          if ($_POST['action'] == 'up'){
            $vote = ++$data['vote'];
          } else {
            $vote = --$data['vote'];
          }
          # update new voting score
    mysqli_query($link, "UPDATE posts SET vote = ".$vote." WHERE id = ".$_POST['postid']." ");
     
          # set session with post id as true
          $_SESSION['vote'][$_POST['postid']] = true;
          # close db connection
     
        }
      }
    }
    dbConnect(false);
    ?>

    Voici le code fonctionnel de ajaxvote.php

  4. #4
    Membre expérimenté
    Avatar de Gnuum
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Points : 1 715
    Points
    1 715
    Billets dans le blog
    1
    Par défaut
    Fais attention, le code que tu as modifié est devenu sensible aux injections SQL.
    https://fr.wikipedia.org/wiki/Injection_SQL
    http://php.net/manual/fr/security.da...-injection.php
    {gnu: ["um", "cki"]}

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

Discussions similaires

  1. [Prototype] Encodage UTF8 AJAX Updater et accent
    Par fongus dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 22/10/2008, 15h55
  2. ASP 2.0 Ajax Update Panel & Trigger
    Par chnew dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/06/2007, 14h16
  3. [AJAX] Ajax Periodical Updater
    Par DamienG dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/06/2007, 15h00
  4. [Prototype] [DOM] ajax.updater() ou ajax.request()
    Par wincroc dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 13/06/2007, 11h26
  5. [AJAX] Ajax update cote client
    Par Marco77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/01/2007, 15h26

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