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 :

Fancybox : identifier la photo cliquée


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Fancybox : identifier la photo cliquée
    J'ai une base de données contenant plusieurs tables dont l'une contient notamment les adresses des photos, avec leurs noms, leurs catégories et deux colonnes à remplir, un compteur de vues et un compteur de téléchargement.

    Extraction, une à une, de toutes les photos correspondant à une sélection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    				for ($i=0 ; $i < $result->num_rows ; $i++) {
    					$row = $result->fetch_assoc() ;
    					$id = $row['id'];
    					$path_img = $row['path_img'];
    					$path_img400 = $row['path_img400'];
    					$path_img1020 = $row['path_img1020'];
    					$description = $row['description'];
    					$id_members = $row['id_members'];
    Je recherche le prénom, le nom et le pays d'origine de l'auteur de la photo dans la table correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result1 = $conn->query('SELECT firstname, lastname, email, country FROM members WHERE id = "' . $id_members . '"');
    					if ($result1) {
    						$row1 = $result1->fetch_assoc();
    						$firstname = $row1['firstname'];
    						$lastname = $row1['lastname'];
    						$country = $row1['country'];
    					}
    Conception, photo par photo, de la page de visualisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<div class="grid2">';
    					echo '<a href="' . $path_img . '" data-fancybox data-caption="' . $description,'<br>',$firstname,' ',$lastname,' - ',$country . '" style="margin: 5px;"><img src="' . $path_img400 . '" alt="" /></a>';
    					echo '</div>';
    Fin de la boucle :
    }
    $result->free();
    ?>

    Le script Fancybox de fin de page :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    		<script type="text/javascript">
                            $("[data-fancybox]").fancybox({
                                    // Les options
                                    preventCaptionOverlap: true,
                                    buttons: [
                                            "zoom",
                                            "fullScreen",
                                            "download",
                                            "thumbs",
                                            "close"
                                    ],
                                    animationEffect: "zoom-in-out",
                                    transitionEffect: "tube",
                            });
                    </script>

    La page de présentation du résultat est bien responsive, le click sur une photo provoque bien sa présentation (avec la description de la photo saisie par l'auteur, son prénom, son nom et son pays) et les possibilités de téléchargement, d'agrandissement et de fermeture qui fonctionnent.

    Je ne parviens pas à retrouver le nom de la photo cliquée pour implémenter l'un des deux, ou les deux compteurs (si besoin) de la table correspondante.

    Pouvez-vous m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    est ce que c'est bien le script fancybox que vous avez trouvé sur fancyapps.com ?
    regardez là, il y a un exemple de code pour gérer l'évènement "click" :
    http://fancyapps.com/fancybox/3/docs/#api

  3. #3
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Il s'agit bien du script Fancybox
    Oui, c'est bien le script fancybox trouvé sur fancyapps.com.
    Merci pour votre réponse.
    Cependant, je ne vois pas comment trouver le nom de la photo affichée.
    Avez-vous une idée ?
    Bien à vous, gefriche

  4. #4
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut ajout script XMLHttpRequest
    J'ai modifié la ligne de présentation d'une photo avec l'ajout onclick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<div class="grid2">';
    					echo '<a id="' . $id . '" onkeyup="counter("' . $id . '")" class="d-block mb-4" href="' . $path_img . '" data-fancybox data-caption="' . $description,'<br>',$firstname,' ',$lastname,' - ',$country . '" style="margin: 5px;"><img class="img-fluid" src="' . $path_img400 . '" alt="" /></a>';
    					echo '</div>';
    J'ai inséré le script counter.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
    function counter(itemId) {
    				if (window.XMLHttpRequest){
    				// code for IE7+, Firefox, Chrome, Opera, Safari
                	xmlhttp=new XMLHttpRequest();
           			}
           			else {
    		   		// code for IE6, IE5
                	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
           			}
           			xmlhttp.onreadystatechange=function(){
           				if (xmlhttp.readyState==4 && xmlhttp.status==200){
                	}
           		}
           		xmlhttp.open("GET","localhost/phplogin/counter.php?itemId="+itemId,true);
           		xmlhttp.send();
    			}
    Pour envoyer au serveur l'article à incrémenter par counter.php (dans l'exemple ci-dessous, le compteur de viewed) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "UPDATE img set viewed = (viewed + 1) WHERE id = '$itemId'";
            $result1 = mysqli_query($conn, $sql);
    Mais rien ne fonctionne !!

Discussions similaires

  1. Récupérer l'identifiant de bouton cliqué
    Par abdoinfo dans le forum JSF
    Réponses: 3
    Dernier message: 10/08/2011, 15h06
  2. [AC-2000] Groupe d'option identifier la ligne cliquée
    Par elebora dans le forum IHM
    Réponses: 4
    Dernier message: 04/04/2009, 15h09
  3. Réponses: 3
    Dernier message: 27/11/2008, 17h55
  4. Identifier le lien cliqué
    Par threshold dans le forum JSF
    Réponses: 2
    Dernier message: 08/04/2008, 14h14
  5. [Struts] Identifier le submit cliqué dans l'ActionForm
    Par vallica dans le forum Struts 1
    Réponses: 24
    Dernier message: 02/05/2006, 11h07

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