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

Langage PHP Discussion :

Système de votes Facebook-like, method POST et "page précédente"


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Système de votes Facebook-like, method POST et "page précédente"
    Bonsoir,

    Pour mon site de partage de photos, j'ai mis en place un système de votes like/unlike semblable en tout point à celui de Facebook, c'est à dire utilisation d'un button de type submit dans un formulaire.

    En gros, le membre du site arrive sur la page d'une photo, je regarde l'état actuel de son vote, j'affiche en conséquence le bouton like/unlike et lui permet de revoter, j'envoie son vote et j'update la bdd, puis je fais un refresh pour mettre à jour le vote sur la page. Tout est donc sur la même page, affichage et traitement.

    Il y a donc un problème quand on fait précédent dans le navigateur.

    J'aimerais quand clickant sur précédent il retourne sur la galerie qu'il visionnait juste avant d'arriver sur la page de la photo (comme sur Facebook, Youtube et compagnie), mais j'ai soit un chargement infini soit un retour sur la même page mais avant le vote (selon les méthodes utilisés).

    Bref vous voyez une solution ? comment fait Facebook ?

    Même si j'utilisais deux fichiers pour le traitement et l'affichage (et ça me casserait bien les pieds...), ça ne marcherait pas, en faisant précédent ça renverrait vers la même page mais avant le vote.

    Le code au cas où.

    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
    // Début du formulaire j'aime/j'aime pas
    	echo '<form method="POST" action="?page=photo&id='.$id.'">';
     
    	// SELECT/INSERT/UPDATE : j'aime ou j'aime pas la photo
    	// Si connecté
    	if (isset($_SESSION['login'])) {
     
    		// SELECT : correspondance login = iduser
    		$login = $_SESSION['login'];
    		$sql4 = "SELECT iduser FROM user WHERE username='".$login."'";
    		$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error());
    		$data4 = mysql_fetch_assoc($req4);
     
    		// SELECT : 0/1 <=> j'aime pas/j'aime
    		$sql5 = "SELECT i_like FROM opinion WHERE id_Image='".$id."' and id_User='".$data4['iduser']."'";
    		$req5 = mysql_query($sql5) or die('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error());
    		$data5 = mysql_fetch_assoc($req5);
     
    		// Si null
    		if ($data5['i_like'] == null) {
    			echo '<button class="like" type="submit" title="Click here to like this" name="like">';
    			if (isset($_POST['like'])) {
    				$sql6 = "INSERT INTO opinion VALUES ('".$data4['iduser']."', '".$id."', 1)";
    				$req6 = mysql_query($sql6) or die('Erreur SQL !<br>'.$sql6.'<br>'.mysql_error());
    				header("Refresh:0");
    			}
    		}
    		// Si 0
    		if ($data5['i_like'] == 0 and $data5['i_like'] != null) {
    			echo '<button class="like" type="submit" title="Click here to like this" name="like">';
    			if (isset($_POST['like'])) {
    				$sql7 = "UPDATE opinion SET i_like=1 WHERE id_User='".$data4['iduser']."' AND id_Image='".$id."'";
    				$req7 = mysql_query($sql7) or die('Erreur SQL !<br>'.$sql7.'<br>'.mysql_error());
    				header("Refresh:0");
    			}
    		}
    		//Si 1
    		if ($data5['i_like'] == 1) {
    			echo '<button class="unlike" type="submit" title="Click here to unlike this" name="like">';
    			if (isset($_POST['like'])) {
    				$sql7 = "UPDATE opinion SET i_like=0 WHERE id_User='".$data4['iduser']."' AND id_Image='".$id."'";
    				$req7 = mysql_query($sql7) or die('Erreur SQL !<br>'.$sql7.'<br>'.mysql_error());
    				header("Refresh:0");
    			}
    		}
    	}
    	// Si non connecté
    	else echo '<button disabled="disabled" class="like" title="Login ou register to like this">';
     
    	echo '</button>';
    	echo '</form>';
    	// Fin formulaire j'aime/j'aime pas

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai l'impression que sur Facebook le changement like/unlike se fait sans rechargement de la page.

    Voici le code source de Fb, peut-être une piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <button class="like_link stat_elem as_link" title="Click here to like this item" type="submit" name="like" onclick="fc_expand(this, false); return true;">
           <span class="default_message">Like</span>
           <span class="saving_message">Unlike</span>
    </button>
    Honnêtement si tout réside sur le javascript, j'y connais rien, et j'ai rien trouvé sur une fonction fc_expand.

  3. #3
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    regarde les pages suivantes pour plus d'explications sur les techniques à utiliser avec JavaScript :
    http://javascript.developpez.com/faq...#ajax.acronyme
    http://siddh.developpez.com/articles/ajax/
    GNAP !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci je commençais à désespérer.

    AJAX je connaissais que de nom. Je vais lire tout ça.

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/10/2013, 17h24
  2. [2.x] Bonne pratique : système de notification (facebook like)
    Par selmaksga dans le forum Symfony
    Réponses: 2
    Dernier message: 14/04/2013, 17h18
  3. Réponses: 1
    Dernier message: 25/02/2008, 23h05
  4. La methode POST dans une page JSP
    Par fadex dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 10/05/2006, 21h53
  5. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03

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