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 :

Composer des URL dans une boucle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 269
    Par défaut Composer des URL dans une boucle
    Bonjour
    je poste ici plutôt que dans les cms car en fait je pense que faire la boucle n'est pas spécifique au framework joomla, sauf que j'y ai passé des heures sans succès. je ne sais plus quoi faire
    J'ai le bon rendu HTML.affichage des 2 éléments avec les 2 noms

    Kamea Meah, réalisation
    Météore

    ce qui ne va pas :

    a/ J'ai exactement la même URL dans les deux cas Le 1er est bon, le 2ème est faux avec le mauvais identifiant. Il doit me manquer une boucle que je ne peux pas faire depuis plus d'une semaine :-(

    ./index.php?option=com_content&view=article&id=129&catid=16&Itemid=159&lang=en ./index.php?option=com_content&view=article&id= 129 &catid=16&Itemid=159&lang=en

    b) l'url que je vois dans la page n'est pas SEF contrairement aux autres urls alors que j'ai mis le bon paramètre de routage joomla 4.3.1 J'aurais dû éditeur-media/editions1 éditeur-media/editions2

    Mon 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
    <?php if (!empty($this->item->jcfields[111]->value)): ; ?> 
            <br /><b><span><i class="fa fa-link fa-1x" aria-hidden="true"></i></span> Pros des films :</b>
            <?php       
                $field_value = json_decode($this->item->jcfields[111]->rawvalue);
                $article_id = $field_value->row0->field110;  
                $app = Factory::getApplication();
                $factory = $app->bootComponent('com_content')->getMVCFactory();
                $table = $factory->createTable('Article', 'Table');    
                $table->load($article_id);
                $item_catid = $table->catid;
                $lang="fr";
                $item_id="159"; 
     
                echo HTMLHelper::link(
                            Route::_('/index.php?option=com_content&view=article&id=' . $article_id .'&catid='.$item_catid .'&Itemid='.$item_id .'&lang=' .$lang ),
                            $this->item->jcfields[111]->value
                        );
            ?>
    <!--<a href="/index.php?option=com_content&view=article&id=<?php echo $article_id;?>&catid=<?php echo $item_catid;?>&Itemid=<?php echo $item_id;?>&lang=fr"><?php echo $this->item->jcfields[113]->value; ?></a>--> 
        <?php endif; ?>
    Déboguer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<pre>', print_r($field_value), '</pre>';
    =>

    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
    stdClass Object
    (
        [row0] => stdClass Object
            (
                [field110] => 119
                [field112] => Array
                    (
                        [0] => film_rea
                    )
     
            )
     
        [row1] => stdClass Object
            (
                [field110] => 122
            )
     
    )
    1

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    a/ J'ai exactement la même URL dans les deux cas Le 1er est bon, le 2ème est faux avec le mauvais identifiant. Il doit me manquer une boucle que je ne peux pas faire depuis plus d'une semaine :-(

    ./index.php?option=com_content&view=article&id=129&catid=16&Itemid=159&lang=en
    ./index.php?option=com_content&view=article&id= 129 &catid=16&Itemid=159&lang=en
    1. Il y a une espace qui traine sur le 2nd lien après "&id="
    2. Quel ID ? Tu as id, catid et Itemid !
    3. Dans ton if() il y a un $item_id="159"; en dur, c'est normal ?
    4. Il y a un lien en commentaire HTML, pourquoi nous le communiquer ? Je l'ignore
    5. Quel est le résultat attendu ?


    b) l'url que je vois dans la page n'est pas SEF
    Je ne sais pas ce que c'est

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 269
    Par défaut
    Bonjour
    1. Il y a une espace qui traine sur le 2nd lien après "&id="
    pas grave, problème de copier/coller

    2. Quel ID ? Tu as id, catid et Itemid !
    pas sûr d'avoir compris ID=id;
    id=<?php echo $article_id...
    catid=<?php echo $item_catid;..
    Les valeurs sont bien récupérées

    3. Dans ton if() il y a un $item_id="159"; en dur, c'est normal ?
    oui

    4. Il y a un lien en commentaire HTML, pourquoi nous le communiquer ? Je l'ignore
    oubli

    5. Quel est le résultat attendu ?
    Je pense qu'il doit y avoir une boucle pour récupér la 2ème valeur mentionnée:
    [field110] => 122
    ce qui ferait:
    ./index.php?option=com_content&view=article&id=129&catid=16&Itemid=159&lang=en
    ./index.php?option=com_content&view=article&id=122&catid=16&Itemid=159&lang=en

    b/ SEF
    J'ai indiqué le résultat attendu, mais on peut oublier c'est probablement plutôt un problème du routeur joomla

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    C'est compliqué d'avoir des infos claires

    Si je comprends bien...

    data :

    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
    stdClass Object
    (
        [row0] => stdClass Object
            (
                [field110] => 119
                [field112] => Array
                    (
                        [0] => film_rea
                    )
     
            )
     
        [row1] => stdClass Object
            (
                [field110] => 122
            )
     
    )
    Résultat actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./index.php?option=com_content&view=article&id=119&catid=16&Itemid=159&lang=en
    (et non "id=129")

    Résulat attendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./index.php?option=com_content&view=article&id=119&catid=16&Itemid=159&lang=en
    ./index.php?option=com_content&view=article&id=112&catid=16&Itemid=159&lang=en
    Tu confirmes ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 269
    Par défaut
    Oui désolé j'ai pas mal fait de tests et avec le temps...
    Oui j'attends bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./index.php?option=com_content&view=article&id=119&catid=16&Itemid=159&lang=en
    ./index.php?option=com_content&view=article&id=122&catid=16&Itemid=159&lang=en

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut Ajout echo à HTMLHelper::link()
    Attention, il y avait un ";" qui trainait juste après le if()

    Oui j'attends bien...
    Dans ce cas :

    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
    <?php if (!empty($this->item->jcfields[111]->value)): ?> 
     
    	<br /><b><span><i class="fa fa-link fa-1x" aria-hidden="true"></i></span> Pros des films :</b>
     
            <?php
    		$field_value = json_decode($this->item->jcfields[111]->rawvalue);
    		$app = Factory::getApplication();
    		$factory = $app->bootComponent('com_content')->getMVCFactory();
    		$lang="fr";
    		$item_id="159"; 
    	?>
     
    	<?php foreach ($field_value as $value): /* ça se joue ici */ ?>
     
    		<?php
    			// ça se joue ici
    			$article_id = $value->field110; // vaudra 119 puis 112
     
    			$table = $factory->createTable('Article', 'Table'); // Bizarre dans une boucle ça non ?
    			$table->load($article_id);
    			$item_catid = $table->catid;
     
    			echo HTMLHelper::link(
    				Route::_("/index.php?option=com_content&view=article&id={$article_id}&catid={$item_catid}&Itemid={$item_id}&lang={$lang}"),
    				$this->item->jcfields[111]->value
    			);
     		?>
     
    	<?php endforeach ?>
     
    <?php endif ?>
    Le principe de parcours du JSON y est, mais attention, je ne comprends pas ton code et ce que tu fais avec $table, il faudra sans doute adapter

Discussions similaires

  1. Enregistrer des fichiers dans une boucle
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2008, 13h17
  2. [MySQL] récupérer les dimensions des images dans une boucle while
    Par Navyel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/08/2007, 11h09
  3. [FPDF] tracer des lignes dans une boucle
    Par marielaure2805 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/06/2007, 14h17
  4. Afectation des variables dans une boucle
    Par Yoni Lebene dans le forum Delphi
    Réponses: 3
    Dernier message: 05/01/2007, 18h52

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