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 :

Afficher plusieurs images avec les memes balises XML avec plugin fancybox


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Points : 38
    Points
    38
    Par défaut Afficher plusieurs images avec les memes balises XML avec plugin fancybox
    Bonjour,

    voila en entrée j'ai un fichier xml qui parmi ces valeurs renvoie plusieurs images avec le même nom de balise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <photo_list>
    <photo>
    1-182.JPG
    </photo>
    <photo>
    2-182.JPG
    </photo>
    <photo>
    3-182.JPG
    </photo>
    </photo_list>
    je souhaite donc, via le plugin fancybox, afficher la premiere photo qui est affichée par une variable PHP, et qu'en cliquant dessus cela lance le panorama (comportement normal de fancybox) avec cette première photo suivi des 2 autres.
    Je me doute qu'il faudrait faire une boucle du genre "pour chaque balise photo" trouvée générer un lien comme le suivant mais ne voit pas trop comment m'y prendre... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
    		<?php 	echo ('<a class="fancybox" href='.$photo.' data-fancybox-group="gallery" title="Lorem ipsum dolor sit amet"><img src='.$photo.' alt="" /></a>');   ?>
    	</p>
    voila avec ce code ca m'affiche seulement la première photo....au cas ou cela serait necessaire les sources de fancybox sont dispo ici :

    https://github.com/fancyapps/fancyBox/zipball/v2.1.2

    si quelqu'un a une idée...merci par avance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    Salut,

    essayes ce bout de code:
    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
     
    <?php
    $xml = '<photo_list>
    <photo>
    1-182.JPG
    </photo>
    <photo>
    2-182.JPG
    </photo>
    <photo>
    3-182.JPG
    </photo>
    </photo_list>';
     
    $photo_list = simplexml_load_string($xml);
    $i = 0;
    foreach ($photo_list as $photo) {
    	$photo = strval($photo);
    	$photo = trim($photo);
    	echo '<a class="fancybox" href="'.$photo.'" data-fancybox-group="gallery" title="Lorem ipsum dolor sit amet">';
    	if ($i == 0)
    		echo '<img src="'.$photo.'" alt="" />';
    	echo '</a>';
    	$i ++;
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 181
    Points : 38
    Points
    38
    Par défaut
    Bonjour

    j'ai donc essayé de modifier un peu le code, le but est d'afficher plusieurs photos qui ont des noms de balises XML identiques dans le diaporama Fancybox .

    extrait du fichier XML :
    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
    <model>MODENA 450</model>
    <photo_list>
    <photo>
    1-185.JPG
    </photo>
    <photo>
    2-185.JPG
    </photo>
    <photo>
    3-185.JPG
    </photo>
    </photo_list>
     
    <model>EDALON 556</model>
    <photo_list>
    <photo>
    1-185.JPG
    </photo>
    <photo>
    2-185.JPG
    </photo>
    <photo>
    3-185.JPG
    </photo>
    </photo_list>
    Voici la première page PHP, récupérant le contenu du XML et les affichant. Le fait de cliquer sur le lien envoie vers la page de détail, avec les variables passées en URL :

    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
    <?php
     
    $NbrCol = 5;
    $xml = utf8_encode(file_get_contents('176.xml'));
     
    $rows = array();
     
    $sxml = simplexml_load_string($xml);
    foreach($sxml as $node) {
        $model   = htmlspecialchars((string)$node->model, ENT_QUOTES);
        $photo  = (string)$node->photo_list->photo;
     
    $rows[] = <<<HTML
        <a href="http://MONSITE.fr/fancy/demo/test8.php?model={$model}&photo={$photo}">lien vers produit</a></br>
    	{$model}
        
    HTML;
    }
     
    // -------------------------------------------------------
    // nombre de cellules a remplir
    $NbreData = count($rows);
    // -------------------------------------------------------
    // affichage
    $NbrLigne = 0;
    if ($NbreData != 0) 
    {
    	$k = 0; // indice du tableau
     
    	while ($k < $NbreData) 
    	{
    		if (($k+1)%$NbrCol == 1) {
    			$NbrLigne++;
    			$fintr = 0;
    		}
    			echo $rows[$k];
     
    		if (($k+1)%$NbrCol == 0) {
    			$fintr = 1;
    		}
    		$k++;
    	}
    	if ($fintr!=1) {
     } 
     
    } else {
     
     
    }
    ?>
    et la page test8.php, qui est censée récupèrer les variables et afficher le modèle ainsi que les images :


    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
    <!-- Add jQuery library -->
    	<script type="text/javascript" src="../lib/jquery-1.8.2.min.js"></script>
     
    <?php
     
    $model = $_GET['model'];
    $photo = $_GET['photo'];
     
    echo $model;
     
     
    $i = 0;
    foreach ($photo_list as $photo) {
    	$photo = strval($photo);
    	$photo = trim($photo);
    	echo '<a class="fancybox" href="'.$photo.'" data-fancybox-group="gallery">';
    	if ($i == 0)
    		echo '<img src="'.$photo.'" alt="" />';
    	echo '</a>';
    	$i ++;
    }
     
    ?>
    Et je me prends un "Invalid argument supplied for foreach() in " à la ligne 55, cad à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($photo_list as $photo) {

    la variable photo_list n'est pas reconnue en fait il faudrait que je fasse passer en URL la valeurs des 2 diférentes photos pour ensuite les afficher avec la boucle...Si quelqu'un à une idée, merci par avance.

Discussions similaires

  1. Afficher des images triées dans un fichier XML avec XSL
    Par lino100 dans le forum XML/XSL et SOAP
    Réponses: 15
    Dernier message: 28/01/2016, 16h12
  2. comment gérer des balises XML avec le meme nom
    Par banjaman dans le forum VBA Access
    Réponses: 0
    Dernier message: 27/05/2015, 10h18
  3. Requete sur plusieurs table avec les memes champs
    Par broule dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/02/2010, 19h57
  4. afficher plusieurs images dans la même figure avec \hfill
    Par romanticide dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 24/04/2009, 09h14
  5. Réponses: 1
    Dernier message: 09/10/2007, 06h44

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